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

#include <CoupledPreconditioner.h>

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

Public Member Functions

 preconditionerRunTimeSelectionDefinitions (CoupledPreconditioner, "coupled") CoupledPreconditioner()
 
 CoupledPreconditioner (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 std::string description () const
 Description of the preconditioner. More...
 
virtual void update (Real E)
 Update the preconditioner for the next energy. More...
 
virtual void precondition (BlockArray< Complex > const &r, BlockArray< Complex > &z) const
 Precondition the equation. More...
 
virtual void finish ()
 Clean up memory etc. More...
 
- 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 setup ()
 Initialize the preconditioner. 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 Attributes

LUftData data_
 
std::shared_ptr< LUftlu_
 
cArray X
 
cArray Y
 
- 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_
 

Constructor & Destructor Documentation

◆ CoupledPreconditioner()

CoupledPreconditioner::CoupledPreconditioner ( 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

Member Function Documentation

◆ description()

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

Simple documentation of the preconditioner.

Reimplemented from NoPreconditioner.

◆ finish()

void CoupledPreconditioner::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 NoPreconditioner.

◆ precondition()

void CoupledPreconditioner::precondition ( BlockArray< Complex > const &  r,
BlockArray< Complex > &  z 
) const
virtual

This function preconditions the equation, solving the preconditioner equation

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

It may use the MPI environment.

Reimplemented from NoPreconditioner.

◆ preconditionerRunTimeSelectionDefinitions()

CoupledPreconditioner::preconditionerRunTimeSelectionDefinitions ( CoupledPreconditioner  ,
"coupled"   
)
inline

◆ update()

void CoupledPreconditioner::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.

Field Documentation

◆ data_

LUftData CoupledPreconditioner::data_
protected

◆ lu_

std::shared_ptr<LUft> CoupledPreconditioner::lu_
protected

◆ X

cArray CoupledPreconditioner::X
mutableprotected

◆ Y

cArray CoupledPreconditioner::Y
mutableprotected

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