User Guide
This user guide is a hands-on, step-by-step introduction to XDiag that takes you from a fresh installation all the way to running your own exact diagonalization calculations. Each section introduces one core concept and demonstrates it with parallel Julia and C++ code examples, so you can follow along in whichever language you prefer.
The guide is organized to mirror a typical workflow. We start with installation and setting up an application, then cover the fundamental building blocks of a quantum many-body problem — Hilbert spaces, Operators, and States. Building on these, we turn to the numerical linear algebra at the heart of XDiag: dense and iterative diagonalization, time evolution, and measurements. The remaining sections deal with input/output, the use of symmetries, and advanced topics such as sparse matrices and distributed-memory computing.
For a complete reference of every function and object, see the Documentation; for fully worked applications, see the Examples.
Getting started
Basic quantum mechanics
Linear Algebra
-
Dense matrices
How to compute a dense matrix representation of an operator and perform a full diagonalization
-
Diagonalization
How to perform a diagonalization using iterative numerical algorithms
-
Time evolution
How to evolve a state in real or imaginary time
-
Measurements
How to compute expectation values of observables
Input / Output
-
Input / Output
Reading and writing to TOML and hdf5 files.
Symmetries
-
Symmetries
How to work with symmetries and symmetry-adapted bases