MBO
|
MBO is a library for the efficient numerical treatment of quantum mechanical many body operators. Quantum mechanical many body operators are linear operators constructed from small matrices (single body operators) that are embedded into a tensor product space. For example, in a system of spin 1/2 systems we have the operator
, the spin lowering operator for particle
. Mathematically,
is obtained from the single particle two by two matrix,
, by taking Kronecker products with identity operators for particle other than particle
.
This leads to the three core concepts of MBO:
MBO was designed to deal with these three concepts as efficiently as possible. Specifically, the goal of MBO is to run as fast as possible on a single core. MBO deliberately does not address parallelization via processes (e.g. MPI) or threads (e.g. via pthreads or OpenMP). This choice was made to facilitate using MBO with libraries that have their own strategies for parallelism (e.g. PETSc). Parallelization of the application of MBO operators is easily achieved at the application level (i.e. outside of MBO).
Download, configure, build, and install the library:
git clone https://github.com/d-meiser/mbo cd mbo mkdir build cd build cmake .. make sudo make install
The following example illustrates the basic usage of MBO.