2.1. Heisenberg chain (finite temperatures)¶
Here, we study the finite-temperature properties of spin 1/2 Heisenberg model on the chain.
The input file (samples/tutorial_2.1/stan1.in
) for 12-site Heisenberg model is as follows:
L = 12
J = 1
2S = 1
model = "SpinGC"
method = "cTPQ"
lattice = "chain"
lanczos_max = 2000
LargeValue = 50
NumAve = 10
You can execute HPhi as follows
HPhi -s stan1.in
2.1.1. Full diagonalization¶
After executing the full diagonalization, all the eigenvalues are output in output/Eiegenvalue.dat. By using the python script (samples/tutorial_2.1/Finite.py), you can obtain the temperature dependence of the energy and the specific heat.
You can execute Finite.py as follows
python3 Finite.py
Then, you can obtain FullDiag.dat as follows
0.000100 -5.3873909174000003 0.0000000000000000
0.000150 -5.3873909174000003 0.0000000000000000
0.000200 -5.3873909174000003 0.0000000000000000
0.000250 -5.3873909174000003 0.0000000000000000
0.000300 -5.3873909174000003 0.0000000000000000
The 1st row represents temperature, 2nd row represents the energy, and the 3rd row represents the specific heat defined by \(C=(\langle E^2 \rangle-\langle E \rangle^2)/T^2\).
2.1.2. Micro-canonical TPQ (mTPQ) method (Sz=0)¶
By selecting method as “TPQ”, you can perform the finite-temperature calculations using the mTPQ method.
The input file (samples/tutorial_2.1/stan2.in) for 12-site Heisenberg model is as follows:
L = 12
model = "Spin"
method = "TPQ"
lattice = "chain"
J = 1
2Sz = 0
2S = 1
After performing the TPQ calculations, results are output in output/SS_rand*.dat. By using the python script (samples/tutorial_2.1/AveSSrand.py), you can obtain the temperature dependence of physical quantities such as the energy and the specific heat.
Then, you can obtain ave_TPQ.dat as follows
# temperature T err of T Energy E error of E specific heat C err of C
30.17747 0.02022 -0.35489 0.04044 0.00264 8.1126-05
15.10875 0.01016 -0.43500 0.04065 0.01068 0.0003182
10.08598 0.00681 -0.51592 0.04086 0.02423 0.0007030
7.574693 0.00513 -0.59754 0.04106 0.04335 0.0012311
6.067978 0.00412 -0.67978 0.04123 0.06808 0.0019053
Using gnuplot, you can directly compare the two results
plot "FullDiag.dat" u 1:2 w l,"ave_TPQ.dat" u 1:3:4 w e
You can see the following output image.
![../_images/finiteT.png](../_images/finiteT.png)
2.1.3. mTPQ method (susceptibility)¶
By using the mTPQ method, it is also possible to calculate the spin susceptibility by performing the calculations for all Sz sectors.
The input file (samples/tutorial_2.1/stan3.in
) for 12-site Heisenberg model is as follows:
L = 12
model = "SpinGC"
method = "TPQ"
lattice = "chain"
J = 1
2S = 1
Here, note that “model = Spin” is changed to “model = SpinGC” and “Sz = 0” is omitted.
After performing the TPQ calculations, temperature dependence of several physical quantities such as number of particel N and total Sz are output in output/Flct_rand*.dat. By using the python script (samples/tutorial_2.1/AveFlct.py), you can obtain the temperature dependence of physical quantities such as the energy and the spin susceptibility \(\chi\). Note that \(\chi\) is defined as
Then, you can obtain ave_Flct.dat as follows
# temperature T err of T m_z error of m_z susceptibility chi err of chi
13.5876 0.00695 -0.00688 0.00955 0.21243 0.00184
6.83615 0.00373 -0.00783 0.01067 0.40632 0.00414
4.58603 0.00278 -0.00894 0.01251 0.58234 0.00694
3.46113 0.00239 -0.01023 0.01474 0.74129 0.01021
2.78624 0.00220 -0.01171 0.01713 0.88407 0.01383
Using gnuplot, you can see the temperature dependence of \(\chi\)
se log x
se colors classic
se xlabel "T/J"
se ylabel "chi"
plot "ave_Flct.dat" u 1:5:6 w e lc rgb "#FFBBBB" ps 1 pt 6,\
"ave_Flct.dat" u 1:5 w lp lt 1 ps 1 pt 6
You can see the following output image.
![../_images/chi.png](../_images/chi.png)
2.1.4. Canonical TPQ (cTPQ) method (Advanced)¶
In the cTPQ method, we generate the kth TPQ state as
where \(n_{\rm max}\) represents the order of the Taylor expansion and \(\Delta\tau\) represents increment of the imaginary-time evolution. An advantage of the cTPQ method is the inverse temperatures do not depend on the initial states \(\ket{\Phi_{\rm rand}}\). Because of this feature, it is possible to estimate the errors originating from fluctuations of the initial states without ambiguity using the bootstarp method.
A input file (samples/tutorial_2.1/stan4.in
) for 12-site Heisenberg model is as follows:
L = 12
J = 1
2S = 1
model = "SpinGC"
method = "cTPQ"
lattice = "chain"
lanczos_max = 2000
LargeValue = 50
NumAve = 10
The increment of the imaginary-time evolution \(\Delta\tau\) is given by \(\Delta\tau=1/{\rm LargeValue }=1/50=0.02\). The default value of \(n_{\rm max}=10\) is used in this calculation. Please note that this cTPQ calculation takes 2-3 minutes.
After the calculation, by executing sh Aft_cTPQ.sh
,
you can estimate the average values and errors by using the bootstrap method.
In this example, we choose 10
samples from 10
samples with allowing
duplications for 5
times in the bootstrap sampling.
In BS_MaxBS5.dat
, the following physical quantities are output:
T E E_err C C_err S S_err Sz Sz_err chi_Sz chi_Sz_err Z Z_err k
where
T
: temperature (\(T=1/\beta=1/(k\Delta\tau)\)),E
: average value of energy,E_err
: error of energy,C
: average value of specific heat,C_err
: error of specific heat,S
: average value of entropy,S_err
: error of entropy,Sz
: average value of Sz,Sz_err
: error of Sz,chi_Sz
: average value of chi_Sz,chi_Sz_err
: error of chi_Sz,Z
: average value of norm the wave function,Z_err
: error of norm of the wave function, andk
: number of the cTPQ state.
For example, you can see the temperature dependence of the specific heat as:
se log x
se colors classic
se xlabel "T/J"
se ylabel "C"
plot "BS_MaxBS5.dat" u 1:4:5 w e lt 1 ps 1 pt 6
We note that Ext_BS_MaxBS5.dat
is a file with several temperatures omitted from
BS_MaxBS5.dat
for clarity. To see overall temperature dependence, it is better to
plot Ext_BS_MaxBS5.dat
.
More advanced exercise:
By increasing NumAve
(e.g. NumAve=100
),
please examine how the error bars of the physical quantities decrease.