Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
ee32b47
Handle single-atom cell
nedttaylor Jan 22, 2024
680dee1
Remove test printing
nedttaylor Jan 22, 2024
4f69199
Fix unallocated shift array
nedttaylor Jan 22, 2024
fb7d7aa
Fix natom check
nedtaylor Jan 20, 2025
7f6bbd8
Add termination fail tag
nedtaylor Jan 21, 2025
532fda1
Fix typo
nedtaylor Jan 24, 2025
8922da9
Fix miller plane printing
nedtaylor Jan 24, 2025
2e94a53
Fix out of bounds
nedtaylor Jan 25, 2025
f794a0a
Reduce array temporary warnings
nedtaylor Jan 25, 2025
5d066d9
Improve error printing
nedtaylor Jan 25, 2025
5de486f
Fix separation size
nedtaylor Jan 25, 2025
6cc09b4
Increase separation search height
nedtaylor Jan 25, 2025
44bd18b
Update error printing
nedtaylor Apr 13, 2025
f631030
Fix symmetry
nedtaylor Apr 13, 2025
98da313
Add slab thickness input parameter
nedtaylor Apr 14, 2025
3a5e4f2
Remove commented code
nedtaylor Apr 15, 2025
4d6507f
Handle terminations
nedtaylor Apr 15, 2025
f0d6f12
Improve formatting
nedtaylor Apr 15, 2025
8b8310d
Improve help
nedtaylor Apr 15, 2025
3be7378
Update ignore list
nedtaylor Apr 15, 2025
cab5f1f
Update filepaths
nedtaylor Apr 15, 2025
7512fb3
Add new build methods
nedtaylor Apr 15, 2025
3f22c92
Remove files
nedtaylor Apr 16, 2025
032ffcd
Update types
nedtaylor Apr 16, 2025
45e8f26
Move file
nedtaylor Apr 16, 2025
49ac704
Update makefile
nedtaylor Apr 16, 2025
1ad2999
Add termination generator type
nedtaylor Apr 16, 2025
ccd911b
Update interface generator type
nedtaylor Apr 16, 2025
1275164
Fix type conversion errors
nedtaylor Apr 16, 2025
5935b14
Add terminations module
nedtaylor Apr 16, 2025
2fdd06b
Fix logical statements
nedtaylor Apr 16, 2025
fe3f173
Remove files
nedtaylor Apr 16, 2025
e6d3254
Fix commenting
nedtaylor Apr 16, 2025
7ff5995
Update procedures
nedtaylor Apr 16, 2025
fccb8d9
Improve tolerance handling
nedtaylor Apr 16, 2025
7ae5c45
Uniform floating point precision
nedtaylor Apr 17, 2025
36ea173
Move abstract generator type
nedtaylor Apr 17, 2025
bf8d9cd
Optimise lattice matching
nedtaylor Apr 17, 2025
5d70812
Fix lattice
nedtaylor Apr 17, 2025
2d008dd
Move method integers to type
nedtaylor Apr 17, 2025
fec2d33
Split generator module
nedtaylor Apr 17, 2025
236f81b
Fix shift handling
nedtaylor Apr 17, 2025
738ad8e
Remove printing
nedtaylor Apr 17, 2025
85357e1
Reduce input module dependency
nedtaylor Apr 17, 2025
99761ee
Fix temporary arrays
nedtaylor Apr 18, 2025
fd32072
Improve inputs handling
nedtaylor Apr 18, 2025
0d5860c
Setup documentation
nedtaylor Apr 18, 2025
78540e1
Update requirements
nedtaylor Apr 18, 2025
0fb27a7
Add docs build files
nedtaylor Apr 18, 2025
326e400
Fix slab thickness
nedtaylor Apr 18, 2025
9f6ff52
Change license
nedtaylor Apr 18, 2025
e10dbb9
Move asset
nedtaylor Apr 18, 2025
347bf4b
Change filepaths
nedtaylor Apr 18, 2025
1566d41
Rename files
nedtaylor Apr 18, 2025
137754e
Handle private
nedtaylor Apr 18, 2025
35fbfce
Set up python library
nedtaylor Apr 18, 2025
0a97a80
Americanise
nedtaylor Apr 18, 2025
d2edc9f
Update tools
nedtaylor Apr 18, 2025
a41f792
Handle get structures in python
nedtaylor Apr 18, 2025
8cfdcb1
Improve generator element handling
nedtaylor Apr 18, 2025
5f62859
Disable lreduce
nedtaylor Apr 18, 2025
8551c17
Tidy variables and printing
nedtaylor Apr 19, 2025
fd734a8
Improve commenting
nedtaylor Apr 19, 2025
6520ba8
Update generator arguments
nedtaylor Apr 19, 2025
9ea6c8d
Remove makefile
nedtaylor Apr 20, 2025
98b26f2
Merge generator types
nedtaylor Apr 20, 2025
39caa39
Improve wrapper names
nedtaylor Apr 20, 2025
6cfad61
Improve lattice match handling
nedtaylor Apr 20, 2025
49adda2
Add interface location identifier procedure
nedtaylor Apr 20, 2025
f4530f0
Improve output
nedtaylor Apr 21, 2025
99b8958
Handle output units for interface location
nedtaylor Apr 21, 2025
f869a4e
Fix get_interface_location
nedtaylor Apr 22, 2025
c3b9ee6
Update filepath
nedtaylor Apr 22, 2025
20bd59f
Improve fortran executable handling
nedtaylor Apr 22, 2025
77c6125
Reduce use of global variables
nedtaylor Apr 22, 2025
500185b
Remove dev printing
nedtaylor Apr 22, 2025
0ffa02e
Reduce use of global variables
nedtaylor Apr 22, 2025
4af62ff
Reorder symmetry matrices
nedtaylor Apr 22, 2025
f9086c2
Reorder symmetry matrices
nedtaylor Apr 22, 2025
d381dc3
Fix symmetry matrix
nedtaylor Apr 22, 2025
6c53b75
Handle structure data
nedtaylor Apr 22, 2025
fbfa3b0
Reintroduce file printing to fortran app
nedtaylor Apr 23, 2025
0d44a0f
Reintroduce match, termination, and shift data printing
nedtaylor Apr 24, 2025
2139c94
Add python examples
nedtaylor Apr 24, 2025
b7092b2
Fix import issue
nedtaylor Apr 24, 2025
9a06632
Implement edits from main
nedtaylor Apr 24, 2025
e57cbe9
Add tag
nedtaylor Apr 24, 2025
f3d1dbe
Tidy up
nedtaylor Apr 24, 2025
62ff9a5
Check tests and examples
nedtaylor Apr 24, 2025
a6eb647
Fix termination filepath printing
nedtaylor Apr 24, 2025
a77de80
Fix rebase related variable issue
nedtaylor Apr 24, 2025
990430b
Improve documentation
nedtaylor Apr 24, 2025
c15fa49
Remove code coverage section
nedtaylor Apr 24, 2025
008d260
Add install documentation
nedtaylor Apr 24, 2025
5f6e391
Fix typo
nedtaylor Apr 24, 2025
bf365c2
Remove printing
nedtaylor Apr 25, 2025
77bba65
Fix lattice matching zero area
nedtaylor Apr 25, 2025
4a836a0
Fix lattice matching zero area
nedtaylor Apr 25, 2025
85986d9
Fix file printing
nedtaylor Apr 25, 2025
aded5d7
Improve lattice match handling
nedtaylor May 1, 2025
a27fc83
Update symmetry operation generation
nedtaylor May 1, 2025
8e97023
Remove comments
nedtaylor May 1, 2025
3118838
Improve inversion handling
nedtaylor May 1, 2025
9845800
Tidy up symmetry module
nedtaylor May 1, 2025
0914526
Fix license
nedtaylor May 1, 2025
69b2c83
Fix python project build
nedtaylor May 1, 2025
4f6fa40
Fix line truncation
nedtaylor May 1, 2025
edcbb4f
Update installation guides
nedtaylor May 1, 2025
38d9e8d
Make python install executable
nedtaylor May 3, 2025
2f0cfa8
Fix file overwriting
nedtaylor May 3, 2025
f9b612f
Handle stoichiometric breaking terminations
nedtaylor May 3, 2025
4a215be
Remove dev comments
nedtaylor May 4, 2025
31cf4f7
Improve documentation
nedtaylor May 4, 2025
8f92f23
Add details regarding optional parameters
nedtaylor May 4, 2025
b58fd6b
Link to RAFFLE
nedtaylor May 4, 2025
25c59ae
Improve referencing
nedtaylor May 5, 2025
ce31076
Fix git references
nedtaylor May 5, 2025
c168320
Fix git references
nedtaylor May 5, 2025
a9e69ee
Fix indentation issues and git reference
nedtaylor May 5, 2025
2c42fdf
Fix install guide
nedtaylor May 5, 2025
abd9a0f
Improve branch reference
nedtaylor May 5, 2025
b6ef1a5
Improve branch reference
nedtaylor May 5, 2025
3a83aae
Fix formatting
nedtaylor May 5, 2025
26b839e
Fix references to RAFFLE
nedtaylor May 5, 2025
f177ef0
Fix verbosity printing
nedtaylor May 11, 2025
b0d2e8d
Fix mirror and add new test
nedtaylor May 11, 2025
503e5a8
Fix slab thickness handling
nedtaylor May 11, 2025
b3e61cd
Improve printing
nedtaylor May 11, 2025
98c180b
Fix generator members
nedtaylor May 12, 2025
0490b67
Fix kernel crashing
nedtaylor May 12, 2025
265b69e
Reduce compilation warnings
nedtaylor May 12, 2025
3f96fce
Rename restart procedure
nedtaylor May 12, 2025
cc1479a
Improve structure list handling
nedtaylor May 12, 2025
04bcbba
Set up elastic tensor handling
nedtaylor May 12, 2025
9b564f6
Fix shifting
nedtaylor May 26, 2025
1910e49
Fix memory error
nedtaylor May 26, 2025
503d9a6
Improve argument documentation
nedtaylor Aug 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
236 changes: 236 additions & 0 deletions .github/workflows/publish-to-test-pypi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
# Workflow developed from Python Package User Guide:
# https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/

