For developers
In this section, we provide notes for developers on how the code is structured. For full documentation, please refer to the API.
The code is organized in three main folders: the utils
folder, the dbs
folder, and the calc_modes
folder.
The utils
folder contains modules that encode functions useful to several calculation modes.
The
constants
module stores commonly used constants, as well as functions for converting between units.The
lattice
module contains functions for working with crystal lattices, such as converting between crystal and cartesian coordinates.The
plot_tools
contains functions for plotting.
The dbs
folder contains classes that represent databases common to several calculation modes. For example, several calculation modes store information about k-points or q-points, so we have a RecipPtDB
that represents sets of reciprocal points. These dbs
classes typically use functions from the utils
modules.
The
RecipPtDB
class represents sets of reciprocal points, such as k-points or q-points. Its methods correspond strongly to thelattice
module.The
EnergyDB
class represents a dispersion, such as a band structure or phonon dispersion. It contains methods for unit conversion.
Finally, the calc_modes
folder contains classes that represent each Perturbo calculation mode. These calc_modes
classes typically have attributes of dbs
classes, and they may use functions from the utils
modules, particularly the plot_tools
module.