26#ifndef dftefeChebyshevFilteredEigenSolver_h
27#define dftefeChebyshevFilteredEigenSolver_h
44 namespace linearAlgebra
64 template <
typename ValueTypeOperator,
65 typename ValueTypeOperand,
68 :
public HermitianIterativeEigenSolver<ValueTypeOperator,
83 typename HermitianIterativeEigenSolver<ValueTypeOperator,
92 const double wantedSpectrumLowerBound,
93 const double wantedSpectrumUpperBound,
94 const double unWantedSpectrumUpperBound,
95 const double polynomialDegree,
96 const double illConditionTolerance,
101 bool isResidualChebyshevFilter =
true,
102 const size_type eigenVectorBatchSize = 0,
106 bool storeIntermediateSubspaces =
false,
117 reinit(
const double wantedSpectrumLowerBound,
118 const double wantedSpectrumUpperBound,
119 const double unWantedSpectrumUpperBound,
120 const double polynomialDegree,
121 const double illConditionTolerance,
128 std::vector<RealType> & eigenValues,
130 bool computeEigenVectors =
false,
137 memorySpace>())
override;
182 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
191 std::shared_ptr<MultivectorScratch<ValueType, memorySpace>>
d_scratch;
A derived class of OperatorContext to encapsulate the action of a discrete operator on vectors,...
Definition: ChebyshevFilteredEigenSolver.h:71
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XinBatchSmall
Definition: ChebyshevFilteredEigenSolver.h:161
std::shared_ptr< RayleighRitzEigenSolver< ValueTypeOperator, ValueType, memorySpace > > d_rr
Definition: ChebyshevFilteredEigenSolver.h:172
const bool d_isResidualChebyFilter
Definition: ChebyshevFilteredEigenSolver.h:179
MultiVector< ValueTypeOperand, memorySpace > * d_eigenSubspaceGuess
Definition: ChebyshevFilteredEigenSolver.h:154
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_filteredSubspace
Definition: ChebyshevFilteredEigenSolver.h:158
double d_polynomialDegree
Definition: ChebyshevFilteredEigenSolver.h:152
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_chfsiResidualScratch1
Definition: ChebyshevFilteredEigenSolver.h:165
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_filteredSubspaceOrtho
Definition: ChebyshevFilteredEigenSolver.h:159
double d_wantedSpectrumUpperBound
Definition: ChebyshevFilteredEigenSolver.h:150
MultiVector< ValueType, memorySpace > & getFilteredSubspace()
Definition: ChebyshevFilteredEigenSolver.t.cpp:639
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_chfsiResidualScratch2
Definition: ChebyshevFilteredEigenSolver.h:165
void printTotalInScopeTimings()
Definition: ChebyshevFilteredEigenSolver.t.cpp:679
MultiVector< ValueType, memorySpace > & getOrthogonalizedFilteredSubspace()
Definition: ChebyshevFilteredEigenSolver.t.cpp:660
double d_unWantedSpectrumUpperBound
Definition: ChebyshevFilteredEigenSolver.h:151
blasLapack::real_type< ValueType > RealType
Definition: ChebyshevFilteredEigenSolver.h:81
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_chfsiResidualScratch2Small
Definition: ChebyshevFilteredEigenSolver.h:168
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XoutBatch
Definition: ChebyshevFilteredEigenSolver.h:162
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XoutBatchSmall
Definition: ChebyshevFilteredEigenSolver.h:162
bool d_printL2Norms
Definition: ChebyshevFilteredEigenSolver.h:184
utils::Profiler< memorySpace > d_pTotal
Definition: ChebyshevFilteredEigenSolver.h:178
double d_wantedSpectrumLowerBound
Definition: ChebyshevFilteredEigenSolver.h:149
size_type d_batchSizeSmall
Definition: ChebyshevFilteredEigenSolver.h:180
typename HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext OpContext
Definition: ChebyshevFilteredEigenSolver.h:85
const bool d_isGHEP
Definition: ChebyshevFilteredEigenSolver.h:189
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
Definition: ChebyshevFilteredEigenSolver.t.cpp:261
const bool d_storeIntermediateSubspaces
Definition: ChebyshevFilteredEigenSolver.h:156
const size_type d_eigenVecBatchSize
Definition: ChebyshevFilteredEigenSolver.h:155
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_chfsiScratch2
Definition: ChebyshevFilteredEigenSolver.h:165
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_chfsiScratch1Small
Definition: ChebyshevFilteredEigenSolver.h:166
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XinBatch
Definition: ChebyshevFilteredEigenSolver.h:162
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_chfsiScratch1
Definition: ChebyshevFilteredEigenSolver.h:164
void reinit(const double wantedSpectrumLowerBound, const double wantedSpectrumUpperBound, const double unWantedSpectrumUpperBound, const double polynomialDegree, const double illConditionTolerance, std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext)
Definition: ChebyshevFilteredEigenSolver.t.cpp:173
double d_illConditionTolerance
Definition: ChebyshevFilteredEigenSolver.h:153
OrthogonalizationType d_orthoType
Definition: ChebyshevFilteredEigenSolver.h:185
utils::Profiler< memorySpace > d_p
Definition: ChebyshevFilteredEigenSolver.h:178
std::shared_ptr< OrthonormalizationFunctions< ValueTypeOperator, ValueType, memorySpace > > d_ortho
Definition: ChebyshevFilteredEigenSolver.h:176
~ChebyshevFilteredEigenSolver()=default
Destructor.
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_chfsiResidualScratch1Small
Definition: ChebyshevFilteredEigenSolver.h:167
blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand > ValueType
define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e....
Definition: ChebyshevFilteredEigenSolver.h:80
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_chfsiScratch2Small
Definition: ChebyshevFilteredEigenSolver.h:167
const ElpaScalapackManager * d_elpaScala
Definition: ChebyshevFilteredEigenSolver.h:187
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > d_mpiPatternP2P
Definition: ChebyshevFilteredEigenSolver.h:183
std::shared_ptr< MultivectorScratch< ValueType, memorySpace > > d_scratch
Definition: ChebyshevFilteredEigenSolver.h:191
Manager class for ELPA and ScaLAPACK.
Definition: ElpaScalapackManager.h:43
Abstract class to encapsulate the action of a discrete operator on vectors, matrices,...
Definition: IdentityOperatorContext.h:53
Definition: LinAlgOpContext.h:52
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
Shared scratch MultiVectors (large-batch and small-batch variants) that can be reused across Chebyshe...
Definition: MultivectorScratch.h:52
Definition: OrthonormalizationFunctions.h:49
A derived class of OperatorContext to encapsulate the action of a discrete operator on vectors,...
Definition: RayleighRitzEigenSolver.h:59
Definition: Profiler.h:50
A class template to store the communication pattern (i.e., which entries/nodes to receive from which ...
Definition: MPIPatternP2P.h:197
typeInternal::real_type< ValueType > real_type
Definition: BlasLapackTypedef.h:177
typeInternal::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:183
OrthogonalizationType
Definition: ChebyshevFilteredEigenSolver.h:47
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9
Definition: LinearAlgebraTypes.h:147