Skip to content

Commit 5675224

Browse files
authored
update objective printing for IDMRG (#323)
1 parent a34817d commit 5675224

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

src/algorithms/groundstate/idmrg.jl

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,13 @@ function find_groundstate(ost::InfiniteMPS, H, alg::IDMRG, envs = environments(o
2828
ϵ::Float64 = calc_galerkin(ost, H, ost, envs)
2929
ψ = copy(ost)
3030
log = IterLog("IDMRG")
31-
local iter
31+
local iter, E_current
3232

3333
LoggingExtras.withlevel(; alg.verbosity) do
34-
@infov 2 loginit!(log, ϵ, expectation_value(ψ, H, envs))
34+
@infov 2 begin
35+
E_current = expectation_value(ψ, H, envs)
36+
loginit!(log, ϵ, E_current)
37+
end
3538
for outer iter in 1:(alg.maxiter)
3639
alg_eigsolve = updatetol(alg.alg_eigsolve, iter, ϵ)
3740
C_current = ψ.C[0]
@@ -63,13 +66,28 @@ function find_groundstate(ost::InfiniteMPS, H, alg::IDMRG, envs = environments(o
6366
ϵ = norm(C_current - ψ.C[0])
6467

6568
if ϵ < alg.tol
66-
@infov 2 logfinish!(log, iter, ϵ, expectation_value(ψ, H, envs))
69+
@infov 2 begin
70+
E_next = expectation_value(ψ, H, envs)
71+
ΔE = E_next - E_current
72+
E_current = E_next
73+
logfinish!(log, iter, ϵ, ΔE)
74+
end
6775
break
6876
end
6977
if iter == alg.maxiter
70-
@warnv 1 logcancel!(log, iter, ϵ, expectation_value(ψ, H, envs))
78+
@warnv 1 begin
79+
E_next = expectation_value(ψ, H, envs)
80+
ΔE = E_next - E_current
81+
E_current = E_next
82+
logcancel!(log, iter, ϵ, ΔE)
83+
end
7184
else
72-
@infov 3 logiter!(log, iter, ϵ, expectation_value(ψ, H, envs))
85+
@infov 3 begin
86+
E_next = expectation_value(ψ, H, envs)
87+
ΔE = E_next - E_current
88+
E_current = E_next
89+
logiter!(log, iter, ϵ, ΔE)
90+
end
7391
end
7492
end
7593
end

0 commit comments

Comments
 (0)