Skip to content

Commit e29b922

Browse files
committed
Move towards network solver
1 parent 134aa0c commit e29b922

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
@kwdef mutable struct OrthogonalLinearFormProblem{State, LinearFormNetwork}
2+
state::State
3+
linearformnetwork::LinearFormNetwork
4+
squared_scalar::Number = 0
5+
end
6+
7+
squared_scalar(O::OrthogonalLinearFormProblem) = O.squared_scalar
8+
state(O::OrthogonalLinearFormProblem) = O.state
9+
linearformnetwork(O::OrthogonalLinearFormProblem) = O.linearformnetwork
10+
11+
function set(O::OrthogonalLinearFormProblem; state = state(O), linearformnetwork = linearformnetwork(O), squared_scalar = squared_scalar(O))
12+
return OrthogonalLinearFormProblem(; state, linearformnetwork, squared_scalar)
13+
end
14+
15+
function updater!(O::OrthogonalLinearFormProblem, local_tensor, region; outputlevel, kws...)
16+
O.squared_scalar, local_tensor = linearform_updater
17+
18+
function maximize_linearformnetwork_sq(linearformnetwork, init_state; nsweeps, nsites=1, outputlevel = 0, update_kwargs = (;), inserter_kwargs = (;), kws...)
19+
init_prob = OrthogonalLinearFormProblem(; state = copy(init_state), linearformnetwork = linearformnetwork)
20+
common_sweep_kwargs = (; nsites, outputlevel, updater_kwargs, inserter_kwargs)
21+
kwargs_array = [(; common_sweep_kwargs..., sweep = s) for s in 1:nsweeps]
22+
sweep_iter = sweep_iterator(init_prob, kwargs_array)
23+
converged_prob = alternating_update(sweep_iter; outputlevel, kws...)
24+
return squared_scalar(converged_prob), state(converged_prob)
25+
end

0 commit comments

Comments
 (0)