Hi ITensor teams
I’m trying to use ITensorInfniteMPS package to do some real time evolution works. As a test, I try to compute a one step real time evolution for a transverse field Ising model first. I do the subspace expansion before applying the tdvp function and set the maxiter = 50 and tol=1e-8. I printed out the information of every tdvp iteration and noticed that the precision error remain to have a magnitude of 10^{-3} after all 50 iterations, much larger than the threshold of tol = 1e-8. Is this normal or I have done something wrong? Here is my code:
using ITensors, ITensorMPS
using ITensorInfiniteMPS
let
nsites = 3
maxiter, tol = 100, 1e-8
maxdim, cutoff = 100, 1e-14
initstate(n) = mod(n, nsites) == 1 ? "Up" : "Dn"
ss = infsiteinds("S=1/2", nsites; initstate)
psi = InfMPS(ss, initstate)
model = Model("ising")
H = InfiniteSum{ITensor}(model, ss; J = 1.0, h=0.8)
psi = subspace_expansion(psi, H; maxdim=maxdim, cutoff=cutoff)
psi = tdvp(H, psi; time_step=0.1, tol=tol, maxiter=maxiter)
end
And final 5 iterations
VUMPS iteration 46 (out of maximum 50). Bond dimension = 2, energy = ([1.1599998951234851, 1.1599998072590256, 1.1599999304720359], [1.1600000023866295, 1.1599999278474808, 1.1600000218924635]), ϵᵖʳᵉˢ = 0.0002929457724205573, tol = 1.0e-8, iteration time = 0.0311872 seconds
VUMPS iteration 47 (out of maximum 50). Bond dimension = 2, energy = ([1.1599999284613192, 1.159999865527807, 1.1599999412781012], [1.1600000071743486, 1.1599999380471147, 1.160000019804393]), ϵᵖʳᵉˢ = 0.0002442716886668837, tol = 1.0e-8, iteration time = 0.0323065 seconds
VUMPS iteration 48 (out of maximum 50). Bond dimension = 2, energy = ([1.1599999524411813, 1.1599999055070491, 1.1599999514844401], [1.1600000090453244, 1.1599999502934502, 1.1600000151947742]), ϵᵖʳᵉˢ = 0.00020277009425373363, tol = 1.0e-8, iteration time = 0.0325951 seconds
VUMPS iteration 49 (out of maximum 50). Bond dimension = 2, energy = ([1.1599999683770972, 1.1599999339900078, 1.1599999607334055], [1.160000009286607, 1.1599999611122698, 1.1600000111188806]), ϵᵖʳᵉˢ = 0.00016755121765308476, tol = 1.0e-8, iteration time = 0.0300417 seconds
VUMPS iteration 50 (out of maximum 50). Bond dimension = 2, energy = ([1.159999978373851, 1.159999954691704, 1.1599999688099527], [1.1600000086743296, 1.1599999696367151, 1.1600000083484092]), ϵᵖʳᵉˢ = 0.00013771656666695183, tol = 1.0e-8, iteration time = 0.0337534 seconds
3-element InfiniteCanonicalMPS:
((dim=2|id=758|"Link,c=0,l=3"), (dim=2|id=521|"S=1/2,Site,c=1,n=1"), (dim=2|id=611|"Link,c=1,l=1"))
((dim=2|id=611|"Link,c=1,l=1"), (dim=2|id=54|"S=1/2,Site,c=1,n=2"), (dim=2|id=903|"Link,c=1,l=2"))
((dim=2|id=903|"Link,c=1,l=2"), (dim=2|id=191|"S=1/2,Site,c=1,n=3"), (dim=2|id=758|"Link,c=1,l=3"))
I also have a further question: if I want to do many steps of such time evolution, do I need to do the subspace expansion before each step of tdvp?
I would appreciate any help!