Skip to content

Commit 999206b

Browse files
committed
Use Accessors.@set to simplify some code
1 parent 32626ef commit 999206b

File tree

4 files changed

+18
-31
lines changed

4 files changed

+18
-31
lines changed

Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ version = "0.14.0"
55

66
[deps]
77
AbstractTrees = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
8+
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
89
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
910
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
1011
ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
@@ -51,6 +52,7 @@ ITensorNetworksTensorOperationsExt = "TensorOperations"
5152

5253
[compat]
5354
AbstractTrees = "0.4.4"
55+
Accessors = "0.1.42"
5456
Adapt = "4"
5557
Combinatorics = "1"
5658
Compat = "3, 4"

src/solvers/applyexp.jl

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Printf: @printf
2+
using Accessors: @set
23

34
@kwdef mutable struct ApplyExpProblem{State} <: AbstractProblem
45
operator
@@ -14,15 +15,9 @@ function current_time(A::ApplyExpProblem)
1415
return iszero(imag(t)) ? real(t) : t
1516
end
1617

17-
function set_operator(A::ApplyExpProblem, operator)
18-
ApplyExpProblem(operator, A.state, A.current_exponent)
19-
end
20-
function set_state(A::ApplyExpProblem, state)
21-
ApplyExpProblem(A.operator, state, A.current_exponent)
22-
end
23-
function set_current_exponent(A::ApplyExpProblem, current_exponent)
24-
ApplyExpProblem(A.operator, A.state, current_exponent)
25-
end
18+
set_operator(A::ApplyExpProblem, operator) = (@set A.operator = operator)
19+
set_state(A::ApplyExpProblem, state) = (@set A.state = state)
20+
set_current_exponent(A::ApplyExpProblem, exponent) = (@set A.current_exponent = exponent)
2621

2722
function region_plan(A::ApplyExpProblem; nsites, time_step, sweep_kwargs...)
2823
return applyexp_regions(state(A), time_step; nsites, sweep_kwargs...)

src/solvers/eigsolve.jl

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,27 @@
1+
using Accessors: @set
12
using Printf: @printf
23
using ITensors: truncerror
34

45
@kwdef mutable struct EigsolveProblem{State,Operator} <: AbstractProblem
56
operator::Operator
67
state::State
78
eigenvalue::Number = Inf
8-
max_truncerr::Real = 0.0
9+
max_truncerror::Real = 0.0
910
end
1011

1112
eigenvalue(E::EigsolveProblem) = E.eigenvalue
1213
state(E::EigsolveProblem) = E.state
1314
operator(E::EigsolveProblem) = E.operator
14-
max_truncerr(E::EigsolveProblem) = E.max_truncerr
15+
max_truncerror(E::EigsolveProblem) = E.max_truncerror
1516

16-
function set_operator(E::EigsolveProblem, operator)
17-
EigsolveProblem(operator, E.state, E.eigenvalue, E.max_truncerr)
18-
end
19-
function set_eigenvalue(E::EigsolveProblem, eigenvalue)
20-
EigsolveProblem(E.operator, E.state, eigenvalue, E.max_truncerr)
21-
end
22-
function set_state(E::EigsolveProblem, state)
23-
EigsolveProblem(E.operator, state, E.eigenvalue, E.max_truncerr)
24-
end
25-
function set_max_truncerr(E::EigsolveProblem, truncerr)
26-
EigsolveProblem(E.operator, E.state, E.eigenvalue, truncerr)
27-
end
17+
set_operator(E::EigsolveProblem, operator) = (@set E.operator = operator)
18+
set_eigenvalue(E::EigsolveProblem, eigenvalue) = (@set E.eigenvalue = eigenvalue)
19+
set_state(E::EigsolveProblem, state) = (@set E.state = state)
20+
set_max_truncerror(E::EigsolveProblem, truncerror) = (@set E.max_truncerror = truncerror)
2821

2922
function set_truncation_info(E::EigsolveProblem; spectrum=nothing)
3023
if !isnothing(spectrum)
31-
E = set_max_truncerr(E, max(max_truncerr(E), truncerror(spectrum)))
24+
E = set_max_truncerror(E, max(max_truncerror(E), truncerror(spectrum)))
3225
end
3326
return E
3427
end
@@ -60,7 +53,7 @@ function sweep_printer(problem::EigsolveProblem; outputlevel, sweep, nsweeps, kw
6053
end
6154
@printf("eigenvalue=%.12f", eigenvalue(problem))
6255
@printf(" maxlinkdim=%d", maxlinkdim(state(problem)))
63-
@printf(" max truncerr=%d", max_truncerr(problem))
56+
@printf(" max truncerror=%d", max_truncerror(problem))
6457
println()
6558
flush(stdout)
6659
end

src/solvers/fitting.jl

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using Accessors: @set
12
using Graphs: vertices
23
using NamedGraphs: AbstractNamedGraph, NamedEdge
34
using NamedGraphs.PartitionedGraphs: partitionedges
@@ -17,12 +18,8 @@ ket_graph(F::FittingProblem) = F.ket_graph
1718
overlap(F::FittingProblem) = F.overlap
1819
gauge_region(F::FittingProblem) = F.gauge_region
1920

20-
function set_state(F::FittingProblem, state)
21-
FittingProblem(state, F.ket_graph, F.overlap, F.gauge_region)
22-
end
23-
function set_overlap(F::FittingProblem, overlap)
24-
FittingProblem(F.state, F.ket_graph, overlap, F.gauge_region)
25-
end
21+
set_state(F::FittingProblem, state) = (@set F.state = state)
22+
set_overlap(F::FittingProblem, overlap) = (@set F.overlap = overlap)
2623

2724
function ket(F::FittingProblem)
2825
ket_vertices = vertices(ket_graph(F))

0 commit comments

Comments
 (0)