Grid 0.7.0
ImplicitlyRestartedBlockLanczosCoarse< Field > Class Template Reference

#include <ImplicitlyRestartedBlockLanczosCoarse.h>

Public Member Functions

 ImplicitlyRestartedBlockLanczosCoarse (LinearOperatorBase< Field > &Linop, GridBase *f_Grid, GridBase *mrhs_Grid, int _mrhs, OperatorFunction< Field > &poly, int _Nstop, int _Nconv_test_interval, int _Nu, int _Nk, int _Nm, RealD _eresid, int _MaxIter, IRBLdiagonalisation _diagonalisation=IRBLdiagonaliseWithEigen)
void orthogonalize (Field &w, std::vector< Field > &evec, int k, int if_print=0)
void reorthogonalize (Field &w, std::vector< Field > &evec, int k)
void orthogonalize (std::vector< Field > &w, int _Nu, std::vector< Field > &evec, int k, int if_print=0)
void orthogonalize_blockhead (Field &w, std::vector< Field > &evec, int k, int Nu)
void calc (std::vector< RealD > &eval, std::vector< Field > &evec, const std::vector< Field > &src, int &Nconv, LanczosType Impl)
void calc_irbl (std::vector< RealD > &eval, std::vector< Field > &evec, const std::vector< Field > &src, int &Nconv)
void calc_rbl (std::vector< RealD > &eval, std::vector< Field > &evec, const std::vector< Field > &src, int &Nconv)

Static Public Member Functions

static RealD normalize (Field &v, int if_print=0)

Private Member Functions

void VectorPoly (std::vector< Field > &in, std::vector< Field > &out)
void SingleOperator (Field &in, Field &out)
void blockwiseStep (std::vector< std::vector< ComplexD > > &lmd, std::vector< std::vector< ComplexD > > &lme, std::vector< Field > &evec, std::vector< Field > &w, std::vector< Field > &w_copy, int b)
void diagonalize_Eigen (std::vector< RealD > &eval, std::vector< std::vector< ComplexD > > &lmd, std::vector< std::vector< ComplexD > > &lme, int Nu, int Nk, int Nm, Eigen::MatrixXcd &Qt, GridBase *grid)
void diagonalize (std::vector< RealD > &eval, std::vector< std::vector< ComplexD > > &lmd, std::vector< std::vector< ComplexD > > &lme, int Nu, int Nk, int Nm, Eigen::MatrixXcd &Qt, GridBase *grid)
void unpackHermitBlockTriDiagMatToEigen (std::vector< std::vector< ComplexD > > &lmd, std::vector< std::vector< ComplexD > > &lme, int Nu, int Nb, int Nk, int Nm, Eigen::MatrixXcd &M)
void packHermitBlockTriDiagMatfromEigen (std::vector< std::vector< ComplexD > > &lmd, std::vector< std::vector< ComplexD > > &lme, int Nu, int Nb, int Nk, int Nm, Eigen::MatrixXcd &M)
void shiftedQRDecompEigen (Eigen::MatrixXcd &M, int Nu, int Nm, RealD Dsh, Eigen::MatrixXcd &Qprod)
void exampleQRDecompEigen (void)

Private Attributes

std::string cname
int MaxIter
int Nstop
int Nu
int Nk
int Nm
int Nblock_k
int Nblock_m
int Nconv_test_interval
RealD eresid
IRBLdiagonalisation diagonalisation
SortEigen< Field > _sort
LinearOperatorBase< Field > & _Linop
OperatorFunction< Field > & _poly
GridBasef_grid
GridBasemrhs_grid
int mrhs
int Nevec_acc

Detailed Description

template<class Field>
class ImplicitlyRestartedBlockLanczosCoarse< Field >

Definition at line 42 of file ImplicitlyRestartedBlockLanczosCoarse.h.

Constructor & Destructor Documentation

◆ ImplicitlyRestartedBlockLanczosCoarse()

