Hello all,
I am learning the example program in ITensorTDVP.jl.I successfully ran the program in the example and concluded that the ground state energy obtained using the “TDVP”, “dmrg”, and “ITensorTDVP.dmrg” functions is almost consistent.
ϕ = tdvp(
H,
-1.0,
ψ;
nsweeps=20,
reverse_step=false,
normalize=true,
maxdim=30,
cutoff=1e-10,
outputlevel=1,
)
e2, ϕ2 = dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10)
ϕ3 = ITensorTDVP.dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10, outputlevel=1)
out:
inner(ϕ', H, ϕ) / inner(ϕ, ϕ) = -3.8557706724019356
inner(ϕ2', H, ϕ2) / inner(ϕ2, ϕ2) = -3.8557718806577608
inner(ϕ3', H, ϕ3) / inner(ϕ3, ϕ3) = -3.85577188065776
But when I use “dmrg_x” in the second example program, i obtained some different results.
ϕ4 = dmrg_x(H, ψ; nsweeps=10, reverse_step=false, normalize=true, maxdim=20, cutoff=1e-10, outputlevel=1)
out:
inner(ϕ4', H, ϕ4) / inner(ϕ4, ϕ4) = -2.0108634600077835
It is obvious that the energy obtained by “dmrg_x” is significantly different from the previous three. I don’t understand if it’s because of my incorrect parameter settings or my incorrect usage of these functions.
And the running time of “dmrg_x” is significantly longer than those
e2, ϕ2 = dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10)
After sweep 1 energy=-3.855675239456714 maxlinkdim=20 maxerr=2.02E-06 time=0.027
After sweep 2 energy=-3.85577157471479 maxlinkdim=20 maxerr=3.00E-07 time=0.021
After sweep 3 energy=-3.8557716229615386 maxlinkdim=20 maxerr=2.89E-07 time=0.028
After sweep 4 energy=-3.8557716700495535 maxlinkdim=20 maxerr=2.74E-07 time=0.025
After sweep 5 energy=-3.8557717129654874 maxlinkdim=20 maxerr=2.59E-07 time=0.028
After sweep 6 energy=-3.8557717540676437 maxlinkdim=20 maxerr=2.44E-07 time=0.038
After sweep 7 energy=-3.855771793233654 maxlinkdim=20 maxerr=2.31E-07 time=0.023
After sweep 8 energy=-3.85577183038367 maxlinkdim=20 maxerr=2.19E-07 time=0.022
After sweep 9 energy=-3.855771865602356 maxlinkdim=20 maxerr=2.08E-07 time=0.024
After sweep 10 energy=-3.8557718989883014 maxlinkdim=20 maxerr=1.97E-07 time=0.026
ϕ3 = ITensorTDVP.dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10, outputlevel=1)
After sweep 1: maxlinkdim=20 maxerr=2.02E-06 current_time=Inf time=0.035
After sweep 2: maxlinkdim=20 maxerr=3.00E-07 current_time=Inf time=0.019
After sweep 3: maxlinkdim=20 maxerr=2.82E-07 current_time=Inf time=0.024
After sweep 4: maxlinkdim=20 maxerr=2.67E-07 current_time=Inf time=0.027
After sweep 5: maxlinkdim=20 maxerr=2.51E-07 current_time=Inf time=0.027
After sweep 6: maxlinkdim=20 maxerr=2.37E-07 current_time=Inf time=0.059
After sweep 7: maxlinkdim=20 maxerr=2.25E-07 current_time=Inf time=0.03
After sweep 8: maxlinkdim=20 maxerr=2.13E-07 current_time=Inf time=0.021
After sweep 9: maxlinkdim=20 maxerr=2.02E-07 current_time=Inf time=0.026
After sweep 10: maxlinkdim=20 maxerr=1.92E-07 current_time=Inf time=0.028
ϕ4 = dmrg_x(H, ψ; nsweeps=10, reverse_step=false, normalize=true, maxdim=20, cutoff=1e-10, outputlevel=1)
After sweep 1: maxlinkdim=20 maxerr=6.52E-03 current_time=Inf time=1.132
After sweep 2: maxlinkdim=20 maxerr=8.37E-03 current_time=Inf time=1.615
After sweep 3: maxlinkdim=20 maxerr=6.05E-03 current_time=Inf time=1.553
After sweep 4: maxlinkdim=20 maxerr=2.37E-03 current_time=Inf time=1.912
After sweep 5: maxlinkdim=20 maxerr=2.41E-03 current_time=Inf time=1.623
After sweep 6: maxlinkdim=20 maxerr=4.68E-03 current_time=Inf time=1.723
After sweep 7: maxlinkdim=20 maxerr=5.73E-03 current_time=Inf time=1.675
After sweep 8: maxlinkdim=20 maxerr=9.67E-03 current_time=Inf time=1.731
After sweep 9: maxlinkdim=20 maxerr=3.57E-03 current_time=Inf time=1.69
After sweep 10: maxlinkdim=20 maxerr=4.14E-03 current_time=Inf time=1.79
If there could be a detailed tutorial document on TDVP, I believe it would reduce a lot of unnecessary inquiries.
Thank you for your time.