name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI

on:
push:
branches:
- main
tags:
- v*
workflow_dispatch:

jobs:
check-version-matches:
name: Check if version numbers match the GitHub tag
runs-on: ubuntu-latest
continue-on-error: ${{ github.event_name == 'workflow_dispatch' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Extract version from fpm.toml
id: fpm_version
run: echo "ARTEMIS_FPM_VERSION=$(awk -F'"' '/^version/ {print $2}' fpm.toml)" >> $GITHUB_ENV

- name: Extract version from mod_io_utils.F90
id: fortran_version
run: echo "ARTEMIS_FORTRAN_VERSION=$(awk -F'"' '/character\(len=\*\), parameter \:\:\ artemis__version__/ {print $2}' src/fortran/lib/mod_io_utils.F90)" >> $GITHUB_ENV

- name: Extract GitHub tag version
id: github_tag
run: echo "TAG_VERSION=${GITHUB_REF#refs/tags/v}" >> "$GITHUB_ENV"

- name: Verify version consistency
run: |
if [[ "$ARTEMIS_FPM_VERSION" != "$TAG_VERSION" ]]; then
echo "❌ Version mismatch: fpm.toml ($ARTEMIS_FPM_VERSION) does not match GitHub tag ($TAG_VERSION)"
exit 1
fi
if [[ "$ARTEMIS_FORTRAN_VERSION" != "$TAG_VERSION" ]]; then
echo "❌ Version mismatch: mod_io_utils.F90 ($ARTEMIS_FORTRAN_VERSION) does not match GitHub tag ($TAG_VERSION)"
exit 1
fi
echo "✅ Version numbers match!"

build_wheel:
name: Build wheel distribution 📦
runs-on: ${{ matrix.platform[0] }}
strategy:
fail-fast: false
matrix:
platform:
- [ubuntu-latest, manylinux, x86_64]
- [macos-14, macosx, arm64]
python-version: [ "3.12" ] # cibuildwheel automatically runs on all versions of Python
toolchain:
- {fortran-compiler: gcc, fc-version: 13}
needs:
- check-version-matches

steps:
- name: checkout repo
uses: actions/checkout@v4

- name: Set MACOSX_DEPLOYMENT_TARGET
if: startsWith(matrix.platform[0], 'macos')
run: echo "MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion | cut -d '.' -f 1-2)" >> $GITHUB_ENV

- name: Check macOS deployment target
if: startsWith(matrix.platform[0], 'macos')
run: echo "Deployment target version is ${{ env.MACOSX_DEPLOYMENT_TARGET }} / ${MACOSX_DEPLOYMENT_TARGET}"

- name: actions-setup-python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: actions-setup-cmake
uses: jwlawson/actions-setup-cmake@v2.0.1
with:
cmake-version: '3.24.x'

- name: actions-setup-fortran
uses: fortran-lang/setup-fortran@v1
id: setup-fortran
with:
compiler: ${{ matrix.toolchain.fortran-compiler }}
version: ${{ matrix.toolchain.fc-version }}

- name: Install OpenMP runtime (Linux only)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libgomp1

- name: Install OpenMP runtime (macOS only)
if: runner.os == 'macOS'
run: brew install libomp

- name: Install python dependencies
run: |
python --version
python -m pip install pip-tools --user
python -m pip install build --user
python -m piptools compile -o requirements.txt pyproject.toml --all-build-deps
python -m pip install -r requirements.txt --user
python -m pip install cibuildwheel==2.22.0 --user

- name: Build a binary wheel distribution
run: python -m cibuildwheel --output-dir wheelhouse

- name: Store the distribution wheels
uses: actions/upload-artifact@v4
with:
name: artemis_materials-wheels-${{ matrix.python-version }}-${{ matrix.platform[0] }}-${{ matrix.toolchain.fortran-compiler }}${{ matrix.toolchain.fc-version }}
path: ./wheelhouse/*.whl

build_sdist:
name: Build wheel distribution 📦
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v4

- name: Build sdist
run: pipx run build --sdist

- name: Store the source distribution
uses: actions/upload-artifact@v4
with:
name: artemis_materials-sdist
path: dist/*.tar.gz

publish-to-pypi:
name: >-
Publish Python 🐍 distribution 📦 to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs:
- build_wheel
- build_sdist
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/artemis-materials
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
pattern: artemis_materials-*
path: dist
merge-multiple: true
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

# publish-to-testpypi:
# name: Publish Python 🐍 distribution 📦 to TestPyPI
# if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
# needs:
# - build_wheel
# - build_sdist
# runs-on: ubuntu-latest

# environment:
# name: testpypi
# url: https://test.pypi.org/p/artemis-materials

# permissions:
# id-token: write # IMPORTANT: mandatory for trusted publishing

# steps:
# - name: Download all the dists
# uses: actions/download-artifact@v4
# with:
# pattern: artemis_materials-*
# path: dist
# merge-multiple: true
# - name: Publish distribution 📦 to TestPyPI
# uses: pypa/gh-action-pypi-publish@release/v1
# with:
# verbose: true
# repository-url: https://test.pypi.org/legacy/

github-release:
name: >-
Sign the Python 🐍 distribution 📦 with Sigstore
and upload them to GitHub Release
needs:
- publish-to-pypi
runs-on: ubuntu-latest

permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore

steps:
- name: Check if GitHub release already exists
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if gh release view '${{ github.ref_name }}' --repo '${{ github.repository }}' > /dev/null 2>&1; then
echo "Release already exists for tag '${{ github.ref_name }}'. Skipping release creation."
exit 0
fi
- name: Download all the dists
uses: actions/download-artifact@v4
with:
pattern: artemis_materials-*
path: dist
merge-multiple: true
- name: Sign the dists with Sigstore
uses: sigstore/gh-action-sigstore-python@v3.0.0
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: >-
gh release create
'${{ github.ref_name }}'
--repo '${{ github.repository }}'
--notes ""
- name: Upload artifact signatures to GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
# Upload to GitHub Release using the `gh` CLI.
# `dist/` contains the built packages, and the
# sigstore-produced signatures and certificates.
run: >-
gh release upload
'${{ github.ref_name }}' dist/**
--repo '${{ github.repository }}'

8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,10 @@ obj/
tests/*/*.txt
tests/*/*.out
tests/*/DINTERFACES
tests/*/DTERMINATIONS
tests/*/DTERMINATIONS
build/
dist/
wheelhouse/
*.egg-info/
*.egg
*.pyc
23 changes: 23 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

# Set the OS, Python version and other tools you might need
build:
os: ubuntu-24.04
tools:
python: "3.13"

# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: docs/source/conf.py

# Optional but recommended, declare the Python requirements required
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt
47 changes: 47 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: >-
ARTEMIS: Ab Initio Restructuring Tool Enabling Modelling
of Interface Structures
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Ned Thaddeus
family-names: Taylor
orcid: 'https://orcid.org/0000-0002-9134-9712'
affiliation: University of Exeter
- given-names: Francis Huw
family-names: Davies
orcid: 'https://orcid.org/0000-0003-0786-2773'
affiliation: University of Exeter
- given-names: Isiah Edward Mikel
family-names: Rudkin
- given-names: Conor Jason
family-names: Price
orcid: 'https://orcid.org/0000-0002-1430-3294'
- given-names: Tsz Hin
family-names: Chan
orcid: 'https://orcid.org/0000-0003-1126-6579'
- given-names: Steven Paul
family-names: Hepplestone
affiliation: University of Exeter
orcid: 'https://orcid.org/0000-0002-2528-1270'
identifiers:
- type: doi
value: 10.1016/j.cpc.2020.107515
description: Paper detailing the first code release
repository-code: 'https://github.com/ExeQuantCode/ARTEMIS'
abstract: >-
ARTEMIS is a software package for the generation and
modelling of interfaces between materials.
keywords:
- materials science
- interfaces
- material interfaces
- structure generation
license: GPL-3.0
version: 1.0.2
Loading