First, in the script provided by HPhi (samples/tutorial_4.3/spinchain_example.py), the dynamic spin structure factor of the Heisenberg model is calculated. In lines 78 and 79 of this script, the data is passed to the pair.def file as follows:
f.write('%i 0 %i 0 0 %f %f\n' % (j, j, wr, wi))
f.write('%i 1 %i 1 0 %f %f\n' % (j, j, -wr, -wi))
However, why is it written this way instead of:
f.write('%i 0 %i 0 1 %f %f\n' % (j, j, wr, wi))
f.write('%i 1 %i 1 1 %f %f\n' % (j, j, -wr, -wi))
After all, 0: C_{i sigma1} C_{j sigma2}^\dagger and 1: C_{i sigma1}^\dagger C_{j sigma2}.
Second, when calculating the DSSF, what is the difference between the Lanczos method and the CG method? Also, how does the role of Lanczos_max differ between these two methods?
I noticed that when I set Lanczos_max = 5000, the Lanczos method performs exactly 5000 iterations, whereas the CG method does not—it seems to check for convergence and terminate early if satisfied.
First, in the script provided by HPhi (samples/tutorial_4.3/spinchain_example.py), the dynamic spin structure factor of the Heisenberg model is calculated. In lines 78 and 79 of this script, the data is passed to the pair.def file as follows:
f.write('%i 0 %i 0 0 %f %f\n' % (j, j, wr, wi))
f.write('%i 1 %i 1 0 %f %f\n' % (j, j, -wr, -wi))
However, why is it written this way instead of:
f.write('%i 0 %i 0 1 %f %f\n' % (j, j, wr, wi))
f.write('%i 1 %i 1 1 %f %f\n' % (j, j, -wr, -wi))
After all, 0: C_{i sigma1} C_{j sigma2}^\dagger and 1: C_{i sigma1}^\dagger C_{j sigma2}.
Second, when calculating the DSSF, what is the difference between the Lanczos method and the CG method? Also, how does the role of Lanczos_max differ between these two methods?
I noticed that when I set Lanczos_max = 5000, the Lanczos method performs exactly 5000 iterations, whereas the CG method does not—it seems to check for convergence and terminate early if satisfied.