From 537c1b1e043da61170efe0c60d13250f94cdebf8 Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Tue, 16 Sep 2025 14:34:00 +0200 Subject: [PATCH] update objective printing for IDMRG --- src/algorithms/groundstate/idmrg.jl | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/algorithms/groundstate/idmrg.jl b/src/algorithms/groundstate/idmrg.jl index 3fd4653fc..413d408cd 100644 --- a/src/algorithms/groundstate/idmrg.jl +++ b/src/algorithms/groundstate/idmrg.jl @@ -28,10 +28,13 @@ function find_groundstate(ost::InfiniteMPS, H, alg::IDMRG, envs = environments(o ϵ::Float64 = calc_galerkin(ost, H, ost, envs) ψ = copy(ost) log = IterLog("IDMRG") - local iter + local iter, E_current LoggingExtras.withlevel(; alg.verbosity) do - @infov 2 loginit!(log, ϵ, expectation_value(ψ, H, envs)) + @infov 2 begin + E_current = expectation_value(ψ, H, envs) + loginit!(log, ϵ, E_current) + end for outer iter in 1:(alg.maxiter) alg_eigsolve = updatetol(alg.alg_eigsolve, iter, ϵ) C_current = ψ.C[0] @@ -63,13 +66,28 @@ function find_groundstate(ost::InfiniteMPS, H, alg::IDMRG, envs = environments(o ϵ = norm(C_current - ψ.C[0]) if ϵ < alg.tol - @infov 2 logfinish!(log, iter, ϵ, expectation_value(ψ, H, envs)) + @infov 2 begin + E_next = expectation_value(ψ, H, envs) + ΔE = E_next - E_current + E_current = E_next + logfinish!(log, iter, ϵ, ΔE) + end break end if iter == alg.maxiter - @warnv 1 logcancel!(log, iter, ϵ, expectation_value(ψ, H, envs)) + @warnv 1 begin + E_next = expectation_value(ψ, H, envs) + ΔE = E_next - E_current + E_current = E_next + logcancel!(log, iter, ϵ, ΔE) + end else - @infov 3 logiter!(log, iter, ϵ, expectation_value(ψ, H, envs)) + @infov 3 begin + E_next = expectation_value(ψ, H, envs) + ΔE = E_next - E_current + E_current = E_next + logiter!(log, iter, ϵ, ΔE) + end end end end