@@ -348,20 +348,19 @@ function effective_excitation_renormalization_energy(H::Union{InfiniteMPO,
348348 lenvs,
349349 renvs)
350350 ψ_left = ϕ. left_gs
351- E_left = map (1 : length (ϕ)) do site
352- return contract_mpo_expval (ψ_left. AC[site], leftenv (lenvs, site, ψ_left),
353- H[site], rightenv (lenvs, site, ψ_left))
354- end
355-
356- ϕ. trivial && return E_left
357-
358351 ψ_right = ϕ. right_gs
359- E_right = map (1 : length (ϕ)) do site
360- return contract_mpo_expval (ψ_right. AC[site], leftenv (renvs, site, ψ_right),
361- H[site], rightenv (renvs, site, ψ_right))
362- end
363352
364- return (E_left .+ E_right) ./ 2
353+ E = Vector {scalartype(ϕ)} (undef, length (ϕ))
354+ for i in 1 : length (ϕ)
355+ E[i] = contract_mpo_expval (ψ_left. AC[i], leftenv (lenvs, i, ψ_left),
356+ H[i], rightenv (lenvs, i, ψ_left))
357+ if ! ϕ. trivial
358+ E[i] += contract_mpo_expval (ψ_right. AC[i], leftenv (renvs, i, ψ_right),
359+ H[i], rightenv (renvs, i, ψ_right))
360+ E[i] /= 2
361+ end
362+ end
363+ return E
365364end
366365
367366function effective_excitation_renormalization_energy (H, ϕ, lenvs, renvs)
0 commit comments