Recent Changes - Search:

HomePage

PmWiki

pmwiki.org

IsingChain

The Ising model is the simplest of a quantum phase transition that can be solved with DMRG. The purpose of this tutorial is to explore the physics of the model and see how this relates to the parameters of the calculation, including quantities such as the entropy and how this relates to the required basis size.

The Ising model is obtained by using the spinchain program. For example, with a 40-site lattice, try

spinchain 40 0.5 0.5 lattice

The spinchain lattice generates two operators H_zz, which is the nearest-neighbor Sz - Sz interaction, and Sx, which is the total x-component of the spin, which can be used to implement the Ising model with the Hamiltonian operator

lattice:"-4*H_zz + lambda*2*Sx"

You will need to use this operator (with a number substituted for 'lambda') as the Hamiltonian operator in the mp-dmrg program, and you will also need to construct an initial wavefunction using mp-random, similarly to the previous tutorial. For example,

mp-random -l lattice -o psi

mp-dmrg -w psi -m 20 -H lattice:"-4*H_zz + 1.0*2*Sx"

for the model at criticality (lambda=1.0).

The purpose of the factors 4 and 2, is to convert from the spin-half operators to the Pauli matrices, which gives the critical point as lambda=1 and a groundstate energy per site of 4/pi.

In the thermodynamic limit, for lambda < 1, the groundstate is an ordered ferromagnet in the z direction. For lambda > 1, the groundstate is a ferromagnet in the x direction.

Try plotting the order parameter (say, the local Sz at the center of the lattice, or the total Sz) as a function of lambda, for various system sizes from 10 to 100. You should be able to see that the phase transition gets sharper, and also the location of the `best guess` critical point lambda^* changes as a function of the lattice size.

Some commands:

To iterate over values of lambda from 0.1 to 2, in steps of 0.1:

for lambda in $(seq 0.1 0.1 2.0) ; do echo $lambda ; done

We can extend this to making a copy of the wavefunction for this value of lambda, and running the dmrg program:

for lambda in $(seq 0.1 0.1 2.0) ; do 
   cp psi psi-$lambda 
   mp-dmrg -w psi-$lambda -H lattice:"-4*H_zz + 2*$lambda*Sx" -s 10 -m 20
done

We can now plot the local order parameter for each value of lambda:

for lambda in $(seq 0.1 0.1 2.0) ; do 
   echo -n $lambda ' '
   mp-expectation -r psi-$lambda lattice:"Sz" 
done | xmgrace -pipe&

The | xmgrace -pipe& at the end sends the output directly to the graphing program.

We can use a similar procedure to plot the entropy at the middle of the chain.

for lambda in $(seq 0.1 0.1 2.0) ; do 
   echo -n $lambda ' ' 
   mp-info -e psi-$lambda | grep '        20          20 ' | awk '{print $3}'
done | xmgrace -pipe&

Here, we used grep to take only the value at the centre of the chain, when we have 20 sites in each partition, and awk to extract just the 3rd column of the output.

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