![]() |
Hex
1.0
Hydrogen-electron collision solver
|
CG iteration-based preconditioner. More...
#include <preconditioners.h>
Public Member Functions | |
CGPreconditioner (Parallel const &par, InputFile const &inp, std::vector< std::pair< int, int >> const &ll, Bspline const &bspline, CommandLine const &cmd) | |
virtual RadialIntegrals const & | rad () const |
Get radial integrals. More... | |
virtual void | setup () |
Initialize the preconditioner. More... | |
virtual void | update (double E) |
Update the preconditioner for the next energy. More... | |
virtual void | rhs (cArrayView chi, int ienergy, int instate) const |
Return the right-hand side. More... | |
virtual void | multiply (const cArrayView p, cArrayView q) const |
Multiply by the matrix equation. More... | |
virtual void | precondition (const cArrayView r, cArrayView z) const |
Precondition the equation. More... | |
virtual void | CG_mmul (int iblock, const cArrayView p, cArrayView q) const |
virtual void | CG_prec (int iblock, const cArrayView r, cArrayView z) const |
![]() | |
NoPreconditioner (Parallel const &par, InputFile const &inp, std::vector< std::pair< int, int >> const &ll, Bspline const &bspline, CommandLine const &cmd) | |
Static Public Attributes | |
static const std::string | name = "cg" |
static const std::string | description = "Block inversion using plain conjugate gradients." |
![]() | |
static const std::string | name = "none" |
static const std::string | description = "Preconditioning by the identity matrix." |
Additional Inherited Members | |
![]() | |
CommandLine const & | cmd_ |
Parallel const & | par_ |
InputFile const & | inp_ |
std::vector< std::pair< int, int > > const & | l1_l2_ |
std::vector< SymDiaMatrix > | dia_blocks_ |
Bspline | s_bspline_ |
RadialIntegrals | s_rad_ |
SymDiaMatrix | S_kron_S_ |
SymDiaMatrix | S_kron_Mm1_tr_ |
SymDiaMatrix | S_kron_Mm2_ |
SymDiaMatrix | Mm1_tr_kron_S_ |
SymDiaMatrix | Mm2_kron_S_ |
SymDiaMatrix | half_D_minus_Mm1_tr_ |
SymDiaMatrix | half_D_minus_Mm1_tr_kron_S_ |
SymDiaMatrix | S_kron_half_D_minus_Mm1_tr_ |
This class adds some preconditioning capabilities to its base class NoPreconditioner. The preconditioning is done by diagonal block solution using the conjugate gradients solver (which itself is non-preconditioned).
|
inline |
|
virtual |
|
virtual |
Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, and JacobiCGPreconditioner.
|
inlinevirtual |
This function implements matrix multiplication by the matrix of the set of equations that is to be solved.
Reimplemented from NoPreconditioner.
Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, and JacobiCGPreconditioner.
|
virtual |
This function preconditions the equation, solving the preconditioner equation
\[ \mathbf{M}\mathbf{z} = \mathbf{r} \ . \]
It may use the MPI environment.
Reimplemented from NoPreconditioner.
Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, and JacobiCGPreconditioner.
|
inlinevirtual |
Reimplemented from NoPreconditioner.
Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, and JacobiCGPreconditioner.
|
inlinevirtual |
Reimplemented from NoPreconditioner.
Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, and JacobiCGPreconditioner.
|
inlinevirtual |
This function contains all computation intensive preparations for the preconditioner, e.g. computation of radial integrals. It may use only SMP environment.
Reimplemented from NoPreconditioner.
Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, and JacobiCGPreconditioner.
|
inlinevirtual |
This function updates the preconditioner for another right hand side. It may use the MPI environment.
Reimplemented from NoPreconditioner.
Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, and JacobiCGPreconditioner.
|
static |
|
static |