Code organization

The code is organized in three main products, each in a separate directory:

  • featomic/ contains the main Rust implementation of all calculators, and the corresponding unit and regression tests;

  • featomic-c-api/ is a Rust crate containing the implementation of the featomic C API;

  • python/ contains the Python interface to featomic, and the corresponding tests

Finally, docs/ contains the documentation for everything related to featomic.

The main featomic crate

Inside the main featomic crate, the following code organization is used:

  • featomic/benches: benchmarks of the code on some simple systems;

  • featomic/tests: regression tests for all calculators;

  • featomic/src/system/: definition of everything related to systems: UnitCell, the System trait and SimpleSystem implementation;

  • featomic/src/calculator.rs: convenience wrapper around implementations of CalculatorBase that setup everything before a calculation;

  • featomic/src/calculators/: definition of the CalculatorBase trait and various implementations of this trait;