Skip to content

Commit 36cea64

Browse files
committed
test
1 parent 3a4d7d2 commit 36cea64

3 files changed

Lines changed: 42 additions & 1 deletion

File tree

src/algorithms/expval.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,13 @@ function expectation_value(
128128
return dot(ψ, H, ψ, envs) / dot(ψ, ψ)
129129
end
130130

131+
function expectation_value(
132+
ψ::WindowMPS, H::WindowMPOHamiltonian,
133+
envs::AbstractMPSEnvironments = environments(ψ, H)
134+
)
135+
return dot(ψ, H, ψ, envs) / dot(ψ, ψ)
136+
end
137+
131138
function expectation_value(
132139
ψ::InfiniteMPS, H::InfiniteMPOHamiltonian,
133140
envs::AbstractMPSEnvironments = environments(ψ, H)

src/operators/windowhamiltonian.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,8 @@ Base.copy(h::WindowMPOHamiltonian) = WindowMPOHamiltonian(copy(h.left_ham), copy
3434
for fun in (:(Base.:+), :(Base.:-), :(Base.:*))
3535
@eval $fun(a::WindowMPOHamiltonian,b::WindowMPOHamiltonian) = WindowMPOHamiltonian($fun(a.left_ham,b.left_ham),$fun(a.finite_ham,b.finite_ham),$fun(a.right_ham,b.right_ham))
3636
end
37+
38+
TensorKit.dot(
39+
bra::WindowMPS, H::WindowMPOHamiltonian, ket::WindowMPS = bra,
40+
envs = environments(bra, H, ket)
41+
) = dot(bra.window, H.finite_ham, ket.window,envs)

test/algorithms/dynamical_dmrg.jl

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ using TensorKit: ℙ
1212

1313
verbosity_conv = 1
1414

15-
@testset "Dynamical DMRG" verbose = true begin
15+
@testset "Dynamical DMRG FiniteMPS" verbose = true begin
1616
L = 10
1717
H = force_planar(-transverse_field_ising(; L, g = -4))
1818
gs, = find_groundstate(FiniteMPS(L, ℙ^2, ℙ^10), H; verbosity = verbosity_conv)
@@ -32,3 +32,32 @@ verbosity_conv = 1
3232
@test data predicted atol = 1.0e-8
3333
end
3434
end
35+
36+
37+
@testset "Dynamical DMRG WindowMPS" verbose = true begin
38+
N = 20
39+
40+
H = transverse_field_ising(g = -4)
41+
Ω = InfiniteMPS(ComplexSpace(2),ComplexSpace(20))
42+
43+
(Ω,_) = find_groundstate(Ω, H, VUMPS(verbosity = verbosity_conv))
44+
= WindowMPS(Ω,N)
45+
H_w = WindowMPOHamiltonian(H,1:N)
46+
47+
48+
gs_en = expectation_value(XΩ, H_w)
49+
vals = range(gs_en - 1.0,gs_en+1.0, length=5)
50+
eta = 0.3im
51+
predicted = [1 / (v + eta - gs_en) for v in vals]
52+
53+
54+
@testset "Flavour $f" for f in (Jeckelmann(), NaiveInvert())
55+
alg = DynamicalDMRG(; flavour = f, verbosity = 0, tol = 1.0e-8)
56+
data = map(vals) do v
57+
result, = propagator(XΩ, v + eta, H_w, alg)
58+
return result
59+
end
60+
@test data predicted atol = 1.0e-8
61+
end
62+
end
63+

0 commit comments

Comments
 (0)