Structure of the QDYN library

The library is divided into modules which are organized in five hierarchical layers:

  1. Utilities: I/O, basic mathematics, unit conversion, config file parsing, etc. Indicated in yellow in the above graph.

  2. Data objects: Methods to manipulate and work with the data structures that describe the physics of the problem (operators, pulses, wave functions, density matrices). Indicated in orange.

  3. Static properties: Numerical routines for non-time-dependent problems, such as diagonalization or calculation of scattering lengths. Indicated in green.

  4. Dynamical properties: Propagation algorithms for wave functions and density matrices. These are collected in a single interface through the prop module. Indicated in blue.

  5. OCT: Optimal control algorithms, accessible through a common interface in the oct module. Indicated in red.

The data structures themselves are defined in the def module, alongside a large number of auto-generated routines for debugging, dumping and reading in the data structures. The global module defines constants such as string lengths, as well as a few basic routines. These modules are referenced in every other module. The qdyn module is the central module for the user. It exports all relevant symbols from all of the other modules. Thus, in most instances use qdyn will be sufficient for a user program.