DFT-EFE
 
Loading...
Searching...
No Matches
dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace > Class Template Reference

A derived class of OperatorContext to encapsulate the action of a discrete operator on vectors, matrices, etc. More...

#include <ChebyshevFilteredEigenSolver.h>

Inheritance diagram for dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >:
Collaboration diagram for dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >:

Public Types

using ValueType = blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >
 define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e.g., between double and complex<double>, complex<double> is the bigger set) More...
 
using RealType = blasLapack::real_type< ValueType >
 
using OpContext = typename HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext
 

Public Member Functions

 ChebyshevFilteredEigenSolver (const double wantedSpectrumLowerBound, const double wantedSpectrumUpperBound, const double unWantedSpectrumUpperBound, const double polynomialDegree, const double illConditionTolerance, MultiVector< ValueTypeOperand, memorySpace > &eigenSubspaceGuess, const ElpaScalapackManager &elpaScala, bool isResidualChebyshevFilter=true, const size_type eigenVectorBatchSize=0, OrthogonalizationType orthoType=OrthogonalizationType::CHOLESKY_GRAMSCHMIDT, bool storeIntermediateSubspaces=false)
 Constructor. More...
 
 ~ChebyshevFilteredEigenSolver ()=default
 Destructor. More...
 
void reinit (const double wantedSpectrumLowerBound, const double wantedSpectrumUpperBound, const double unWantedSpectrumUpperBound, const double polynomialDegree, const double illConditionTolerance, MultiVector< ValueTypeOperand, memorySpace > &eigenSubspaceGuess)
 
EigenSolverError solve (const OpContext &A, std::vector< RealType > &eigenValues, MultiVector< ValueType, memorySpace > &eigenVectors, bool computeEigenVectors=false, const OpContext &B=IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), const OpContext &BInv=IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >()) override
 
MultiVector< ValueType, memorySpace > & getFilteredSubspace ()
 
MultiVector< ValueType, memorySpace > & getOrthogonalizedFilteredSubspace ()
 

Private Attributes

double d_wantedSpectrumLowerBound
 
double d_wantedSpectrumUpperBound
 
double d_unWantedSpectrumUpperBound
 
double d_polynomialDegree
 
double d_illConditionTolerance
 
MultiVector< ValueTypeOperand, memorySpace > * d_eigenSubspaceGuess
 
const size_type d_eigenVecBatchSize
 
const bool d_storeIntermediateSubspaces
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_filteredSubspace
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_filteredSubspaceOrtho
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XinBatchSmall
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XinBatch
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XoutBatchSmall
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XoutBatch
 
std::shared_ptr< RayleighRitzEigenSolver< ValueTypeOperator, ValueType, memorySpace > > d_rr
 
std::shared_ptr< OrthonormalizationFunctions< ValueTypeOperator, ValueType, memorySpace > > d_ortho
 
utils::Profiler d_p
 
const bool d_isResidualChebyFilter
 
size_type d_batchSizeSmall
 
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > d_mpiPatternP2P
 
bool d_printL2Norms
 
OrthogonalizationType d_orthoType
 
const ElpaScalapackManagerd_elpaScala
 

Detailed Description

template<typename ValueTypeOperator, typename ValueTypeOperand, utils::MemorySpace memorySpace>
class dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >

A derived class of OperatorContext to encapsulate the action of a discrete operator on vectors, matrices, etc.

Template Parameters
ValueTypeOperatorThe datatype (float, double, complex<double>, etc.) for the underlying operator
ValueTypeOperandThe datatype (float, double, complex<double>, etc.) of the vector, matrices, etc. on which the operator will act
memorySpaceThe meory sapce (HOST, DEVICE, HOST_PINNED, etc.) in which the data of the operator and its operands reside

Member Typedef Documentation

◆ OpContext

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
using dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext = typename HermitianIterativeEigenSolver<ValueTypeOperator, ValueTypeOperand, memorySpace>::OpContext

◆ RealType

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
using dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::RealType = blasLapack::real_type<ValueType>

◆ ValueType

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
using dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::ValueType = blasLapack::scalar_type<ValueTypeOperator, ValueTypeOperand>

