I try to reproduce my results on the J1-J2 model at finite temperature using PEPSKit. I use the 3 site simple update code from #171. An example of script can be found at https://github.com/ogauthe/BenchmarkPEPS/blob/main/run/run_j1j2.jl.
The simple update Hamiltonian is defined as
terms = [CartesianIndex.(t) => h_pa for t in nearest_neighbours(lattice)] # 1st order SU, 1st neighbor
append!(
terms,
[CartesianIndex.(t) => J2 * h_pa for t in next_nearest_neighbours(lattice)],
)
su_hamilt = LocalOperator(physical_spaces, terms...)
The rest of the code is nearly the same for the first neighbor.
For J2=0.0, the results look correct and match those obtained with both frostspin and run_heisenberg.jl. However, for J2 > 0, the results do not match frostspin. I am pretty confident in frostspin results as they match high temperature series expansion. It is unclear to me where the difference comes from. It is pretty easy to get a factor 2 wrong, so I computed several data points. There is no match outside of J2=0:
D=7, chi=49, beta=1.0
| J2 / energy |
PEPSKit 1sntei |
frostspsin 1stnei |
PEPSKit 2nd |
frostspin 2nd |
| J2 = 0.0 |
-0.1927 |
-0.1928 |
0.07598 |
0.07599 |
| J2 = 0.15 |
-0.0941 |
-0.1742 |
0.00836 |
0.04712 |
| J2 = 0.30 |
-0.0877 |
-0.1561 |
-0.00695 |
0.01630 |
| J2 = 0.60 |
-0.075 |
-0.1196 |
-0.0386 |
-0.04736 |
D=7, chi=49, beta=2.0
| J2 / energy |
PEPSKit 1sntei |
frostspsin 1stnei |
PEPSKit 2nd |
frostspin 2nd |
| J2 = 0.0 |
-0.29060 |
-0.29060 |
0.1576 |
0.1576 |
| J2 = 0.15 |
-0.175 |
-0.267 |
0.04728 |
0.125 |
| J2 = 0.30 |
-0.156 |
-0.2371 |
0.0158 |
0.0769 |
| J2 = 0.60 |
-0.117 |
-0.166 |
-0.0527 |
-0.03637 |
There are some similarities when matching PEPSKit at beta=2 with frostspin at beta=1, so I thought about a double counting problem, but then considering J2/2 or J2*2 should fix it. Also the case J2=0 matches precisely for both values of beta.
Comparing different values for the bond energies in the unit cell, the results are much more asymmetric (breaking rotation/translation) with PEPSKit. This may be explained by 1st order Trotter vs 2nd order in frostspin, but maybe there is something more.
@Yue-Zhengyuan do you have any clue?
I try to reproduce my results on the J1-J2 model at finite temperature using PEPSKit. I use the 3 site simple update code from #171. An example of script can be found at https://github.com/ogauthe/BenchmarkPEPS/blob/main/run/run_j1j2.jl.
The simple update Hamiltonian is defined as
The rest of the code is nearly the same for the first neighbor.
For J2=0.0, the results look correct and match those obtained with both
frostspinandrun_heisenberg.jl. However, forJ2 > 0, the results do not match frostspin. I am pretty confident in frostspin results as they match high temperature series expansion. It is unclear to me where the difference comes from. It is pretty easy to get a factor 2 wrong, so I computed several data points. There is no match outside ofJ2=0:D=7,chi=49,beta=1.0D=7,chi=49,beta=2.0There are some similarities when matching PEPSKit at beta=2 with frostspin at beta=1, so I thought about a double counting problem, but then considering
J2/2orJ2*2should fix it. Also the caseJ2=0matches precisely for both values ofbeta.Comparing different values for the bond energies in the unit cell, the results are much more asymmetric (breaking rotation/translation) with PEPSKit. This may be explained by 1st order Trotter vs 2nd order in frostspin, but maybe there is something more.
@Yue-Zhengyuan do you have any clue?