Hex  1.0
Hydrogen-electron collision solver
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Attributes | Protected Attributes
NoPreconditioner Class Reference

Solution driver without actual preconditioner. More...

#include <preconditioners.h>

Inheritance diagram for NoPreconditioner:
Inheritance graph
[legend]
Collaboration diagram for NoPreconditioner:
Collaboration graph
[legend]

Public Member Functions

 NoPreconditioner (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...
 

Static Public Attributes

static const std::string name = "none"
 
static const std::string description = "Preconditioning by the identity matrix."
 

Protected Attributes

CommandLine const & cmd_
 
Parallel const & par_
 
InputFile const & inp_
 
std::vector< std::pair< int,
int > > const & 
l1_l2_
 
std::vector< SymDiaMatrixdia_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_
 

Detailed Description

This class "preconditions" by identity matrix, but implements all other important routines, that can be used by derived classes, namely:

Constructor & Destructor Documentation

NoPreconditioner::NoPreconditioner ( Parallel const &  par,
InputFile const &  inp,
std::vector< std::pair< int, int >> const &  ll,
Bspline const &  bspline,
CommandLine const &  cmd 
)
inline

Member Function Documentation

void NoPreconditioner::multiply ( const cArrayView  p,
cArrayView  q 
) const
virtual

This function implements matrix multiplication by the matrix of the set of equations that is to be solved.

Implements PreconditionerBase.

Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, JacobiCGPreconditioner, GPUCGPreconditioner, and CGPreconditioner.

void NoPreconditioner::precondition ( const cArrayView  r,
cArrayView  z 
) const
virtual

This function preconditions the equation, solving the preconditioner equation

\[ \mathbf{M}\mathbf{z} = \mathbf{r} \ . \]

It may use the MPI environment.

Implements PreconditionerBase.

Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, JacobiCGPreconditioner, GPUCGPreconditioner, and CGPreconditioner.

virtual RadialIntegrals const& NoPreconditioner::rad ( ) const
inlinevirtual
void NoPreconditioner::rhs ( cArrayView  chi,
int  ienergy,
int  instate 
) const
virtual
void NoPreconditioner::setup ( )
virtual

This function contains all computation intensive preparations for the preconditioner, e.g. computation of radial integrals. It may use only SMP environment.

Implements PreconditionerBase.

Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, JacobiCGPreconditioner, GPUCGPreconditioner, and CGPreconditioner.

void NoPreconditioner::update ( double  E)
virtual

This function updates the preconditioner for another right hand side. It may use the MPI environment.

Implements PreconditionerBase.

Reimplemented in TwoLevelPreconditioner, SPAICGPreconditioner, DICCGPreconditioner, ILUCGPreconditioner, SSORCGPreconditioner, JacobiCGPreconditioner, GPUCGPreconditioner, and CGPreconditioner.

Field Documentation

CommandLine const& NoPreconditioner::cmd_
protected
const std::string NoPreconditioner::description = "Preconditioning by the identity matrix."
static
std::vector<SymDiaMatrix> NoPreconditioner::dia_blocks_
mutableprotected
SymDiaMatrix NoPreconditioner::half_D_minus_Mm1_tr_
protected
SymDiaMatrix NoPreconditioner::half_D_minus_Mm1_tr_kron_S_
protected
InputFile const& NoPreconditioner::inp_
protected
std::vector<std::pair<int,int> > const& NoPreconditioner::l1_l2_
protected
SymDiaMatrix NoPreconditioner::Mm1_tr_kron_S_
protected
SymDiaMatrix NoPreconditioner::Mm2_kron_S_
protected
const std::string NoPreconditioner::name = "none"
static
Parallel const& NoPreconditioner::par_
protected
Bspline NoPreconditioner::s_bspline_
protected
SymDiaMatrix NoPreconditioner::S_kron_half_D_minus_Mm1_tr_
protected
SymDiaMatrix NoPreconditioner::S_kron_Mm1_tr_
protected
SymDiaMatrix NoPreconditioner::S_kron_Mm2_
protected
SymDiaMatrix NoPreconditioner::S_kron_S_
protected
RadialIntegrals NoPreconditioner::s_rad_
protected

The documentation for this class was generated from the following files: