32 #ifndef HEX_ECS_SOLVER_H 33 #define HEX_ECS_SOLVER_H 41 #include "hex-itersolve.h" 86 void matrix_multiply_ (BlockArray<Complex>
const & p, BlockArray<Complex> & q)
const;
89 Complex
scalar_product_ (BlockArray<Complex>
const & x, BlockArray<Complex>
const & y)
const;
95 void axby_operation_ (Complex a, BlockArray<Complex> & x, Complex b, BlockArray<Complex>
const & y)
const;
98 BlockArray<Complex>
new_array_ (std::size_t N, std::string name)
const;
101 void process_solution_ (
unsigned iteration, BlockArray<Complex>
const & x)
const;
121 Bspline const & bspline_inner_;
128 ConjugateGradients <Complex, cBlockArray, cBlockArray&> CG_;
135 std::vector<std::pair<iArray,iArray>> bstates_;
138 std::vector<std::pair<int,int>> channels_;
143 #endif // HEX_ECS_SOLVER_H Real compute_norm_(BlockArray< Complex > const &r) const
Definition: solver.cpp:402
B-spline environment.
Definition: bspline.h:57
void matrix_multiply_(BlockArray< Complex > const &p, BlockArray< Complex > &q) const
Definition: solver.cpp:361
void solve()
Find solution of the scattering equations on chosen panel.
Definition: solver.cpp:88
Angular basis.
Definition: ang.h:44
void process_solution_(unsigned iteration, BlockArray< Complex > const &x) const
Definition: solver.cpp:512
Command line parameters.
Definition: io.h:57
void concatenate_panels_(cArray &psi, cArray const &psip) const
BlockArray< Complex > new_array_(std::size_t N, std::string name) const
Definition: solver.cpp:472
void axby_operation_(Complex a, BlockArray< Complex > &x, Complex b, BlockArray< Complex > const &y) const
Definition: solver.cpp:435
void finish()
Release resources.
Definition: solver.cpp:538
MPI info.
Definition: parallel.h:50
Solver(CommandLine &cmd, InputFile const &inp, Parallel const &par, AngularBasis const &ang, Bspline const &bspline_inner, Bspline const &bspline_full)
Constructor.
Definition: solver.cpp:43
void setup_preconditioner()
Precompute (or load) the radial data.
Definition: solver.cpp:76
Preconditioner template.
Definition: preconditioners.h:62
void choose_preconditioner()
Pick preconditioner for a given panel.
Definition: solver.cpp:58
void apply_preconditioner_(BlockArray< Complex > const &r, BlockArray< Complex > &z) const
Definition: solver.cpp:352
Complex scalar_product_(BlockArray< Complex > const &x, BlockArray< Complex > const &y) const
Definition: solver.cpp:367