Hi, Miles
Here's my Hamiltonian with open boundary
@@H=\sum{i=1}^{N-1}K1(\vec{Si}\cdot\vec{S{i+1}})^2+\sum{i=1}^{N-2}K2(\vec{Si}\cdot\vec{S{i+2}})^2+\sum{i=1}^{N-3}J\parallel\vec{Si}\cdot\vec{S{i+3}}+\lambda\sum{i=1}^{N-2}(-1)^i\vec{Si}\cdot(\vec S{i+1}\times\vec{S{i+2}})@@
https://imgur.com/a/ZKKKh
where lamda is about 2 order smaller than other parameters in above Hamiltonian.
It's extremely hard to get the ground state with truncation error less than 1E-7 when N > 16. Also, it takes days for only 63 sites.
I have experimented many sets of DMRG parameter with dmrg and iqdmrg.
The only DMRG parameter can lower down truncation error is raising maxm.
Sweeps:
1 Maxm=10, Minm=1, Cutoff=1.0E-10, Niter=2, Noise=1.0E-07
2 Maxm=20, Minm=1, Cutoff=1.0E-10, Niter=2, Noise=1.0E-08
3 Maxm=100, Minm=10, Cutoff=1.0E-10, Niter=2, Noise=1.0E-10
4 Maxm=200, Minm=10, Cutoff=1.0E-10, Niter=2, Noise=1.0E-15
5 Maxm=400, Minm=10, Cutoff=1.0E-10, Niter=2, Noise=1.0E-20
6 Maxm=800, Minm=10, Cutoff=1.0E-10, Niter=2, Noise=1.0E-30
7 Maxm=1600, Minm=10, Cutoff=1.0E-10, Niter=2, Noise=0.0E+00
8 Maxm=2400, Minm=10, Cutoff=1.0E-10, Niter=2, Noise=0.0E+00
9 Maxm=2400, Minm=10, Cutoff=1.0E-10, Niter=2, Noise=0.0E+00
10 Maxm=3000, Minm=10, Cutoff=1.0E-10, Niter=2, Noise=0.0E+00
11 Maxm=3000, Minm=10, Cutoff=1.0E-10, Niter=2, Noise=0.0E+00
vN Entropy at center bond b=31 = 1.238744298544
Eigs at center bond b=31: 0.5049 0.3166 0.1094 0.0282 0.0180 0.0094 0.0059 0.0026 0.0024 0.0017
Largest m during sweep 1 was 10
Largest truncation error: 0.0258392
Energy after sweep 1 is 5.602725754556
Sweep 1 CPU time = 2.649s (Wall time = 2.661s)
vN Entropy at center bond b=31 = 1.612233679937
Eigs at center bond b=31: 0.3923 0.2871 0.1657 0.0503 0.0338 0.0229 0.0115 0.0107 0.0076 0.0071
Largest m during sweep 2 was 20
Largest truncation error: 0.0028786
Energy after sweep 2 is 0.530196370527
Sweep 2 CPU time = 39.75s (Wall time = 8.483s)
vN Entropy at center bond b=31 = 1.925120785867
Eigs at center bond b=31: 0.3345 0.2587 0.1691 0.0615 0.0459 0.0318 0.0192 0.0188 0.0125 0.0120
Largest m during sweep 3 was 100
Largest truncation error: 4.6379e-05
Energy after sweep 3 is -1.624350530351
Sweep 3 CPU time = 5m, 47.8s (Wall time = 22.58s)
vN Entropy at center bond b=31 = 2.274203257494
Eigs at center bond b=31: 0.2817 0.2263 0.1570 0.0639 0.0589 0.0345 0.0280 0.0265 0.0227 0.0190
Largest m during sweep 4 was 200
Largest truncation error: 4.08592e-05
Energy after sweep 4 is -1.868672848123
Sweep 4 CPU time = 22m, 49s (Wall time = 1m, 28.0s)
vN Entropy at center bond b=31 = 2.575775322982
Eigs at center bond b=31: 0.2459 0.1961 0.1393 0.0676 0.0569 0.0356 0.0332 0.0332 0.0312 0.0268
Largest m during sweep 5 was 400
Largest truncation error: 1.87256e-05
Energy after sweep 5 is -1.952988166461
Sweep 5 CPU time = 1h, 26m, 35s (Wall time = 5m, 33.9s)
vN Entropy at center bond b=31 = 2.959967741963
Eigs at center bond b=31: 0.1998 0.1549 0.1120 0.0760 0.0503 0.0458 0.0420 0.0412 0.0307 0.0254
Largest m during sweep 6 was 800
Largest truncation error: 9.42967e-06
Energy after sweep 6 is -2.003773486256
Sweep 6 CPU time = 5h, 50m, 20s (Wall time = 22m, 31s)
vN Entropy at center bond b=31 = 3.282725034643
Eigs at center bond b=31: 0.1518 0.1088 0.0913 0.0889 0.0523 0.0512 0.0492 0.0318 0.0305 0.0293
Largest m during sweep 7 was 1600
Largest truncation error: 2.92422e-06
Energy after sweep 7 is -2.026856689761
Sweep 7 CPU time = 19h, 15m, 4s (Wall time = 1h, 14m, 4s)
vN Entropy at center bond b=31 = 3.326304698405
Eigs at center bond b=31: 0.1443 0.0974 0.0942 0.0918 0.0517 0.0515 0.0512 0.0307 0.0306 0.0305
Largest m during sweep 8 was 2400
Largest truncation error: 7.7723e-07
Energy after sweep 8 is -2.028666571067
Sweep 8 CPU time = 51h, 51m, 24s (Wall time = 3h, 21m, 48s)
vN Entropy at center bond b=31 = 3.330175270327
Eigs at center bond b=31: 0.1438 0.0951 0.0943 0.0936 0.0515 0.0515 0.0515 0.0308 0.0306 0.0305
Largest m during sweep 9 was 2400
Largest truncation error: 7.44263e-07
Energy after sweep 9 is -2.028703604404
Sweep 9 CPU time = 60h, 25m, 10s (Wall time = 3h, 56m, 10s)
vN Entropy at center bond b=31 = 3.331970553920
Eigs at center bond b=31: 0.1436 0.0945 0.0943 0.0941 0.0515 0.0514 0.0514 0.0307 0.0307 0.0306
Largest m during sweep 10 was 3000
Largest truncation error: 3.41021e-07
Energy after sweep 10 is -2.028913892348
Sweep 10 CPU time = 90h, 38m, 16s (Wall time = 5h, 57m, 43s)
vN Entropy at center bond b=31 = 3.332242493775
Eigs at center bond b=31: 0.1436 0.0944 0.0943 0.0942 0.0514 0.0514 0.0514 0.0307 0.0307 0.0306
Largest m during sweep 11 was 3000
Largest truncation error: 3.49115e-07
Energy after sweep 11 is -2.028914160267
Sweep 11 CPU time = 98h, 40m, 51s (Wall time = 6h, 30m, 59s)
I tried raising maxm to above 3200 and the upper bound is about 3500.
For higher N, it's getting more difficult.
My goal is to do finite size scaling to show some observables are zero.
I naively think the reasons could be the following:
1. Gapless even though it's spin-1 system.
2. MPS for the ground state is invalid since the entanglement.
Is there any way you suggest for me to resolve it?
Thank you very much!
for(int j = 1; j <= (N-1); ++j)
{
ampo += Kone/4.0,"Sp*Sp",j,"Sm*Sm",j+1;
ampo += Kone/4.0,"Sm*Sm",j,"Sp*Sp",j+1;
ampo += Kone/4.0,"Sp*Sm",j,"Sm*Sp",j+1;
ampo += Kone/4.0,"Sm*Sp",j,"Sp*Sm",j+1;
ampo += Kone/1.0,"Sz*Sz",j,"Sz*Sz",j+1;
ampo += Kone/2.0,"Sp*Sz",j,"Sm*Sz",j+1;
ampo += Kone/2.0,"Sm*Sz",j,"Sp*Sz",j+1;
ampo += Kone/2.0,"Sz*Sp",j,"Sz*Sm",j+1;
ampo += Kone/2.0,"Sz*Sm",j,"Sz*Sp",j+1;
}
for(int j = 1; j <= (N-2); ++j)
{
ampo += Ktwo/4.0,"Sp*Sp",j,"Sm*Sm",j+2;
ampo += Ktwo/4.0,"Sm*Sm",j,"Sp*Sp",j+2;
ampo += Ktwo/4.0,"Sp*Sm",j,"Sm*Sp",j+2;
ampo += Ktwo/4.0,"Sm*Sp",j,"Sp*Sm",j+2;
ampo += Ktwo/1.0,"Sz*Sz",j,"Sz*Sz",j+2;
ampo += Ktwo/2.0,"Sp*Sz",j,"Sm*Sz",j+2;
ampo += Ktwo/2.0,"Sm*Sz",j,"Sp*Sz",j+2;
ampo += Ktwo/2.0,"Sz*Sp",j,"Sz*Sm",j+2;
ampo += Ktwo/2.0,"Sz*Sm",j,"Sz*Sp",j+2;
}
for(int j = 1; j <= (N-3); ++j)
{
ampo += (-0.5)*Jp,"S+",j,"S-",j+3;
ampo += (-0.5)*Jp,"S-",j,"S+",j+3;
ampo += (-1.0)*Jp,"Sz",j,"Sz",j+3;
}
for(int j = 2; j <= (N-2); j=j+2)
{
ampo += (0.5_i)*lamda,"Sz",j,"Sp",j+1,"Sm",j+2;
ampo += -(0.5_i)*lamda,"Sz",j,"Sm",j+1,"Sp",j+2;
ampo += -(0.5_i)*lamda,"Sp",j,"Sz",j+1,"Sm",j+2;
ampo += (0.5_i)*lamda,"Sm",j,"Sz",j+1,"Sp",j+2;
ampo += (0.5_i)*lamda,"Sp",j,"Sm",j+1,"Sz",j+2;
ampo += -(0.5_i)*lamda,"Sm",j,"Sp",j+1,"Sz",j+2;
}
for(int j = 1; j <= (N-2); j=j+2)
{
ampo += -(0.5_i)*lamda,"Sz",j,"Sp",j+1,"Sm",j+2;
ampo += (0.5_i)*lamda,"Sz",j,"Sm",j+1,"Sp",j+2;
ampo += (0.5_i)*lamda,"Sp",j,"Sz",j+1,"Sm",j+2;
ampo += -(0.5_i)*lamda,"Sm",j,"Sz",j+1,"Sp",j+2;
ampo += -(0.5_i)*lamda,"Sp",j,"Sm",j+1,"Sz",j+2;
ampo += (0.5_i)*lamda,"Sm",j,"Sp",j+1,"Sz",j+2;
}
The parameters I used are Kone= 0.9 Ktwo= 0.1 Jp=1.0, lamda =0.001