Skip to content

Commit 6aad2cd

Browse files
Restore outputlevel feature and test (#268)
1 parent beed105 commit 6aad2cd

4 files changed

Lines changed: 30 additions & 16 deletions

File tree

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ITensorNetworks"
22
uuid = "2919e153-833c-4bdc-8836-1ea460a35fc7"
33
authors = ["Matthew Fishman <mfishman@flatironinstitute.org>, Joseph Tindall <jtindall@flatironinstitute.org> and contributors"]
4-
version = "0.15.4"
4+
version = "0.15.5"
55

66
[deps]
77
AbstractTrees = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"

src/solvers/applyexp.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ end
6262
function default_sweep_callback(
6363
sweep_iterator::SweepIterator{<:ApplyExpProblem};
6464
exponent_description = "exponent",
65-
outputlevel = 0,
6665
process_time = identity,
6766
)
67+
outputlevel = get(region_kwargs(region_iterator(sweep_iterator)), :outputlevel, 0)
6868
return if outputlevel >= 1
6969
the_problem = problem(sweep_iterator)
7070
@printf(

src/solvers/eigsolve.jl

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ end
2323
function update!(
2424
region_iter::RegionIterator{<:EigsolveProblem},
2525
local_state;
26-
outputlevel = 0,
2726
solver = eigsolve_solver,
2827
)
2928
prob = problem(region_iter)
@@ -34,33 +33,31 @@ function update!(
3433

3534
prob.eigenvalue = eigval
3635

36+
outputlevel = get(region_kwargs(region_iter), :outputlevel, 0)
3737
if outputlevel >= 2
3838
@printf(" Region %s: energy = %.12f\n", current_region(region_iter), eigenvalue(prob))
3939
end
4040
return region_iter, local_state
4141
end
4242

4343
function default_sweep_callback(
44-
sweep_iterator::SweepIterator{<:EigsolveProblem}; outputlevel = 0
44+
sweep_iterator::SweepIterator{<:EigsolveProblem}
4545
)
46+
outputlevel = get(region_kwargs(region_iterator(sweep_iterator)), :outputlevel, 0)
4647
return if outputlevel >= 1
47-
nsweeps = length(sweep_iterator)
4848
current_sweep = sweep_iterator.which_sweep
49-
if length(sweep_iterator) >= 10
50-
@printf("After sweep %02d/%d ", current_sweep, nsweeps)
51-
else
52-
@printf("After sweep %d/%d ", current_sweep, nsweeps)
53-
end
54-
@printf("eigenvalue=%.12f", eigenvalue(problem))
55-
@printf(" maxlinkdim=%d", maxlinkdim(state(problem)))
56-
@printf(" max truncerror=%d", max_truncerror(problem))
49+
the_problem = problem(sweep_iterator)
50+
@printf("After sweep %d ", current_sweep)
51+
@printf("eigenvalue=%.12f", eigenvalue(the_problem))
52+
@printf(" maxlinkdim=%d", maxlinkdim(state(the_problem)))
53+
@printf(" max truncerror=%d", max_truncerror(the_problem))
5754
println()
5855
flush(stdout)
5956
end
6057
end
6158

6259
function eigsolve(
63-
operator, init_state; nsweeps, nsites = 1, outputlevel = 0, factorize_kwargs, sweep_kwargs...
60+
operator, init_state; nsweeps, nsites = 1, factorize_kwargs, sweep_kwargs...
6461
)
6562
init_prob = EigsolveProblem(;
6663
state = align_indices(init_state), operator = ProjTTN(align_indices(operator))
@@ -69,7 +66,6 @@ function eigsolve(
6966
init_prob,
7067
nsweeps;
7168
nsites,
72-
outputlevel,
7369
factorize_kwargs,
7470
subspace_expand!_kwargs = (; eigen_kwargs = factorize_kwargs),
7571
sweep_kwargs...,

test/solvers/test_eigsolve.jl

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ using ITensorNetworks: siteinds, ttn, dmrg
44
using Graphs: dst, edges, src, vertices
55
using ITensorMPS: OpSum
66
using TensorOperations: TensorOperations #For contraction order finding
7+
using Suppressor: @capture_out
78

89
include("utilities/simple_ed_methods.jl")
910
include("utilities/tree_graphs.jl")
@@ -68,7 +69,24 @@ include("utilities/tree_graphs.jl")
6869
#
6970
nsites = 2
7071
factorize_kwargs = (; cutoff = [1.0e-5, 1.0e-6], maxdim = [8, 16, 32])
71-
E, psi = dmrg(H, psi0; factorize_kwargs, nsites, nsweeps, outputlevel)
72+
E, psi = dmrg(H, psi0; factorize_kwargs, nsites, nsweeps, outputlevel = 0)
7273
(outputlevel >= 1) && println("2-site DMRG energy = ", E)
7374
@test E Ex atol = 1.0e-5
75+
76+
#
77+
# Test that outputlevel > 0 generates output
78+
# and outputlevel == 0 generates no output
79+
#
80+
nsweeps = 2
81+
outputlevel = 1
82+
output = @capture_out begin
83+
dmrg(H, psi0; factorize_kwargs, nsweeps, outputlevel)
84+
end
85+
@test length(output) > 0
86+
87+
outputlevel = 0
88+
output = @capture_out begin
89+
dmrg(H, psi0; factorize_kwargs, nsweeps, outputlevel)
90+
end
91+
@test length(output) == 0
7492
end

0 commit comments

Comments
 (0)