xdiag
xdiag copied to clipboard
C++ library for Exact Diagonalization of quantum many-body systems
XDiag
High-performance Yxact Diagonalization Routines and Algorithms
A C++ library to perform efficient Exact Diagonalizations of quantum many body systems.
Features:
- Basic algebra of operators in quantum many-body systems
- Iterative linear algebra for computing eigendecompositions and time-evolutions (e.g. Lanczos algorithm)
- Local spin, t-J, or fermionic models
- Full support of generic space group symmetries
- parallelization both with OpenMP and MPI
- modern C++17 impementation simplifying usage
Installation:
Clone this repository first. Afterwards, the xdiag library can be compiled using the standard CMake instructions
cmake -S . -B build
cmake --build build
cmake --install build
Example Code:
#include <xdiag/all.hpp>
using namespace xdiag;
int main() try {
int n_sites = 16;
int nup = n_sites / 2;
Spinhalf block(n_sites, nup);
// Define the nearest-neighbor Heisenberg model
BondList bonds;
for (int i = 0; i < n_sites; ++i) {
bonds += Bond("HB", "J", {i, (i + 1) % n_sites});
}
bonds["J"] = 1.0;
set_verbosity(2); // set verbosity for monitoring progress
double e0 = eigval0(bonds, block); // compute ground state energy
Log("Ground state energy: {:.12f}", e0);
} catch (Error e) {
error_trace(e);
}
Documentation
The full documentation is available at awietek.github.io/xdiag.
About
author: Alexander Wietek license: Apache License 2.0