Hex: KPACGPreconditioner Class Reference

| Hex 2.2 Hydrogen-electron collision solver

Public Member Functions | Protected Member Functions | Protected Attributes
KPACGPreconditioner Class Reference

KPA-preconditioned CG-preconditioner. More...

`#include <KPAPreconditioner.h>`

Inheritance diagram for KPACGPreconditioner:
[legend]
Collaboration diagram for KPACGPreconditioner:
[legend]

## Public Member Functions

| 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 ()
virtual std::string | description () const
| Description of the preconditioner. More...
virtual void | setup ()
| Initialize the preconditioner. 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 void | update (Real E)
| Update the preconditioner for the next energy. More...
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 | lock_kpa_access () const
void | unlock_kpa_access () const

## Protected Attributes

iArray | refcount_atom_
iArray | refcount_proj_
cArrays | workspace_
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_

## Detailed Description

This nested preconditioner simplifies the Hamiltonian matrix by omitting electron-electron interaction. The block of the matrix can then be written as a sum of simple Kronecker products

\[ \mathsf{A} = E\mathsf{S}\otimes\mathsf{S} - \mathsf{H}_1\otimes\mathsf{S} - \mathsf{S}\otimes\mathsf{H}_2 \,, \]

which can be easily diagonalized (only diagonalization of the small matrices are needed) and so also inverted, which we need for solution of the equations.

## Constructor & Destructor Documentation

## ◆ KPACGPreconditioner()

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

inline

## ◆ ~KPACGPreconditioner()

virtual KPACGPreconditioner::~KPACGPreconditioner | ( |  | ) |

inlinevirtual

## Member Function Documentation

## ◆ CG_exit()

void KPACGPreconditioner::CG_exit | ( | int | iblock | ) | const

virtual

Reimplemented from CGPreconditioner.

Reimplemented in HybCGPreconditioner.

## ◆ CG_init()

void KPACGPreconditioner::CG_init | ( | int | iblock | ) | const

virtual

Reimplemented from CGPreconditioner.

Reimplemented in HybCGPreconditioner.

## ◆ CG_prec()

void KPACGPreconditioner::CG_prec | ( | int | iblock,
|  | const cArrayView | r,
|  | cArrayView | z
| ) |  | const

virtual

Reimplemented from CGPreconditioner.

Reimplemented in HybCGPreconditioner.

## ◆ description()

std::string KPACGPreconditioner::description | ( |  | ) | const

virtual

Simple documentation of the preconditioner.

Reimplemented from CGPreconditioner.

Reimplemented in GPUCGPreconditioner, and HybCGPreconditioner.

## ◆ finish()

void KPACGPreconditioner::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 GPUCGPreconditioner, and HybCGPreconditioner.

## ◆ lock_kpa_access()

void KPACGPreconditioner::lock_kpa_access | ( |  | ) | const

protected

## ◆ preconditionerRunTimeSelectionDefinitions()

KPACGPreconditioner::preconditionerRunTimeSelectionDefinitions | ( | KPACGPreconditioner | ,
|  | "KPA" |
| ) |  |

inline

## ◆ setup()

void KPACGPreconditioner::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 GPUCGPreconditioner, and HybCGPreconditioner.

## ◆ unlock_kpa_access()

void KPACGPreconditioner::unlock_kpa_access | ( |  | ) | const

protected

## Field Documentation

## ◆ refcount_atom_

iArray KPACGPreconditioner::refcount_atom_

mutableprotected

## ◆ refcount_proj_

iArray KPACGPreconditioner::refcount_proj_

mutableprotected

## ◆ workspace_

cArrays KPACGPreconditioner::workspace_

mutableprotected

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

- src/preconditioners/KPAPreconditioner.h
- src/preconditioners/KPAPreconditioner.cpp