define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e.g., between double and complex<double>, complex<double> is the bigger set)

Constructor & Destructor Documentation

◆ ChebyshevFilteredEigenSolver()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::ChebyshevFilteredEigenSolver ( const double  wantedSpectrumLowerBound,
const double  wantedSpectrumUpperBound,
const double  unWantedSpectrumUpperBound,
const double  polynomialDegree,
const double  illConditionTolerance,
MultiVector< ValueTypeOperand, memorySpace > &  eigenSubspaceGuess,
const ElpaScalapackManager elpaScala,
bool  isResidualChebyshevFilter = true,
const size_type  eigenVectorBatchSize = 0,
OrthogonalizationType  orthoType = OrthogonalizationType::CHOLESKY_GRAMSCHMIDT,
bool  storeIntermediateSubspaces = false 
)

Constructor.

Here is the call graph for this function:

◆ ~ChebyshevFilteredEigenSolver()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::~ChebyshevFilteredEigenSolver ( )
default

Destructor.

Member Function Documentation

◆ getFilteredSubspace()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
MultiVector< blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >, memorySpace > & dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::getFilteredSubspace
Here is the call graph for this function:

◆ getOrthogonalizedFilteredSubspace()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
MultiVector< blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >, memorySpace > & dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::getOrthogonalizedFilteredSubspace
Here is the call graph for this function:

◆ reinit()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::reinit ( const double  wantedSpectrumLowerBound,
const double  wantedSpectrumUpperBound,
const double  unWantedSpectrumUpperBound,
const double  polynomialDegree,
const double  illConditionTolerance,
MultiVector< ValueTypeOperand, memorySpace > &  eigenSubspaceGuess 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
EigenSolverError dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::solve ( const OpContext A,
std::vector< RealType > &  eigenValues,
MultiVector< ValueType, memorySpace > &  eigenVectors,
bool  computeEigenVectors = false,
const OpContext B = IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>(),
const OpContext BInv = IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() 
)
override
Here is the call graph for this function:

Member Data Documentation

◆ d_batchSizeSmall

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
size_type dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_batchSizeSmall
private

◆ d_eigenSubspaceGuess

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
MultiVector<ValueTypeOperand, memorySpace>* dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_eigenSubspaceGuess
private

◆ d_eigenVecBatchSize

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
const size_type dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_eigenVecBatchSize
private

◆ d_elpaScala

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
const ElpaScalapackManager* dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_elpaScala
private

◆ d_filteredSubspace

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_filteredSubspace
private

◆ d_filteredSubspaceOrtho

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_filteredSubspaceOrtho
private

◆ d_illConditionTolerance

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
double dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_illConditionTolerance
private

◆ d_isResidualChebyFilter

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
const bool dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_isResidualChebyFilter
private

◆ d_mpiPatternP2P

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace> > dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_mpiPatternP2P
private

◆ d_ortho

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr< OrthonormalizationFunctions<ValueTypeOperator, ValueType, memorySpace> > dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_ortho
private

◆ d_orthoType

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
OrthogonalizationType dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_orthoType
private

◆ d_p

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
utils::Profiler dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_p
private

◆ d_polynomialDegree

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
double dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_polynomialDegree
private

◆ d_printL2Norms

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
bool dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_printL2Norms
private

◆ d_rr

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr< RayleighRitzEigenSolver<ValueTypeOperator, ValueType, memorySpace> > dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_rr
private

◆ d_storeIntermediateSubspaces

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
const bool dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_storeIntermediateSubspaces
private

◆ d_unWantedSpectrumUpperBound

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
double dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_unWantedSpectrumUpperBound
private

◆ d_wantedSpectrumLowerBound

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
double dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_wantedSpectrumLowerBound
private

◆ d_wantedSpectrumUpperBound

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
double dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_wantedSpectrumUpperBound
private

◆ d_XinBatch

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_XinBatch
private

◆ d_XinBatchSmall

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_XinBatchSmall
private

◆ d_XoutBatch

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_XoutBatch
private

◆ d_XoutBatchSmall

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_XoutBatchSmall
private

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