Difference between revisions of "Tutorial:FullDiagonalization"

Jump to: navigation, search
(Two coupled dimers)
Line 103: Line 103:
Consider the following system of two coupled dimers:
Consider the following system of two coupled dimers:
First, we need a graph to represent this problem. This is defined by the following entry in fulldiag/dd-graph.xml:
First, we need a graph to represent this problem. This is defined by the following entry in fulldiag/dd-graph.xml:
Line 174: Line 175:
     -3J0/4+J1, J0/4, 5J0/4-J1 for Stotal=2;
     -3J0/4+J1, J0/4, 5J0/4-J1 for Stotal=2;
     5J0/4+2J1 for Stotal=3.
     5J0/4+2J1 for Stotal=3.
=== The molecular complex V<sub>15</sub> ===
=== The molecular complex V<sub>15</sub> ===

Revision as of 11:57, 8 May 2005

Full Diagonalization of a Quantum Hamiltonian

Thermodynamics for one-dimensional spin models

The spin-1 Heisenberg chain

The parameter file fulldiag/parm1 sets up a full diagonalization for a spin-1 Heisenberg quantum antiferromagnet on a one-dimensional chain with 8 sites.

LATTICE="chain lattice"
J       = 1
T_MIN   = 0.1
T_MAX   = 10.0 
DELTA_T = 0.1
{T = 0.5}

Using the following sequence of commands you can first convert the input parameters to XML and then compute the full spectrum of this quantum Hamiltonian using fulldiag:

parameter2xml parm1
fulldiag parm1.in.xml

Now you can produce XML plot files for the thermodynamic and magnetic observables using fulldiag_evaluate:

fulldiag_evaluate parm1.task1.out.xml

This will generate the following XML plot files:


To extract the calculated results from the XML plot files generated by fulldiag_evaluate, you can use the plot2text tool, and then view this data with some plotting tool. For example, to extract the data of the uniform susceptibility versus temperature, use

plot2text parm1.task1.plot.uniform_susceptibility.xml > chi.dat

and then use your favorite tool to plot chi.dat.

If you want to use Grace, you can alternatively directly produce a file with some additional formatting information using

plot2xmgr parm1.task1.plot.uniform_susceptibility.xml > chi.agr

In a similar way, you can extract the data from the other XML plot files.


  • Repeat the computation of the susceptibility, but for L=9 (this will take a few minutes, use L=7 if you are impatient), and compare the result with the one for L=8 ! Recall that all steps starting with parameter2xml ... must be repeated.
  • Give a rough estimate in which temperature range one may use the finite-size result for an infinite chain!

The spin-1/2 Heisenberg ladder

The parameter file fulldiag/parm2 sets up a full diagonalization for an antiferromagnetic spin-1/2 Heisenberg two-leg ladder with 6 rungs.

J       = 1
J'      = 1
T_MIN   = 0.05
T_MAX   = 5.0
DELTA_T = 0.05
{T = 0.5}

The specific heat for this case is obtained by the following standard sequence of commands:

parameter2xml parm2
fulldiag parm2.in.xml
fulldiag_evaluate parm2.task1.out.xml
plot2text parm2.task1.plot.specific_heat.xml > C.dat


  • Discuss the position of the maximum of the specific heat (hint: the infinite ladder has a gap of approximately J/2) !
  • Repeat this computation for 7 rungs (or 5 rungs, if you are impatient).
  • What can you infer from the comparison about the temperature range where the finite-size results are a good approximation to the infinite system ?

Remarks If you are familiar with Quantum Monte Carlo (QMC) simulations, you will know that larger systems can be treated and hence better approximations to the thermodynamic limit obtained. (Try it ! You may find that it is in fact not so easy to do better with QMC than with full diagonalization for the above examples.)

Exact diagonalization definitely remains the method of choice under certain conditions. Firstly, if the system is intrinsically finite (and possibly small), full diagonalization yields the exact result at once. Secondly, exact diagonalization does not suffer from the sign problem such that it can also be used for fermionic or frustrated models without any additional constraint. Both conditions are simultaneously satisfied in the models for magnetic molecules which will be discussed in the second part.

Thermodynamics of magnetic molecules

