Skip to content

Commit 60235bc

Browse files
author
Jack Dunham
committed
Method subspace_expand!(::Backend"densitymatrix") now defines kwarg defaults for the function it calls
1 parent 7ad3138 commit 60235bc

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

src/solvers/eigsolve.jl

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,21 @@ function default_sweep_callback(
5959
end
6060
end
6161

62-
function eigsolve(operator, init_state; nsweeps, nsites=1, outputlevel=0, sweep_kwargs...)
62+
function eigsolve(
63+
operator, init_state; nsweeps, nsites=1, outputlevel=0, factorize_kwargs, sweep_kwargs...
64+
)
6365
init_prob = EigsolveProblem(;
6466
state=align_indices(init_state), operator=ProjTTN(align_indices(operator))
6567
)
66-
sweep_iter = SweepIterator(init_prob, nsweeps; nsites, outputlevel, sweep_kwargs...)
68+
sweep_iter = SweepIterator(
69+
init_prob,
70+
nsweeps;
71+
nsites,
72+
outputlevel,
73+
factorize_kwargs,
74+
subspace_expand!_kwargs=(; eigen_kwargs=factorize_kwargs),
75+
sweep_kwargs...,
76+
)
6777
prob = problem(sweep_solve!(sweep_iter))
6878
return eigenvalue(prob), state(prob)
6979
end

src/solvers/subspace/densitymatrix.jl

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@ using NamedGraphs.GraphsExtensions: incident_edges
22
using Printf: @printf
33

44
@define_default_kwargs function subspace_expand!(
5-
::Backend"densitymatrix", region_iter, local_state; north_pass=1
5+
::Backend"densitymatrix",
6+
region_iter,
7+
local_state;
8+
expansion_factor=1.5,
9+
maxexpand=typemax(Int),
10+
north_pass=1,
11+
eigen_kwargs=(;),
612
)
713
prob = problem(region_iter)
814

@@ -24,7 +30,7 @@ using Printf: @printf
2430
basis_size = prod(dim.(uniqueinds(A, C)))
2531

2632
expanded_maxdim = compute_expansion(
27-
dim(a), basis_size; region_kwargs(compute_expansion, region_iter)...
33+
dim(a), basis_size; expansion_factor, maxexpand, eigen_kwargs.maxdim
2834
)
2935
expanded_maxdim <= 0 && return region_iter, local_state
3036

@@ -38,14 +44,14 @@ using Printf: @printf
3844
sqrt_rho *= H[prev_vertex]
3945

4046
conj_proj_A(T) = (T - prime(A) * (dag(prime(A)) * T))
41-
for pass in 1:north_pass
47+
for _ in 1:north_pass
4248
sqrt_rho = conj_proj_A(sqrt_rho)
4349
end
4450
rho = sqrt_rho * dag(noprime(sqrt_rho))
45-
D, U = eigen(rho; region_kwargs(eigen, region_iter)..., ishermitian=true)
51+
D, U = eigen(rho; eigen_kwargs..., ishermitian=true)
4652

4753
Uproj(T) = (T - prime(A, a) * (dag(prime(A, a)) * T))
48-
for pass in 1:north_pass
54+
for _ in 1:north_pass
4955
U = Uproj(U)
5056
end
5157
if norm(dag(U) * A) > 1E-10

src/solvers/subspace/subspace.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@ function subspace_expand!(backend, region_iterator, local_state; kwargs...)
2424
)
2525
end
2626

27-
function compute_expansion(
28-
current_dim, basis_size; expansion_factor=1.5, maxexpand=typemax(Int), maxdim=typemax(Int)
29-
)
27+
# Have these defaults set per backend in `subspace_expand!`
28+
function compute_expansion(current_dim, basis_size; expansion_factor, maxexpand, maxdim)
3029
# Note: expand_maxdim will be *added* to current bond dimension
3130
# Obtain expand_maxdim from expansion_factor
3231
expand_maxdim = ceil(Int, expansion_factor * current_dim)

0 commit comments

Comments
 (0)