SPINPACK

spin system logo

What's about?

SPINPACK is a big program package to compute lowest eigenvalues and eigenstates and various expectation values (spin correlations etc) for quantum spin systems. These model systems can for example describe magnetic properties of insulators at very low temperatures (T=0) where the magnetic moments of the particles form entangled quantum states. The first SPINPACK 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 up to 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 40 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, S(z) symmetry and spin inversion to reduce matrix size. The results are very reliable because the package has been used since 1997 in scientific work.

Parallel processing (pthreads) can be used with version 1.9 for shared memory multiprocessor machines. Since version 2.30 MPI can also be used, but is of course slower.

News

Download

Verify download using: gpg --verify spinpack-2.34.tgz.asc spinpack-2.34.tgz

Installation

Documentation

The documentation is available in the doc-path. Most parts of the documentation are rewritten in english now. If you still find some parts written in german or out-of-date documentation send me an email with a short hint where I find this part and I want to rewrite this part as soon as I can.
Please see doc/history.html for latest changes. You can find a documentation about speed on this spinpack-speed-page.

please help

The most time consuming important function is b_smallest in hilbert.c. This function computes the representator of a set of symmetric spin configurations (bit pattern) from a member of this set. It also returns a phase factor and the orbit length. It would be a great progress, if the performance of that function could be improved. Ideas are welcome.

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 automatically 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.

Sparse Matrix kago lattice This picture is showing a small sample of a possible Hilbert matrix. The non-zero elements are shown as black pixels (v2.33 Feb2008 kago36z14j2).


Sparse Matrix for N=18 s=1/2 quantum chain This picture is showing a small sample of a possible Hilbert matrix. The non-zero elements are shown as yellow (J1) and black (J2) pixels (v2.33 Feb2008 j1j2-chain N=18 Sz=0 k=0).


Author: Joerg Schulenburg, Uni-Magdeburg, April 2008