Recent Changes - Search:

HomePage

PmWiki

pmwiki.org

IntroductionFinite

Introduction to using the Matrix Product Toolkit

In this tutorial, we will obtain the groundstate of a spin-1/2 Heisenberg chain and calculate some observables.

1. Constructing the lattice file

The finite-system toolkit uses two types of file. Firstly the lattice file describes the model and operators. We will make a lattice file for the Heisenberg model, using U(1) symmetry. Firstly, run the program spinchain-u1 with no arguments to see what the options are.

spinchain-u1

All of the programs in the toolkit will display a help message when they are run without any arguments. You should try this for all of the tools introduced in these tutorials.

For spinchain-u1 here are a few options to control the magnitude of the spins, and whether we want to treat the boundaries differently. The default is the isotropic spin-1/2 chain, so all we need to do is specify the lattice size and the name of the output file.

spinchain-u1 -L 40 -o heis

This will make a file named heis that represents a 40-site chain.

2. Constructing an initial wavefunction

Now, we need a wavefunction. The finite-system DMRG program does a variational optimization towards the groundstate, but we need an initial wavefunction to start from. We will use a random wavefunction.

mp-random -l heis -q 0 -o psi

This makes a random wavefunction named psi with a default number of states m=10. The -q 0 option means we want the Sz=0 symmetry sector. A different number here would give a magnetized excited state.

3. Some basic information about the wavefunction

We now have everything we need to start the DMRG calculation. However, we will first introduce some simple tools for finding out some information about the wavefunction. The first tool is mp-info. Try

mp-info psi

which produces

Symmetry list is Sz:U(1)
State transforms as 0
Number of sites = 40

This is what we already knew; the wavefunction is defined on a 40-site lattice and has U(1) symmetry with good quantum number Sz, and the wavefunction transforms under U(1) rotations as an Sz=0 state. Try now

mp-info -d psi

This shows the reduced density matrix eigenvalues at each partition of the wavefunction. Can you guess from the form of the density matrix, some clues as to how mp-random produces a `random' MPS?

4. running the DMRG program

The main tool for running DMRG optimizations is mp-dmrg. By default, this uses a 1-site scheme, with a density matrix mixing factor based on S. R. White, Phys. Rev. B 72, 180403(R) (2005). The default paramters for the optimization work well in most cases. The main parameters we need to set are the Hamiltonian and the number of states. The Hamiltonian operator can be a rather general expression, based on operators that are defined in the lattice file. The format is lattice:expression where lattice is the lattice file, and expression can be any kind of expression understood by the operator parser, including mathematical expressions, sums and products of operators, commutator brackets [A,B] and powers H^2 etc.

mp-dmrg -w psi -H heis:H -m 50

will perform 2 half-sweeps with m=50 states kept using the operator H defined by the spinchain-u1 program. Two sweeps will not be enough to obtain a converged wavefunction, so lets run 4 more sweeps by using the -s 4 option.

mp-dmrg -w psi -H heis:H -m 50 -s 4

The DMRG program will show the variance of the energy (H-E)^2, which should be about 1E-6 for this number of states kept.

Now lets calculate some observables.

4. Observables

The main tool for calculating observables is mp-expectation. This will calculate the expectation value of any expression you can think of, that is constructed out of operators defined by the model. Some examples:

mp-expectation psi heis:"Sz(1)"

The z-component of the spin at site 1 (the left-hand edge). This isn't so exciting because reflection symmetry demands that this expectation value is zero. Note that we enclosed the operator expression in double quotes " to prevent the shell from interpretting the brackets and other symbols.

mp-expectation psi heis:"Sz(1)*Sz(2)"

The spin-spin correlation between sites 1 and 2.

mp-expectation psi heis:"(Sz(1)*Sz(2))^2"

The square of the spin-spin correlation between sites 1 and 2.

This might be a good time to revisit the mp-info command. Can you calculate the bipartite entropy? How should this scale with the system size?

5. Symmetries

The previous calculation used U(1) symmetry of the z-component of the total spin. The actual symmetry group of the Hamiltonian is SU(2). This group is non-abelian, and the representations labelled by a total spin j have a dimension (or degree) of j(j+1). You should be able to see these spin multiplets if you look at the density matrix of a converged DMRG calculation.

It is also possible to use SU(2) symmetry in the Matrix Product Toolkit. Try repeating the calculation with the model spinchain-su2 instead of spinchain-u1. What is different about the density matrix? How does this change the number of states needed in the calculation?

Edit - History - Print - Recent Changes - Search
Page last modified on September 07, 2011, at 01:45 AM