![]() |
Hex
1.0
Hydrogen-electron collision solver
|
CG iteration-based preconditioner (GPU variant). More...
#include <preconditioners.h>
Public Member Functions | |
GPUCGPreconditioner (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... | |
![]() | |
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 = "gpuJacobi" |
static const std::string | description = "Block inversion using Jacobi-preconditioned conjugate gradients (GPU variant)." |
![]() | |
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 |
|
inlinevirtual |
This function implements matrix multiplication by the matrix of the set of equations that is to be solved.
Reimplemented from NoPreconditioner.
|
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.
|
inlinevirtual |
Reimplemented from NoPreconditioner.
|
inlinevirtual |
Reimplemented from NoPreconditioner.
|
virtual |
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.
|
virtual |
This function updates the preconditioner for another right hand side. It may use the MPI environment.
Reimplemented from NoPreconditioner.
|
static |
|
static |