AtomsCalculators.jl provides a unified calculation interface for atomistic simulation engines within the JuliaMolSim ecosystem. It extends the core abstractions of AtomsBase.jl to standardize how energies, forces, virials, and related quantities are computed and accessed.
The goal of this package is to enable interoperability between different simulation backends while maintaining a clean, extensible API for scientific workflows.
- Backend-agnostic abstraction: Decouple physical models from simulation drivers.
- Extensibility: Allow new calculators to be integrated with minimal boilerplate.
- Composability: Support integration with molecular dynamics and geometry optimization routines.
- Testability: Provide utilities for validating calculator implementations.
- Unified API for energies, forces and virials
- Support for molecular dynamics with Molly
- Geometry optimization workflows
- Utilities for extending and testing calculator implementations
- Integration to ASE using i-PI style socket interconnect with IPICalculator.jl. This is also Molssi Driver interface compatible.
With an existing AtomsBase.AbstractSystem (sys) and calculator (calc) that implements the interface:
using AtomsCalculators
E = AtomsCalculators.potential_energy(sys, calc)
F = AtomsCalculators.forces(sys, calc)
V = AtomsCalculators.virial(sys, calc)
ef = AtomsCalculators.energy_forces(sys, calc)
# Access combined output
E2 = ef.energy
F2 = ef.forcesFull documentation is available at: https://JuliaMolSim.github.io/AtomsCalculators.jl/stable/
AtomsCalculators.jl is part of the JuliaMolSim ecosystem and builds on AtomsBase.jl to provide higher-level simulation functionality.