32 #ifndef HEX_ILUPRECONDITIONER_H 33 #define HEX_ILUPRECONDITIONER_H 51 #ifdef WITH_SUPERLU_DIST 52 #include <superlu_zdefs.h> 81 Bspline const & bspline_x_inner,
83 Bspline const & bspline_y_inner,
99 virtual void setup ();
100 virtual void update (Real E);
104 virtual void CG_init (
int iblock)
const;
105 virtual void CG_prec (
int iblock,
const cArrayView r, cArrayView z)
const;
106 virtual void CG_exit (
int iblock)
const;
111 mutable std::vector<LUftData>
data_;
114 mutable std::vector<std::shared_ptr<LUft>>
lu_;
121 mutable omp_lock_t lu_lock_;
124 #ifdef WITH_SUPERLU_DIST void reset_lu()
Definition: ILUPreconditioner.cpp:93
virtual void CG_prec(int iblock, const cArrayView r, cArrayView z) const
Definition: ILUPreconditioner.cpp:318
ILU-preconditioned CG-based preconditioner.
Definition: ILUPreconditioner.h:64
virtual void finish()
Clean up memory etc.
Definition: ILUPreconditioner.cpp:357
B-spline environment.
Definition: bspline.h:57
virtual void precondition(BlockArray< Complex > const &r, BlockArray< Complex > &z) const
Precondition the equation.
Definition: CGPreconditioner.cpp:142
virtual std::string description() const
Description of the preconditioner.
Definition: ILUPreconditioner.cpp:51
Angular basis.
Definition: ang.h:44
std::vector< std::shared_ptr< LUft > > lu_
Definition: ILUPreconditioner.h:114
Command line parameters.
Definition: io.h:57
ILUCGPreconditioner(CommandLine const &cmd, InputFile const &inp, Parallel const &par, AngularBasis const &ang, Bspline const &bspline_x_inner, Bspline const &bspline_x_full, Bspline const &bspline_y_inner, Bspline const &bspline_y_full)
Definition: ILUPreconditioner.cpp:58
virtual void rhs(BlockArray< Complex > &chi, int ienergy, int instate) const
Calculate the right-hand side.
Definition: NoPreconditioner.cpp:821
CG iteration-based preconditioner.
Definition: CGPreconditioner.h:48
~ILUCGPreconditioner()
Definition: ILUPreconditioner.cpp:81
std::vector< LUftData > data_
Definition: ILUPreconditioner.h:111
virtual void CG_exit(int iblock) const
Definition: ILUPreconditioner.cpp:337
MPI info.
Definition: parallel.h:50
virtual void update(Real E)
Update the preconditioner for the next energy.
Definition: ILUPreconditioner.cpp:135
virtual void setup()
Initialize the preconditioner.
Definition: ILUPreconditioner.cpp:126
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_init(int iblock) const
Definition: ILUPreconditioner.cpp:148
preconditionerRunTimeSelectionDefinitions(ILUCGPreconditioner, "ILU") ILUCGPreconditioner()
Definition: ILUPreconditioner.h:69