Hex  2.2
Hydrogen-electron collision solver
Public Member Functions | Data Fields
GMGPreconditioner Class Reference

#include <GMGPreconditioner.h>

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

Public Member Functions

 preconditionerRunTimeSelectionDefinitions (GMGPreconditioner, "GMG") GMGPreconditioner(CommandLine const &cmd
 
 GMGPreconditioner (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, int level)
 
virtual ~GMGPreconditioner ()
 
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 precondition (BlockArray< Complex > const &r, BlockArray< Complex > &z) const
 Precondition the equation. 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 std::pair< int, int > bstates (Real E, int l1, int l2) const
 Get the number of allowed bound states. More...
 
virtual void finish ()
 Clean up memory etc. 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...
 

Data Fields

InputFile const & inp
 
InputFile const Parallel const & par
 
InputFile const Parallel const AngularBasis const & ang
 
InputFile const Parallel const AngularBasis const Bspline const & bspline_x_inner
 
InputFile const Parallel const AngularBasis const Bspline const Bspline const & bspline_x_full
 
InputFile const Parallel const AngularBasis const Bspline const Bspline const Bspline const & bspline_y_inner
 
InputFile const Parallel const AngularBasis const Bspline const Bspline const Bspline const Bspline const & bspline_y_full
 

Additional Inherited Members

- 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

◆ GMGPreconditioner()

GMGPreconditioner::GMGPreconditioner ( 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,
int  level 
)

◆ ~GMGPreconditioner()

GMGPreconditioner::~GMGPreconditioner ( )
virtual

Member Function Documentation

◆ description()

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

Simple documentation of the preconditioner.

Reimplemented from NoPreconditioner.

◆ precondition()

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

VERIFY

Reimplemented from NoPreconditioner.

◆ preconditionerRunTimeSelectionDefinitions()

GMGPreconditioner::preconditionerRunTimeSelectionDefinitions ( GMGPreconditioner  ,
"GMG"   
) const &

◆ setup()

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

◆ update()

void GMGPreconditioner::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

◆ ang

InputFile const Parallel const AngularBasis const& GMGPreconditioner::ang

◆ bspline_x_full

InputFile const Parallel const AngularBasis const Bspline const Bspline const& GMGPreconditioner::bspline_x_full

◆ bspline_x_inner

InputFile const Parallel const AngularBasis const Bspline const& GMGPreconditioner::bspline_x_inner

◆ bspline_y_full

InputFile const Parallel const AngularBasis const Bspline const Bspline const Bspline const Bspline const& GMGPreconditioner::bspline_y_full

◆ bspline_y_inner

InputFile const Parallel const AngularBasis const Bspline const Bspline const Bspline const& GMGPreconditioner::bspline_y_inner

◆ inp

InputFile const& GMGPreconditioner::inp

◆ par

InputFile const Parallel const& GMGPreconditioner::par

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