@@ -53,22 +53,24 @@ ITensors.disable_auto_fermion()
5353 psi_mps = ITensorMPS. MPS ([psi[v] for v in 1 : nv (psi)])
5454 e2, psi2 = dmrg (H_mpo, psi_mps; nsweeps, maxdim, outputlevel= 0 )
5555
56- psi = dmrg (
56+ e, psi = dmrg (
5757 H, psi; nsweeps, maxdim, cutoff, nsites, updater_kwargs= (; krylovdim= 3 , maxiter= 1 )
5858 )
59+ @test inner (psi' , H, psi) ≈ e
5960 @test inner (psi' , H, psi) ≈ inner (psi2' , H_mpo, psi2)
6061
6162 # Alias for `ITensorNetworks.dmrg`
62- psi = eigsolve (
63+ e, psi = eigsolve (
6364 H, psi; nsweeps, maxdim, cutoff, nsites, updater_kwargs= (; krylovdim= 3 , maxiter= 1 )
6465 )
66+ @test inner (psi' , H, psi) ≈ e
6567 @test inner (psi' , H, psi) ≈ inner (psi2' , H_mpo, psi2)
6668
6769 # Test custom sweep regions #BROKEN, ToDo: Make proper custom sweep regions for test
6870 #=
6971 orig_E = inner(psi', H, psi)
7072 sweep_regions = [[1], [2], [3], [3], [2], [1]]
71- psi = dmrg(H, psi; nsweeps, maxdim, cutoff, sweep_regions)
73+ e, psi = dmrg(H, psi; nsweeps, maxdim, cutoff, sweep_regions)
7274 new_E = inner(psi', H, psi)
7375 @test new_E ≈ orig_E
7476 =#
@@ -101,13 +103,14 @@ end
101103 energy (; eigvals, kw... ) = eigvals[1 ]
102104 region_observer! = observer (region, sweep, energy)
103105
104- psi = dmrg (H, psi; nsweeps, maxdim, cutoff, sweep_observer!, region_observer!)
106+ e, psi = dmrg (H, psi; nsweeps, maxdim, cutoff, sweep_observer!, region_observer!)
105107
106108 #
107109 # Test out certain values
108110 #
109111 @test region_observer![9 , :region ] == [2 , 1 ]
110112 @test region_observer![30 , :energy ] < - 4.25
113+ @test region_observer![30 , :energy ] ≈ e rtol = 1e-6
111114end
112115
113116@testset " Cache to Disk" begin
126129 nsweeps = 4
127130 maxdim = [10 , 20 , 40 , 80 ]
128131
129- @test_broken psi = dmrg (
132+ @test_broken e, psi = dmrg (
130133 H,
131134 psi;
132135 nsweeps,
160163 maxdim = [200 , 250 , 400 , 600 , 800 , 1200 , 2000 , 2400 , 2600 , 3000 ]
161164 cutoff = [1e-10 , 1e-10 , 1e-12 , 1e-12 , 1e-12 , 1e-12 , 1e-14 , 1e-14 , 1e-14 , 1e-14 ]
162165
163- psi = dmrg (H, psi; nsweeps, maxdim, cutoff)
166+ e, psi = dmrg (H, psi; nsweeps, maxdim, cutoff)
164167end
165168
166169@testset " Tree DMRG" for nsites in [2 ]
195198 nsweeps = 10
196199 maxdim = [10 , 20 , 40 , 100 ]
197200 @show use_qns
198- psi = dmrg (
201+ e, psi = dmrg (
199202 H, psi; nsweeps, maxdim, cutoff, nsites, updater_kwargs= (; krylovdim= 3 , maxiter= 1 )
200203 )
201204
252255 end
253256 states = v -> d[v]
254257 psi = ttn (states, s)
255- psi = dmrg (
258+ e, psi = dmrg (
256259 H, psi; nsweeps, maxdim, cutoff, nsites, updater_kwargs= (; krylovdim= 3 , maxiter= 1 )
257260 )
258261
280283 os = ModelHamiltonians. heisenberg (c)
281284 H = ttn (os, s)
282285 psi = random_ttn (s; link_space= 5 )
283- psi = dmrg (H, psi; nsweeps, maxdim, nsites)
286+ e, psi = dmrg (H, psi; nsweeps, maxdim, nsites)
284287
285288 @test all (edge_data (linkdims (psi)) .<= maxdim)
286289end
0 commit comments