template<class Field>
ImplicitlyRestartedBlockLanczosCoarse< Field >::ImplicitlyRestartedBlockLanczosCoarse ( LinearOperatorBase< Field > & Linop,
GridBase * f_Grid,
GridBase * mrhs_Grid,
int _mrhs,
OperatorFunction< Field > & poly,
int _Nstop,
int _Nconv_test_interval,
int _Nu,
int _Nk,
int _Nm,
RealD _eresid,
int _MaxIter,
IRBLdiagonalisation _diagonalisation = IRBLdiagonaliseWithEigen )
inline

Member Function Documentation

◆ VectorPoly()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::VectorPoly ( std::vector< Field > & in,
std::vector< Field > & out )
inlineprivate

Definition at line 71 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References _Linop, _poly, ExtractSlice(), InsertSlice(), mrhs, and mrhs_grid.

Referenced by blockwiseStep().

◆ SingleOperator()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::SingleOperator ( Field & in,
Field & out )
inlineprivate

Definition at line 90 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References _Linop, ExtractSlice(), InsertSlice(), mrhs, and mrhs_grid.

Referenced by calc_irbl(), and calc_rbl().

◆ normalize()

template<class Field>
RealD ImplicitlyRestartedBlockLanczosCoarse< Field >::normalize ( Field & v,
int if_print = 0 )
inlinestatic

Definition at line 129 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References norm2(), and sqrt().

Referenced by orthogonalize(), orthogonalize(), and orthogonalize_blockhead().

◆ orthogonalize() [1/2]

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::orthogonalize ( Field & w,
std::vector< Field > & evec,
int k,
int if_print = 0 )
inline

◆ reorthogonalize()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::reorthogonalize ( Field & w,
std::vector< Field > & evec,
int k )
inline

Definition at line 156 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References orthogonalize().

◆ orthogonalize() [2/2]

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::orthogonalize ( std::vector< Field > & w,
int _Nu,
std::vector< Field > & evec,
int k,
int if_print = 0 )
inline

Definition at line 161 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References innerProduct(), and normalize().

◆ orthogonalize_blockhead()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::orthogonalize_blockhead ( Field & w,
std::vector< Field > & evec,
int k,
int Nu )
inline

Definition at line 175 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References innerProduct(), normalize(), and Nu.

◆ calc()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::calc ( std::vector< RealD > & eval,
std::vector< Field > & evec,
const std::vector< Field > & src,
int & Nconv,
LanczosType Impl )
inline

Definition at line 187 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References calc_irbl(), calc_rbl(), and eval().

◆ calc_irbl()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::calc_irbl ( std::vector< RealD > & eval,
std::vector< Field > & evec,
const std::vector< Field > & src,
int & Nconv )
inline

◆ calc_rbl()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::calc_rbl ( std::vector< RealD > & eval,
std::vector< Field > & evec,
const std::vector< Field > & src,
int & Nconv )
inline

◆ blockwiseStep()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::blockwiseStep ( std::vector< std::vector< ComplexD > > & lmd,
std::vector< std::vector< ComplexD > > & lme,
std::vector< Field > & evec,
std::vector< Field > & w,
std::vector< Field > & w_copy,
int b )
inlineprivate

◆ diagonalize_Eigen()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::diagonalize_Eigen ( std::vector< RealD > & eval,
std::vector< std::vector< ComplexD > > & lmd,
std::vector< std::vector< ComplexD > > & lme,
int Nu,
int Nk,
int Nm,
Eigen::MatrixXcd & Qt,
GridBase * grid )
inlineprivate

Definition at line 730 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References conjugate(), eval(), Nk, Nm, and Nu.

Referenced by diagonalize().

◆ diagonalize()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::diagonalize ( std::vector< RealD > & eval,
std::vector< std::vector< ComplexD > > & lmd,
std::vector< std::vector< ComplexD > > & lme,
int Nu,
int Nk,
int Nm,
Eigen::MatrixXcd & Qt,
GridBase * grid )
inlineprivate

Definition at line 912 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References diagonalisation, diagonalize_Eigen(), eval(), Nk, Nm, and Nu.

