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.
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
ions_t, which will descibe the electrons and ions as separate systems.
electrons_t is to be replaced by the
matter_t, which is a multisystem, containing electrons and ions.
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
The following chapters will discuss in more detail: