26#ifndef dftefeKohnShamEigenSolver_h
27#define dftefeKohnShamEigenSolver_h
52 template <
typename ValueTypeOperator,
53 typename ValueTypeOperand,
56 :
public linearAlgebra::HermitianIterativeEigenSolver<ValueTypeOperator,
67 using ValueType =
typename linearAlgebra::HermitianIterativeEigenSolver<
71 using RealType =
typename linearAlgebra::HermitianIterativeEigenSolver<
75 using OpContext =
typename linearAlgebra::HermitianIterativeEigenSolver<
89 const double smearingTemperature,
90 const double fermiEnergyTolerance,
91 const double fracOccupancyTolerance,
92 const double eigenSolveResidualTolerance,
95 &waveFunctionSubspaceGuess,
97 const size_type waveFunctionBlockSize = 0,
116 &waveFunctionSubspaceGuess,
129 double wantedSpectrumUpperBound);
134 std::vector<RealType>
137 std::vector<RealType>
142 std::vector<RealType> &kohnShamEnergies,
144 & kohnShamWaveFunctions,
145 bool computeWaveFunctions =
false,
153 memorySpace>())
override;
Definition: KohnShamEigenSolver.h:59
RealType getFermiEnergy()
Definition: KohnShamEigenSolver.t.cpp:454
typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext OpContext
Definition: KohnShamEigenSolver.h:78
bool d_isSolved
Definition: KohnShamEigenSolver.h:178
typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::ValueType ValueType
define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e....
Definition: KohnShamEigenSolver.h:70
size_type d_maxChebyshevFilterPass
Definition: KohnShamEigenSolver.h:166
double d_eigenSolveResidualTolerance
Definition: KohnShamEigenSolver.h:165
const size_type d_numElectrons
Definition: KohnShamEigenSolver.h:179
double d_smearingTemperature
Definition: KohnShamEigenSolver.h:162
bool d_isBoundKnown
Definition: KohnShamEigenSolver.h:183
linearAlgebra::EigenSolverError solve(const OpContext &kohnShamOperator, std::vector< RealType > &kohnShamEnergies, linearAlgebra::MultiVector< ValueType, memorySpace > &kohnShamWaveFunctions, bool computeWaveFunctions=false, const OpContext &M=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), const OpContext &MInv=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >()) override
Definition: KohnShamEigenSolver.t.cpp:127
const OpContext * d_MInvLanczos
Definition: KohnShamEigenSolver.h:174
utils::ConditionalOStream d_rootCout
Definition: KohnShamEigenSolver.h:180
linearAlgebra::MultiVector< ValueType, memorySpace > & getFilteredSubspace()
Definition: KohnShamEigenSolver.t.cpp:504
std::vector< RealType > getEigenSolveResidualNorm()
Definition: KohnShamEigenSolver.t.cpp:486
const OpContext * d_MLanczos
Definition: KohnShamEigenSolver.h:173
linearAlgebra::MultiVector< ValueType, memorySpace > & getOrthogonalizedFilteredSubspace()
Definition: KohnShamEigenSolver.t.cpp:522
std::vector< RealType > d_fracOccupancy
Definition: KohnShamEigenSolver.h:175
RealType d_fermiEnergy
Definition: KohnShamEigenSolver.h:177
linearAlgebra::Vector< ValueTypeOperand, memorySpace > * d_lanczosGuess
Definition: KohnShamEigenSolver.h:172
size_type d_waveFunctionBlockSize
Definition: KohnShamEigenSolver.h:169
std::vector< RealType > d_eigSolveResNorm
Definition: KohnShamEigenSolver.h:176
~KohnShamEigenSolver()=default
Default Destructor.
double d_wantedSpectrumLowerBound
Definition: KohnShamEigenSolver.h:181
void reinitBasis(linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &waveFunctionSubspaceGuess, linearAlgebra::Vector< ValueTypeOperand, memorySpace > &lanczosGuess, const OpContext &MLanczos=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), const OpContext &MInvLanczos=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >())
Definition: KohnShamEigenSolver.t.cpp:89
void reinitBounds(double wantedSpectrumLowerBound, double wantedSpectrumUpperBound)
Definition: KohnShamEigenSolver.t.cpp:113
size_type d_numWantedEigenvalues
Definition: KohnShamEigenSolver.h:168
linearAlgebra::MultiVector< ValueType, memorySpace > * d_filteredSubspace
Definition: KohnShamEigenSolver.h:187
typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::RealType RealType
Definition: KohnShamEigenSolver.h:74
double d_fracOccupancyTolerance
Definition: KohnShamEigenSolver.h:164
size_type d_chebyshevPolynomialDegree
Definition: KohnShamEigenSolver.h:167
std::vector< RealType > getFractionalOccupancy()
Definition: KohnShamEigenSolver.t.cpp:470
linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > * d_waveFunctionSubspaceGuess
Definition: KohnShamEigenSolver.h:171
double d_fermiEnergyTolerance
Definition: KohnShamEigenSolver.h:163
linearAlgebra::MultiVector< ValueType, memorySpace > * d_filteredSubspaceOrtho
Definition: KohnShamEigenSolver.h:186
double d_wantedSpectrumUpperBound
Definition: KohnShamEigenSolver.h:182
Abstract class to encapsulate the action of a discrete operator on vectors, matrices,...
Definition: IdentityOperatorContext.h:53
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
A class that encapsulates a vector. This is a vector in the mathematical sense and not in the sense o...
Definition: Vector.h:122
Provides an interface to print based on whether a certain condition is met or not....
Definition: ConditionalOStream.h:45
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8
Definition: LinearAlgebraTypes.h:127