Hex  2.2
Hydrogen-electron collision solver
Public Member Functions
HybCGPreconditioner Class Reference

Hybrid preconditioner. More...

#include <HybPreconditioner.h>

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

Public Member Functions

 preconditionerRunTimeSelectionDefinitions (HybCGPreconditioner, "HYB") HybCGPreconditioner()
 
 HybCGPreconditioner (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)
 
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_mmul (int iblock, const cArrayView r, cArrayView z) const
 
virtual void CG_exit (int iblock) const
 
bool ilu_needed (int iblock) const
 
- Public Member Functions inherited from ILUCGPreconditioner
 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 ()
 
- 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 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...
 
- Public Member Functions inherited from KPACGPreconditioner
 preconditionerRunTimeSelectionDefinitions (KPACGPreconditioner, "KPA") KPACGPreconditioner()
 
 KPACGPreconditioner (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 ~KPACGPreconditioner ()
 

Additional Inherited Members

- Protected Member Functions inherited from ILUCGPreconditioner
void reset_lu ()
 
- Protected Member Functions inherited from KPACGPreconditioner
void lock_kpa_access () const
 
void unlock_kpa_access () const
 
- Protected Attributes inherited from ILUCGPreconditioner
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_
 
- Protected Attributes inherited from KPACGPreconditioner
iArray refcount_atom_
 
iArray refcount_proj_
 
cArrays workspace_
 

Detailed Description

Combination of ILU and KPA:

Constructor & Destructor Documentation

◆ HybCGPreconditioner()

HybCGPreconditioner::HybCGPreconditioner ( 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 
)
inline

Member Function Documentation

◆ CG_exit()

void HybCGPreconditioner::CG_exit ( int  iblock) const
virtual

Reimplemented from ILUCGPreconditioner.

◆ CG_init()

void HybCGPreconditioner::CG_init ( int  iblock) const
virtual

Reimplemented from ILUCGPreconditioner.

◆ CG_mmul()

void HybCGPreconditioner::CG_mmul ( int  iblock,
const cArrayView  r,
cArrayView  z 
) const
virtual

Reimplemented from CGPreconditioner.

◆ CG_prec()

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

Reimplemented from ILUCGPreconditioner.

◆ description()

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

Simple documentation of the preconditioner.

Reimplemented from ILUCGPreconditioner.

◆ finish()

void HybCGPreconditioner::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 ILUCGPreconditioner.

◆ ilu_needed()

bool HybCGPreconditioner::ilu_needed ( int  iblock) const

◆ preconditionerRunTimeSelectionDefinitions()

HybCGPreconditioner::preconditionerRunTimeSelectionDefinitions ( HybCGPreconditioner  ,
"HYB"   
)
inline

◆ setup()

void HybCGPreconditioner::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 ILUCGPreconditioner.

◆ update()

void HybCGPreconditioner::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 ILUCGPreconditioner.


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