Multisystem framework
Work in progress!
These pages might not always be in sync with the code. In order to see the current implementation, and code documentation, see the doxygen documentation of the code.
Support for multisystem in Octopus is implemented through an object-oriented framework.
Currently, two major modes are implemented:
- The legacy mode, which only allows for one ‘‘matter’’ system, consisting of electrons, ions and external fields.
- The new multisystem framework, which allows for several coupled systems, e.g. maxwell, charged particles, etc.
At the time of writing (Feb. 2021), electrons and ions are not yet available as separate systems.
Legacy mode
The ‘‘legacy’’ mode of the code is used whenever the input file does not have a Systems block.
In this case, the top level system is initialized to be of (the old) electrons_t
type. This type describes the combined electron-ion system.
It is planned for te future, that this will be split into the new electrons_t
and ions_t
, which will descibe the electrons and ions as separate systems.
The current electrons_t
is to be replaced by the matter_t
, which is a multisystem, containing electrons and ions.
Multisystem mode
If the input file contains the Systems block, the code uses the new multisystems mode.
In this multisystem mode, from the user perspective, the highest level system is a ‘‘multisystem’’. Multisystems are containers which can host other system types, including other multisystems. From the code perspective, the multisystem_t
type is a special case of the system_t
type (i.e. it extends system_t
).
The following chapters will discuss in more detail: