Skip to content

Commit 510be3e

Browse files
committed
apply Lukas comments
1 parent 0aa0ecb commit 510be3e

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

src/algorithms/groundstate/idmrg.jl

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ struct IDMRGState{S, O, E, T}
6363
operator::O
6464
envs::E
6565
iter::Int
66-
ϵ::Float64
66+
ϵ::Float64 # TODO: Could be any <:Real
6767
energy::T
6868
end
6969
function IDMRGState{T}(mps::S, operator::O, envs::E, iter::Int, ϵ::Float64, energy) where {S, O, E, T}
@@ -76,7 +76,7 @@ function find_groundstate(mps, operator, alg::alg_type, envs = environments(mps,
7676
mps = copy(mps)
7777
iter = 0
7878
ϵ = calc_galerkin(mps, operator, mps, envs)
79-
E = zero(Base.promote_type(scalartype(mps), scalartype(operator)))
79+
E = zero(TensorOperations.promote_contract(scalartype(mps), scalartype(operator)))
8080

8181
LoggingExtras.withlevel(; alg.verbosity) do
8282
@infov 2 begin
@@ -136,16 +136,21 @@ function Base.iterate(
136136
return (mps, envs, ϵ, ΔE), it.state
137137
end
138138

139-
function MPSKit.localupdate_step!(
140-
it::IterativeSolver{<:Union{IDMRG, IDMRG2}}, state
139+
function localupdate_step!(
140+
it::IterativeSolver{<:IDMRG}, state
141141
)
142142
alg_eigsolve = updatetol(it.alg_eigsolve, state.iter, state.ϵ)
143-
mps, envs, C_old, E = _localupdate_sweep_idmrg!(state.mps, state.operator, state.envs, alg_eigsolve, it.alg)
143+
return _localupdate_sweep_idmrg!(state.mps, state.operator, state.envs, alg_eigsolve)
144+
end
144145

145-
return mps, envs, C_old, E
146+
function localupdate_step!(
147+
it::IterativeSolver{<:IDMRG2}, state
148+
)
149+
alg_eigsolve = updatetol(it.alg_eigsolve, state.iter, state.ϵ)
150+
return _localupdate_sweep_idmrg2!(state.mps, state.operator, state.envs, alg_eigsolve, it.trscheme, it.alg_svd)
146151
end
147152

148-
function _localupdate_sweep_idmrg!(ψ, H, envs, alg_eigsolve, ::IDMRG)
153+
function _localupdate_sweep_idmrg!(ψ, H, envs, alg_eigsolve)
149154
local E
150155
C_old = ψ.C[0]
151156
# left to right sweep
@@ -175,14 +180,14 @@ function _localupdate_sweep_idmrg!(ψ, H, envs, alg_eigsolve, ::IDMRG)
175180
end
176181

177182

178-
function _localupdate_sweep_idmrg!(ψ, H, envs, alg_eigsolve, alg::IDMRG2)
183+
function _localupdate_sweep_idmrg2!(ψ, H, envs, alg_eigsolve, alg_trscheme, alg_svd)
179184
# sweep from left to right
180185
for pos in 1:(length(ψ) - 1)
181186
ac2 = AC2(ψ, pos; kind = :ACAR)
182187
h_ac2 = AC2_hamiltonian(pos, ψ, H, ψ, envs)
183188
_, ac2′ = fixedpoint(h_ac2, ac2, :SR, alg_eigsolve)
184189

185-
al, c, ar = svd_trunc!(ac2′; trunc = alg.trscheme, alg = alg.alg_svd)
190+
al, c, ar = svd_trunc!(ac2′; trunc = alg_trscheme, alg = alg_svd)
186191
normalize!(c)
187192

188193
ψ.AL[pos] = al
@@ -201,7 +206,7 @@ function _localupdate_sweep_idmrg!(ψ, H, envs, alg_eigsolve, alg::IDMRG2)
201206
h_ac2 = AC2_hamiltonian(0, ψ, H, ψ, envs)
202207
_, ac2′ = fixedpoint(h_ac2, ac2, :SR, alg_eigsolve)
203208

204-
al, c, ar = svd_trunc!(ac2′; trunc = alg.trscheme, alg = alg.alg_svd)
209+
al, c, ar = svd_trunc!(ac2′; trunc = alg_trscheme, alg = alg_svd)
205210
normalize!(c)
206211

207212
ψ.AL[end] = al
@@ -224,7 +229,7 @@ function _localupdate_sweep_idmrg!(ψ, H, envs, alg_eigsolve, alg::IDMRG2)
224229
h_ac2 = AC2_hamiltonian(pos, ψ, H, ψ, envs)
225230
_, ac2′ = fixedpoint(h_ac2, ac2, :SR, alg_eigsolve)
226231

227-
al, c, ar = svd_trunc!(ac2′; trunc = alg.trscheme, alg = alg.alg_svd)
232+
al, c, ar = svd_trunc!(ac2′; trunc = alg_trscheme, alg = alg_svd)
228233
normalize!(c)
229234

230235
ψ.AL[pos] = al
@@ -243,7 +248,7 @@ function _localupdate_sweep_idmrg!(ψ, H, envs, alg_eigsolve, alg::IDMRG2)
243248
ac2 = AC2(ψ, 0; kind = :ACAR)
244249
h_ac2 = AC2_hamiltonian(0, ψ, H, ψ, envs)
245250
E, ac2′ = fixedpoint(h_ac2, ac2, :SR, alg_eigsolve)
246-
al, c, ar = svd_trunc!(ac2′; trunc = alg.trscheme, alg = alg.alg_svd)
251+
al, c, ar = svd_trunc!(ac2′; trunc = alg_trscheme, alg = alg_svd)
247252
normalize!(c)
248253

249254
ψ.AL[end] = al

0 commit comments

Comments
 (0)