Hex: HybCGPreconditioner Class Reference

| Hex 2.2 Hydrogen-electron collision solver

Public Member Functions
HybCGPreconditioner Class Reference

Hybrid preconditioner. More...

`#include <HybPreconditioner.h>`

Inheritance diagram for HybCGPreconditioner:
[legend]
Collaboration diagram for HybCGPreconditioner:
[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< LUftData > | data_
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_
RadialIntegrals * | rad_inner_
RadialIntegrals * | rad_full_
RadialIntegrals * | rad_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< LUft > | luS_
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:

- KPA is used for angular blocks with no asymptotic channels.
- ILU is used for angular blocks with asymptotic channels.

## 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:

- src/preconditioners/HybPreconditioner.h
- src/preconditioners/HybPreconditioner.cpp