4 #ifndef DDECAL_HYBRID_SOLVER_H
5 #define DDECAL_HYBRID_SOLVER_H
29 const std::vector<size_t>& n_solutions_per_direction,
30 size_t n_channel_blocks)
override {
33 for (
const std::pair<std::unique_ptr<SolverBase>,
size_t>& solver_info :
35 solver_info.first->Initialize(n_antennas, n_solutions_per_direction,
41 return solvers_.empty() ? 0
42 : solvers_.front().first->NSolutionPolarizations();
58 std::vector<SolverBase*> solvers;
59 for (
const auto& solverinfo : solvers_)
60 solvers.push_back(solverinfo.first.get());
71 stop_on_convergence_ = stop_on_convergence;
76 std::vector<std::vector<DComplex>>& solutions,
77 double time)
override;
80 bool RunSolver(
SolverBase& solver,
size_t& available_iterations,
82 std::vector<std::vector<DComplex>>& solutions,
double time);
85 std::vector<std::pair<std::unique_ptr<SolverBase>,
size_t>> solvers_;
86 bool stop_on_convergence_;
Definition: HybridSolver.h:24
size_t NSolutionPolarizations() const override
Definition: HybridSolver.h:40
void SetStopOnConvergence(bool stop_on_convergence)
Definition: HybridSolver.h:70
std::vector< SolverBase * > ConstraintSolvers() override
Definition: HybridSolver.h:57
SolveResult Solve(const FullSolveData &solve_data, std::vector< std::vector< DComplex >> &solutions, double time) override
HybridSolver()
Definition: HybridSolver.h:26
bool StopOnConvergence() const
Definition: HybridSolver.h:69
void AddSolver(std::unique_ptr< SolverBase > solver)
void Initialize(size_t n_antennas, const std::vector< size_t > &n_solutions_per_direction, size_t n_channel_blocks) override
Definition: HybridSolver.h:28
Definition: SolveData.h:29
Definition: SolverBase.h:24
virtual void Initialize(size_t n_antennas, const std::vector< size_t > &n_solutions_per_direction, size_t n_channel_blocks)
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53
Definition: SolverBase.h:61