Code organization

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

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

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

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

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

The main rascaline crate

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

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

  • rascaline/tests: regression tests for all calculators;

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

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

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