The ARES3 framework is divided into a main library (libLSS) and a core program (ares3).
The LibLSS library is itself divided in several big branches:
Two presentations linked to building and presenting the overall structure of ARES3 was given in an internal workshop. I am publishing the slides here in PDF form:
The units of the code are whenever possible in "physical" units (i.e. velocities often in km/s, density contrasts, ...). The rational being that theory papers are often expressed, or easily expressable, in those units while it kind be hard to follow all the required steps to make the units work in the global numerical schemes of ARES. So the equations are more easily readable and matchable to equations. As an example, the Fourier transform of density contrast must have the unit of a volume. The density fluctuation power spectrum is also a volume.
That can also however introduce some unexpected complexity.
This branch implements the most physics aspect of the algorithm. Notably the density estimation from the particle distribution, the background expansion for a given cosmology, the link to power spectrum of density fluctuations, etc.
In this branch, there is mostly technical and algorithmic aspects of the code. Notably the following subsystems are implemented there: