Hex  2.2
Hydrogen-electron collision solver
Public Member Functions | Protected Member Functions | Protected Attributes
ILUCGPreconditioner Class Reference

ILU-preconditioned CG-based preconditioner. More...

#include <ILUPreconditioner.h>

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

Public Member Functions

 preconditionerRunTimeSelectionDefinitions (ILUCGPreconditioner, "ILU") ILUCGPreconditioner()
 
 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)
 
 ~ILUCGPreconditioner ()
 
virtual std::string description () const
 Description of the preconditioner. More...
 
virtual void setup ()
 Initialize the preconditioner. More...
 
virtual void update (Real E)
 Update the preconditioner for the next energy. More...
 
virtual void finish ()
 Clean up memory etc. More...
 
virtual void CG_init (int iblock) const
 
virtual void CG_prec (int iblock, const cArrayView r, cArrayView z) const
 
virtual void CG_exit (int iblock) const
 
- Public Member Functions inherited from CGPreconditioner
 preconditionerRunTimeSelectionDefinitions (CGPreconditioner, "cg") CGPreconditioner()
 
 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)
 
virtual void precondition (BlockArray< Complex > const &r, BlockArray< Complex > &z) const
 Precondition the equation. More...
 
int solve_block (int ill, const cArrayView r, cArrayView z) const
 
virtual void CG_mmul (int iblock, const cArrayView p, cArrayView q) const
 
virtual Real CG_compute_norm (const cArrayView a) const
 
virtual Complex CG_scalar_product (const cArrayView a, const cArrayView b) const
 
virtual void CG_axby_operation (Complex a, cArrayView x, Complex b, const cArrayView y) const
 
virtual void CG_constrain (cArrayView r) const
 
- Public Member Functions inherited from NoPreconditioner
 preconditionerRunTimeSelectionDefinitions (NoPreconditioner, "none") NoPreconditioner()
 
 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)
 
 ~NoPreconditioner ()
 
virtual std::pair< int, int > bstates (Real E, int l1, int l2) const
 Get the number of allowed bound states. More...
 
virtual void rhs (BlockArray< Complex > &chi, int ienergy, int instate) const
 Calculate the right-hand side. More...
 
virtual void multiply (BlockArray< Complex > const &p, BlockArray< Complex > &q, MatrixSelection::Selection tri=MatrixSelection::Both) const
 Multiply by the matrix equation. More...
 
BlockSymBandMatrix< Complex > calc_A_block (int ill, int illp, bool twoel=true) const
 
RadialIntegrals const & rad_inner () const
 
RadialIntegrals const & rad_full () const
 
RadialIntegrals const & rad_panel () const
 
- Public Member Functions inherited from PreconditionerBase
 baseClassRunTimeSelectionDefinitions (PreconditionerBase,(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)) PreconditionerBase()
 Dummy default constructor needed by the run-time selection. More...
 
virtual ~PreconditionerBase ()
 Virtual destructor. More...
 
virtual void verbose (bool b)
 Set verbosity level. More...
 

Protected Member Functions

void reset_lu ()
 

Protected Attributes

std::vector< LUftDatadata_
 
std::vector< std::shared_ptr< LUft > > lu_
 
- Protected Attributes inherited from CGPreconditioner
iArray n_
 
std::size_t us_axby_
 
std::size_t us_mmul_
 
std::size_t us_norm_
 
std::size_t us_prec_
 
std::size_t us_spro_
 
- Protected Attributes inherited from NoPreconditioner
Real E_
 
CommandLine const * cmd_
 
Parallel const * par_
 
InputFile const * inp_
 
AngularBasis const * ang_
 
std::vector< BlockSymBandMatrix< Complex > > A_blocks_
 
std::vector< std::vector< SymBandMatrix< Complex > > > B1_blocks_
 
std::vector< std::vector< SymBandMatrix< Complex > > > B2_blocks_
 
std::vector< CooMatrix< LU_int_t, Complex > > Cu_blocks_
 
std::vector< CooMatrix< LU_int_t, Complex > > Cl_blocks_
 
std::vector< BlockSymBandMatrix< Complex > > E_blocks_
 
std::vector< CooMatrix< LU_int_t, Complex > > Fu_blocks_
 
std::vector< CooMatrix< LU_int_t, Complex > > Fl_blocks_
 
int max_n_
 
std::vector< std::pair< int, int > > Nchan_
 
RadialIntegralsrad_inner_
 
RadialIntegralsrad_full_
 
RadialIntegralsrad_panel_
 
std::array< Array< cArrays >, 2 > Xp_
 
std::array< Array< cArrays >, 2 > Sp_
 
std::array< cArrays, 2 > Eb_
 
std::array< std::vector< HlData >, 2 > Hl_
 
std::shared_ptr< LUftluS_
 
- Protected Attributes inherited from PreconditionerBase
bool verbose_
 

Detailed Description

Enhances CGPreconditioner conjugate gradients solver by incomplete LU factorization preconditioning. This is done by redefining virtual function CG_prec. The factorization is drop tolerance based and is computed by UMFPACK.

Constructor & Destructor Documentation

◆ ILUCGPreconditioner()

ILUCGPreconditioner::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 
)

◆ ~ILUCGPreconditioner()

ILUCGPreconditioner::~ILUCGPreconditioner ( )

Member Function Documentation

◆ CG_exit()

void ILUCGPreconditioner::CG_exit ( int  iblock) const
virtual

Reimplemented from CGPreconditioner.

Reimplemented in HybCGPreconditioner.

◆ CG_init()

void ILUCGPreconditioner::CG_init ( int  iblock) const
virtual

Reimplemented from CGPreconditioner.

Reimplemented in HybCGPreconditioner.

◆ CG_prec()

void ILUCGPreconditioner::CG_prec ( int  iblock,
const cArrayView  r,
cArrayView  z 
) const
virtual

Reimplemented from CGPreconditioner.

Reimplemented in HybCGPreconditioner.

◆ description()

std::string ILUCGPreconditioner::description ( ) const
virtual

Simple documentation of the preconditioner.

Reimplemented from CGPreconditioner.

Reimplemented in HybCGPreconditioner.

◆ finish()

void ILUCGPreconditioner::finish ( )
virtual

This function is called when the preconditioner will no longer be used to release resources. To re-enable the same preconditioner then would require a new call to setup.

Reimplemented from CGPreconditioner.

Reimplemented in HybCGPreconditioner.

◆ preconditionerRunTimeSelectionDefinitions()

ILUCGPreconditioner::preconditionerRunTimeSelectionDefinitions ( ILUCGPreconditioner  ,
"ILU"   
)
inline

◆ reset_lu()

void ILUCGPreconditioner::reset_lu ( )
protected

◆ setup()

void ILUCGPreconditioner::setup ( )
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.

Reimplemented in HybCGPreconditioner.

◆ update()

void ILUCGPreconditioner::update ( Real  E)
virtual

This function updates the preconditioner for another right hand side. It may use the MPI environment. The energy is in Ry.

Reimplemented from NoPreconditioner.

Reimplemented in HybCGPreconditioner.

Field Documentation

◆ data_

std::vector<LUftData> ILUCGPreconditioner::data_
mutableprotected

◆ lu_

std::vector<std::shared_ptr<LUft> > ILUCGPreconditioner::lu_
mutableprotected

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