32 #ifndef HEX_CGPRECONDITIONER_H 33 #define HEX_CGPRECONDITIONER_H 67 Bspline const & bspline_panel_x,
89 virtual void precondition (BlockArray<Complex>
const & r, BlockArray<Complex> & z)
const;
93 int solve_block (
int ill,
const cArrayView r, cArrayView z)
const;
96 virtual void CG_init (
int iblock)
const;
97 virtual void CG_mmul (
int iblock,
const cArrayView p, cArrayView q)
const;
98 virtual void CG_prec (
int iblock,
const cArrayView r, cArrayView z)
const;
99 virtual void CG_exit (
int iblock)
const;
103 virtual Complex
CG_scalar_product (
const cArrayView a,
const cArrayView b)
const;
104 virtual void CG_axby_operation (Complex a, cArrayView x, Complex b,
const cArrayView y)
const;
virtual std::string description() const
Description of the preconditioner.
Definition: CGPreconditioner.cpp:48
preconditionerRunTimeSelectionDefinitions(CGPreconditioner, "cg") CGPreconditioner()
Definition: CGPreconditioner.h:53
Solution driver without actual preconditioner.
Definition: NoPreconditioner.h:55
B-spline environment.
Definition: bspline.h:57
virtual void CG_mmul(int iblock, const cArrayView p, cArrayView q) const
Definition: CGPreconditioner.cpp:242
virtual void precondition(BlockArray< Complex > const &r, BlockArray< Complex > &z) const
Precondition the equation.
Definition: CGPreconditioner.cpp:142
Angular basis.
Definition: ang.h:44
virtual void update(Real E)
Update the preconditioner for the next energy.
Definition: NoPreconditioner.cpp:498
std::size_t us_spro_
Definition: CGPreconditioner.h:113
virtual void CG_constrain(cArrayView r) const
Definition: CGPreconditioner.cpp:438
virtual Real CG_compute_norm(const cArrayView a) const
Definition: CGPreconditioner.cpp:360
Command line parameters.
Definition: io.h:57
std::size_t us_axby_
Definition: CGPreconditioner.h:113
virtual void CG_exit(int iblock) const
Definition: CGPreconditioner.cpp:350
iArray n_
Definition: CGPreconditioner.h:110
virtual void rhs(BlockArray< Complex > &chi, int ienergy, int instate) const
Calculate the right-hand side.
Definition: NoPreconditioner.cpp:821
std::size_t us_mmul_
Definition: CGPreconditioner.h:113
std::vector< std::pair< int, int > > const & states() const
List of coupled angular states.
Definition: ang.h:55
virtual void CG_init(int iblock) const
Definition: CGPreconditioner.cpp:238
CG iteration-based preconditioner.
Definition: CGPreconditioner.h:48
virtual Complex CG_scalar_product(const cArrayView a, const cArrayView b) const
Definition: CGPreconditioner.cpp:377
MPI info.
Definition: parallel.h:50
std::size_t us_norm_
Definition: CGPreconditioner.h:113
virtual void finish()
Clean up memory etc.
Definition: CGPreconditioner.cpp:354
NoPreconditioner(CommandLine const &cmd, InputFile const &inp, Parallel const &par, AngularBasis const &ang, Bspline const &bspline_inner, Bspline const &bspline_full, Bspline const &bspline_panel_x, Bspline const &bspline_panel_y)
Definition: NoPreconditioner.cpp:56
virtual void CG_prec(int iblock, const cArrayView r, cArrayView z) const
Definition: CGPreconditioner.cpp:345
std::size_t us_prec_
Definition: CGPreconditioner.h:113
virtual void multiply(BlockArray< Complex > const &p, BlockArray< Complex > &q, MatrixSelection::Selection tri=MatrixSelection::Both) const
Multiply by the matrix equation.
Definition: NoPreconditioner.cpp:1233
virtual void CG_axby_operation(Complex a, cArrayView x, Complex b, const cArrayView y) const
Definition: CGPreconditioner.cpp:396
virtual void setup()
Initialize the preconditioner.
Definition: NoPreconditioner.cpp:101
int solve_block(int ill, const cArrayView r, cArrayView z) const
Definition: CGPreconditioner.cpp:53
CGPreconditioner(CommandLine const &cmd, InputFile const &inp, Parallel const &par, AngularBasis const &ang, Bspline const &bspline_inner, Bspline const &bspline_full, Bspline const &bspline_panel_x, Bspline const &bspline_panel_y)
Definition: CGPreconditioner.h:60