Skip to content

Commit 41cc5d1

Browse files
committed
Fixes mostly related to return values of solvers
1 parent d46060e commit 41cc5d1

File tree

6 files changed

+13
-6
lines changed

6 files changed

+13
-6
lines changed

src/treetensornetworks/solvers/contract.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ function contract_solver(PH, psi; kwargs...)
44
v *= PH.psi0[j]
55
end
66
Hpsi0 = contract(PH, v)
7-
return Hpsi0, nothing
7+
return Hpsi0, NamedTuple()
88
end
99

1010
function contract(

src/treetensornetworks/solvers/dmrg_x.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ function dmrg_x_solver(PH, init; kwargs...)
44
u = uniqueind(U, H)
55
max_overlap, max_ind = findmax(abs, array(dag(init) * U))
66
U_max = U * dag(onehot(u => max_ind))
7-
return U_max, (;)
7+
# TODO: improve this to return the energy estimate too
8+
return U_max, NamedTuple()
89
end
910

1011
function dmrg_x(PH, init::AbstractTTN; kwargs...)

src/treetensornetworks/solvers/linsolve.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ function linsolve(
4444
)
4545
b = dag(only(proj_mps(P)))
4646
x, info = KrylovKit.linsolve(P, b, x₀, a₀, a₁; solver_kwargs...)
47-
return x, nothing
47+
return x, NamedTuple()
4848
end
4949

5050
error("`linsolve` for TTN not yet implemented.")

src/treetensornetworks/solvers/update_step.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,10 @@ function local_update(
172172
PH = position(PH, psi, region)
173173

174174
phi, info = solver(PH, phi; normalize, region, step_kwargs..., kwargs...)
175+
if !(phi isa ITensor && info isa NamedTuple)
176+
println("Solver returned the following types: $(typeof(phi)), $(typeof(info))")
177+
error("In alternating_update, solver must return an ITensor and a NamedTuple")
178+
end
175179
normalize && (phi /= norm(phi))
176180

177181
drho = nothing

test/test_treetensornetworks/test_solvers/test_dmrg.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ end
8080
# Test out certain values
8181
#
8282
@test step_observer![9, :region] == [2, 1]
83-
@test step_observer![30, :energy] < -4.258
83+
@test step_observer![30, :energy] < -4.25
8484
end
8585

8686
@testset "Regression test: Arrays of Parameters" begin

test/test_treetensornetworks/test_solvers/test_tdvp_time_dependent.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,24 @@ ode_kwargs = (; reltol=1e-8, abstol=1e-8)
2525
f⃗ = [t -> cos* t) for ω in ω⃗]
2626

2727
function tdvp_ode_solver(H⃗₀, ψ₀; time_step, kwargs...)
28-
return ode_solver(
28+
psi_t, info = ode_solver(
2929
-im * TimeDependentSum(f⃗, H⃗₀), time_step, ψ₀; solver_alg=ode_alg, ode_kwargs...
3030
)
31+
return psi_t, (; info)
3132
end
3233

3334
krylov_kwargs = (; tol=1e-8, eager=true)
3435

3536
function krylov_solver(H⃗₀, ψ₀; time_step, ishermitian=false, issymmetric=false, kwargs...)
36-
return krylov_solver(
37+
psi_t, info = krylov_solver(
3738
-im * TimeDependentSum(f⃗, H⃗₀),
3839
time_step,
3940
ψ₀;
4041
krylov_kwargs...,
4142
ishermitian,
4243
issymmetric,
4344
)
45+
return psi_t, (; info)
4446
end
4547

4648
@testset "MPS: Time dependent Hamiltonian" begin

0 commit comments

Comments
 (0)