Referenced by calc_irbl(), and calc_rbl().

◆ unpackHermitBlockTriDiagMatToEigen()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::unpackHermitBlockTriDiagMatToEigen ( std::vector< std::vector< ComplexD > > & lmd,
std::vector< std::vector< ComplexD > > & lme,
int Nu,
int Nb,
int Nk,
int Nm,
Eigen::MatrixXcd & M )
inlineprivate

Definition at line 932 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References conjugate(), Nk, Nm, and Nu.

Referenced by calc_irbl().

◆ packHermitBlockTriDiagMatfromEigen()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::packHermitBlockTriDiagMatfromEigen ( std::vector< std::vector< ComplexD > > & lmd,
std::vector< std::vector< ComplexD > > & lme,
int Nu,
int Nb,
int Nk,
int Nm,
Eigen::MatrixXcd & M )
inlineprivate

Definition at line 960 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References Nk, Nm, and Nu.

Referenced by calc_irbl().

◆ shiftedQRDecompEigen()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::shiftedQRDecompEigen ( Eigen::MatrixXcd & M,
int Nu,
int Nm,
RealD Dsh,
Eigen::MatrixXcd & Qprod )
inlineprivate

Definition at line 987 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References conj, Nm, Nu, and real().

Referenced by calc_irbl().

◆ exampleQRDecompEigen()

template<class Field>
void ImplicitlyRestartedBlockLanczosCoarse< Field >::exampleQRDecompEigen ( void )
inlineprivate

Definition at line 1091 of file ImplicitlyRestartedBlockLanczosCoarse.h.

References Glog.

Field Documentation

◆ cname

template<class Field>
std::string ImplicitlyRestartedBlockLanczosCoarse< Field >::cname
private

Definition at line 46 of file ImplicitlyRestartedBlockLanczosCoarse.h.

Referenced by calc_irbl(), and calc_rbl().

◆ MaxIter

template<class Field>
int ImplicitlyRestartedBlockLanczosCoarse< Field >::MaxIter
private

◆ Nstop

template<class Field>
int ImplicitlyRestartedBlockLanczosCoarse< Field >::Nstop
private

◆ Nu

◆ Nk

◆ Nm

◆ Nblock_k

template<class Field>
int ImplicitlyRestartedBlockLanczosCoarse< Field >::Nblock_k
private

◆ Nblock_m

template<class Field>
int ImplicitlyRestartedBlockLanczosCoarse< Field >::Nblock_m
private

◆ Nconv_test_interval

template<class Field>
int ImplicitlyRestartedBlockLanczosCoarse< Field >::Nconv_test_interval
private

◆ eresid

template<class Field>
RealD ImplicitlyRestartedBlockLanczosCoarse< Field >::eresid
private

◆ diagonalisation

template<class Field>
IRBLdiagonalisation ImplicitlyRestartedBlockLanczosCoarse< Field >::diagonalisation
private

◆ _sort

template<class Field>
SortEigen<Field> ImplicitlyRestartedBlockLanczosCoarse< Field >::_sort
private

Definition at line 60 of file ImplicitlyRestartedBlockLanczosCoarse.h.

Referenced by calc_irbl(), and calc_rbl().

◆ _Linop

template<class Field>
LinearOperatorBase<Field>& ImplicitlyRestartedBlockLanczosCoarse< Field >::_Linop
private

◆ _poly

template<class Field>
OperatorFunction<Field>& ImplicitlyRestartedBlockLanczosCoarse< Field >::_poly
private

◆ f_grid

template<class Field>
GridBase* ImplicitlyRestartedBlockLanczosCoarse< Field >::f_grid
private

◆ mrhs_grid

template<class Field>
GridBase* ImplicitlyRestartedBlockLanczosCoarse< Field >::mrhs_grid
private

◆ mrhs

template<class Field>
int ImplicitlyRestartedBlockLanczosCoarse< Field >::mrhs
private

◆ Nevec_acc

template<class Field>
int ImplicitlyRestartedBlockLanczosCoarse< Field >::Nevec_acc
private

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