mpskit is a toolkit to facilitate the investigation of discrete quantum systems (e.g. lattice models of spins and bosons) in one and two dimensions. It employs the ITensor library for matrix product and tensor network states as well as the density matrix renormalization group (DMRG) algorithm to compute eigenstates. The library allows to easily implement new systems and to compute relevant observables (expectation values, local operators, correlations, โฆ). Results are stored in an efficient and portable HDF5 file format that can be read by many programming languages/tools for further analysis. Input parameters are passed via JSON files which are human-readable plain text files.
I tried to implement time-evolving block decimation (TEBD) to compute the time-evolution but could not quite get it to work with the C++ version of ITensor. However, I got it to work with the Julia version of ITensor, ITensor.jl and you can use my project MPSToolkit.jl for that.
with an optional cutoff radius for the interaction.
A new model can be added by adding it to the models
source folder (take inspiration from transverse_ising_1d.hpp
, transverse_ising_1d.cpp
, etc.).
Afterwards it has to be registered in the model registry (see registry.cpp
).
cmake
gcc>=8
orclang>=6
boost
hdf5
Compilation of the project is an easy two-step process.
Run
cmake -B build -DCMAKE_BUILD_TYPE=Release
from the project directory to create a build/
directory.
You can specify the C++ compiler by setting the CXX
environment variable, e.g. export CXX=clang++
, before invoking the CMake command.
If you are developing based on this you might want to create a Debug build for testing instead (not recommended for actual simulation due to reduced performance). In order to achieve this replace the CMake command above with
cmake -B build -DCMAKE_BUILD_TYPE=Debug
After step one just run
cmake --build build
to compile the code.
The build/
folder will then contain the mpskit
executable.
You can consult mpskit --help
to see the command line options this programs has to offer.