Two coupled dimers

Consider the following system of two coupled dimers:


First, we need a graph to represent this problem. This is defined by the following entry in fulldiag/dd-graph.xml:

<GRAPH name="double dimer" vertices="4">
  <VERTEX id="1" type="0"></VERTEX>
  <VERTEX id="2" type="0"></VERTEX>
  <VERTEX id="3" type="1"></VERTEX>
  <VERTEX id="4" type="1"></VERTEX>
  <EDGE type="0" source="1" target="2"/>
  <EDGE type="0" source="3" target="4"/>
  <EDGE type="1" source="1" target="3"/>
  <EDGE type="1" source="1" target="4"/>
  <EDGE type="1" source="2" target="3"/>
  <EDGE type="1" source="2" target="4"/>

Then we also want to assign different Heisenberg exchanges J0 and J1 to the edges of type 0 and 1, respectively. This is achieved by the following entry in the file fulldiag/model-dspin.xml:

<HAMILTONIAN name="dimerized spin">
  <PARAMETER name="J0" default="J"/>
  <PARAMETER name="J1" default="J"/>
  <PARAMETER name="J" default="1"/>
  <PARAMETER name="h" default="0"/>
  <BASIS ref="mixed spin"/>
  <BONDTERM type="0" source="i" target="j">
  <BONDTERM type="1" source="i" target="j">

Note that we would not really have needed this definition since the ,,mixed spin Hamiltonian in the default models.xml file already contains suitable definitions, using a notation J and J' for the two different bond types. Nevertheless, the above example should indicate how to define a model with more than two different exchange constants.

In passing we have also assigned different types to vertices 1,2 and 3,4 and referenced the ,,mixed spin basis. Therefore, we are able to assign different local spins to the upper and lower dimer by specifying the corresponding values via local_S and local_S', respectively. Now we use the parameter file fulldiag/parm3 to compute the magnetization curve for local spins S=1 (upper dimer) and S'=1/2 (lower dimer), J0=1, J1=0.4 at a temperature T=0.02:

LATTICE="double dimer"
MODEL="dimerized spin"
J0      = 1
J1      = 0.4
h       = 0 
{T = 0.02}

The computation is performed with the following sequence of commands:

parameter2xml parm3
fulldiag parm3.in.xml
fulldiag_evaluate -H_MIN 0 -H_MAX 4 -DELTA_H 0.025 -versus H parm3.task1.out.xml
plot2text parm3.task1.plot.magnetization.xml > mcur.dat

Note that here we have used fulldiag_evaluate with commandline arguments to specify a magnetic field range. In particular the commandline argument -versus H puts the magnetic field on the x-axis rather than temperature, as in the previous examples.


  • Plot and interpret the result !

Hint: The spectrum of of two coupled S=1 and S'=1/2 dimers can be found analytically. The energies are (with some degeneracies):

   -11J0/4, -3J0/4-2J1 for total spin Stotal=0;
   -7J0/4, -3J0/4-J1, 5J0/4-3J1 for Stotal=1;
   -3J0/4+J1, J0/4, 5J0/4-J1 for Stotal=2;
   5J0/4+2J1 for Stotal=3.

The molecular complex V15

The final example is a simplified model for the molecular complex V15 which consists of 15 spins 1/2 coupled in the following manner:

The associated graph is defined in fulldiag/v15-graph.xml.

If we make the simplifying assumption of equal Heisenberg exchange J along all edges, we can use the parameter file fulldiag/parmV15 to perform a full diagonalization of this model.

J       = 1
T_MIN   = 0.05
T_MAX   = 5.0
DELTA_T = 0.05
{T = 0.5}

Now the uniform magnetic susceptibility of the V15-model is obtained by the following standard sequence of commands:

parameter2xml parmV15
fulldiag parmV15.in.xml
fulldiag_evaluate parmV15.task1.out.xml
plot2text parmV15.task1.plot.uniform_susceptibility.xml > chiV15.dat


  • How do you explain the low-temperature behavior of the magnetic susceptibility ?

Note that this computation is already a bit challenging and will take a while. So, it may be a good idea to have a break before you come back and look at the result.

(c) 2004-2005 by Andreas Honecker