SPINPACK

What's about?

SPINPACK is a big program package to calculate lowest eigenvalues and eigenstates, spin correlations etc of quantum spin systems. The first version was based on Nishimori's TITPACK (Lanczos method), but it was early converted to C/C++ and completely rewritten. Other algorithms are implemented too. See 2x2-diagonalization for example. It is able to handle Heisenberg, t-J, and Hubbard-Systems until 64 sites if you have enough memory, disk space and computing power. For instance we were able to get the lowest eigenstates for the Heisenberg Hamiltonian on a 36 site square lattice on our machines. The package is written mainly in C to get it running on all unix systems. C++ is only needed for complex eigenvectors and twisted boundary conditions.
The program can use all topological symmetries and S(z) symmetry to reduce matrix size. The results are very reliable because the package has been used used for more than 5 years in scientific work.

Parallel processing (pthreads) can be used with version 1.9 for shared memory multiprocessor machines. (For unknown reasons the older PRAGMA-MP variant was not running faster. Now the same code as pthread version does its task. This is probably caused by bad parallel code generated by the PRAGMA-MP-compilers (MIPSpro 7.2.1).) Future versions will work also on MPI-systems (for PC clusters). Since version 2 the program uses Large File Support (>2GB) if available and fallback to mapped files if there is not enough memory.

News

Download

Installation

Documentation

The documentation is available in the doc-path. At the moment the most parts of the documentation are written in german by historical reasons. If you want a english version, send a short email to me and I will change that. Please see doc/history.tex for latest changes. You can find a documentation about speed on this link.

Frequently asked questions (FAQ)

 Q: I try to diagonalize a 4-spin system, but I do not get the full spectrum. Why?
 A: Spinpack is designed to handle big systems. Therefore it uses as much
    symmetries as it can. The very small 4-spin system has a very special
    symmetry which makes it equivalent to a 2-spin system build by two s=1 spins.
    Spinpack uses this symmetry automaticly to give you the possibility
    to emulate s=1 (or s=3/2,etc) spin systems by pairs of s=1/2 spins.
    If you want to switch this off, edit src/config.h and change
    CONFIG_S1SYM to CONFIG_NOS1SYM.