Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
3cbe0d8
Add juliac --trim compilation tests for LAMMPS export
jameskermode Dec 9, 2025
9978ffb
Add C interface and Python wrapper for ACE shared library
jameskermode Dec 9, 2025
0f2c257
Add LAMMPS plugin for loading ACE potential models
jameskermode Dec 9, 2025
698fc4c
Refactor export feature into top-level export/ directory
jameskermode Dec 9, 2025
6925370
Add comprehensive test infrastructure for export functionality
jameskermode Dec 9, 2025
eb6529d
Fix LAMMPS test issues and skip Julia ccall threading tests
jameskermode Dec 9, 2025
a5083ff
Fix MPI and threading tests for portable LAMMPS detection
jameskermode Dec 9, 2025
c84368d
Add OpenMP-accelerated Python calculator wrapper
jameskermode Dec 9, 2025
5f58c4e
Add OpenMP parallelization to LAMMPS ACE plugin
jameskermode Dec 9, 2025
ac55896
Document OpenMP parallelization in export README
jameskermode Dec 9, 2025
f48900b
Fix test tolerances and expectations in export test suite
jameskermode Dec 9, 2025
de49241
Add pyproject.toml and update CI for reproducible Python environment
jameskermode Dec 9, 2025
1afc9cc
Fix CI workflow for cross-runner library compatibility
jameskermode Dec 10, 2025
41c63c0
Fix juliac compilation: use -C generic as Julia flag
jameskermode Dec 10, 2025
5fd03c8
Relax energy drift tolerance and suppress Python check stderr
jameskermode Dec 10, 2025
b42b902
Fix code review issues and improve documentation
jameskermode Dec 10, 2025
ba3598d
Fix RTLD_NOW compatibility across platforms
jameskermode Dec 10, 2025
80c1968
Remove Python OpenMP support, keep simple ctypes wrapper
jameskermode Dec 10, 2025
b42b06c
Use matscipy O(N) neighbor list in Python calculator, remove system-l…
jameskermode Dec 11, 2025
0c96b2d
Fix finite difference force verification sign convention
jameskermode Dec 11, 2025
054b32c
Fix symbol verification test and track export/Manifest.toml
jameskermode Dec 11, 2025
411d4e1
Add deployment script and portable build infrastructure
jameskermode Dec 11, 2025
8de39e1
Add portable Python tests for relocatable deployment validation
jameskermode Dec 11, 2025
f5e2234
Add ase-ace Python package for ASE calculator interfaces
jameskermode Dec 18, 2025
60f1a10
Optimize library calculator and add comprehensive benchmark
jameskermode Dec 18, 2025
796638e
Use ase-ace package for Python tests instead of duplicate ace_calculator
jameskermode Dec 18, 2025
5cb0231
Move ase-ace package into export/ directory
jameskermode Dec 18, 2025
9f09981
Add descriptor computation API to Python calculator
jameskermode Dec 18, 2025
3dee122
Add JuliaCall-based Python calculator with unified API
jameskermode Dec 18, 2025
966932a
Fix ACEJuliaCalculator array order and JuliaCall integration
jameskermode Dec 18, 2025
882684c
Update CI and README for ACEJuliaCalculator
jameskermode Dec 18, 2025
216cc04
Fix CI for ase-ace calculator tests
jameskermode Dec 18, 2025
24e8397
Fix juliapkg project discovery in CI pytest step
jameskermode Dec 18, 2025
4c3bd04
Fix juliacall import order in test_julia_calculator.py
jameskermode Dec 18, 2025
df92973
Move juliapkg.json to package source for proper discovery
jameskermode Dec 18, 2025
e2eeeca
Fix test_energy_scaling to handle zero energy case
jameskermode Dec 18, 2025
4916c89
Fit test model with Si_tiny data for non-zero forces
jameskermode Dec 18, 2025
30a9481
Fix descriptor consistency test for tiny values
jameskermode Dec 18, 2025
01d6dc4
Increase atol for descriptor consistency test
jameskermode Dec 18, 2025
bcd9ec7
Skip library consistency tests on Julia version mismatch
jameskermode Dec 18, 2025
fe5c905
Update READMEs for consistency with ase-ace package
jameskermode Dec 18, 2025
d089e1e
Refactor ase-ace Python interface for consistency and clarity
jameskermode Dec 22, 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
479 changes: 479 additions & 0 deletions .github/workflows/export-ci.yml

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
*Manifest.toml
!export/Manifest.toml
/docs/Manifest.toml
/docs/build/
scratch
/docs/src/literate_tutorials
.vscode
.ipynb_checkpoints
.CondaPkg

# Export feature artifacts
export/deployments/
export/**/build/
export/**/*.so
export/**/*.log
export/examples/**/deployments/

# Python
__pycache__/
*.pyc
.venv/
26 changes: 26 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,32 @@
- Version 0.9.0 onwards is technically compatible with Julia 1.10, but some unit tests show unexplained increases in fit accuracy, hence we highly recommend to use it only with Julia 1.11.
- Version 0.10 migrates internally to `EquivariantTensors.jl` for improved maintainability, flexibility for model building and different execution backends. User-facing API remains unchanged; existing code should mostly continue to work. Note however that support for the fast evaluator used for some Hessian calculations has been (temporarily) dropped. This series of minor releases is compatible with Julia 1.12

## Supported Interfaces

ACE potentials can be used through multiple interfaces:

- **Julia** - Native interface for fitting and development
- **Python/ASE** - Via the [`ase-ace`](export/ase-ace/) package
- **LAMMPS** - Plugin for large-scale MD simulations
- **C library** - Compiled shared library for embedding in other codes

| Interface | Threading | Startup | Julia Required | Best For |
|-----------|-----------|---------|----------------|----------|
| Julia (native) | Multi-threaded | JIT warmup | Yes | Fitting, development |
| [`ACECalculator`](export/ase-ace/) | Multi-threaded | 5-10s | Yes (subprocess) | Prototyping |
| [`ACEJuliaCalculator`](export/ase-ace/) | Multi-threaded | 10-30s | Yes (managed) | Self-contained scripts |
| [`ACELibraryCalculator`](export/ase-ace/) | Single-threaded | Instant | No | Deployment |
| [LAMMPS plugin](export/lammps/) | MPI + OpenMP | Instant | No | Large-scale MD |

**Python/ASE**:
```bash
pip install ase-ace # or: pip install ./export/ase-ace from this repo
```

**LAMMPS**: See [`export/lammps/`](export/lammps/) for the plugin and usage examples.

**Deployment**: Use [`export/scripts/build_deployment.jl`](export/scripts/) to create self-contained packages with compiled libraries and bundled dependencies.

## Contributing

Contributions are very welcome. Until clear guidelines and practices are established, we recommend to open an issue where the bugfix or enhancement can be discussed, before starting a pull request. We will do our best to respond in a timely manner.
Expand Down
16 changes: 16 additions & 0 deletions export/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Python virtual environment
.venv/
__pycache__/
*.pyc

# uv lock file (generated)
uv.lock

# Test artifacts
test/build/
test/lammps/*.dump
test/lammps/*.log
test/lammps/log.lammps

# LAMMPS plugin build
lammps/plugin/build/
Loading
Loading