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