|
using | ValueType = typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::ValueType |
| 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 = typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::RealType |
|
using | OpContext = typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext |
|
|
| KohnShamEigenSolver (const size_type numElectrons, const double smearingTemperature, const double fermiEnergyTolerance, const double fracOccupancyTolerance, const double eigenSolveResidualTolerance, const size_type maxChebyshevFilterPass, linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &waveFunctionSubspaceGuess, linearAlgebra::Vector< ValueTypeOperand, memorySpace > &lanczosGuess, const linearAlgebra::ElpaScalapackManager &elpaScala, bool isResidualChebyshevFilter=true, const size_type waveFunctionBatchSize=0, const OpContext &MLanczos=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), const OpContext &MInvLanczos=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), linearAlgebra::OrthogonalizationType orthoType=linearAlgebra::OrthogonalizationType::CHOLESKY_GRAMSCHMIDT, bool storeIntermediateSubspaces=false) |
| Constructor The occupation Tolerance is such that one considers the Kohn Sham Orbitals occupied if occupationTolerance < f_i(from
diftribution) < 1-1e-12. More...
|
|
| ~KohnShamEigenSolver ()=default |
| Default Destructor. More...
|
|
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 >()) |
|
void | reinitBounds (double wantedSpectrumLowerBound, double wantedSpectrumUpperBound) |
|
RealType | getFermiEnergy () |
|
std::vector< RealType > | getFractionalOccupancy () |
|
std::vector< RealType > | getEigenSolveResidualNorm () |
|
void | setChebyPolyScalingFactor (double scalingFactor) |
|
void | setChebyshevPolynomialDegree (size_type chebyPolyDeg) |
|
void | setResidualChebyshevFilterFlag (bool flag) |
|
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 |
|
linearAlgebra::MultiVector< ValueType, memorySpace > & | getFilteredSubspace () |
|
linearAlgebra::MultiVector< ValueType, memorySpace > & | getOrthogonalizedFilteredSubspace () |
|
|
double | d_smearingTemperature |
|
double | d_fermiEnergyTolerance |
|
double | d_fracOccupancyTolerance |
|
double | d_eigenSolveResidualTolerance |
|
size_type | d_maxChebyshevFilterPass |
|
size_type | d_chebyshevPolynomialDegree |
|
size_type | d_numWantedEigenvalues |
|
size_type | d_waveFunctionBatchSize |
|
linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > * | d_waveFunctionSubspaceGuess |
|
linearAlgebra::Vector< ValueTypeOperand, memorySpace > * | d_lanczosGuess |
|
const OpContext * | d_MLanczos |
|
const OpContext * | d_MInvLanczos |
|
std::vector< RealType > | d_fracOccupancy |
|
std::vector< RealType > | d_eigSolveResNorm |
|
RealType | d_fermiEnergy |
|
bool | d_isSolved |
|
const size_type | d_numElectrons |
|
utils::ConditionalOStream | d_rootCout |
|
double | d_wantedSpectrumLowerBound |
|
double | d_wantedSpectrumUpperBound |
|
bool | d_isBoundKnown |
|
double | d_chebyPolyScalingFactor |
|
bool | d_setChebyPolDegExternally |
|
std::shared_ptr< linearAlgebra::ChebyshevFilteredEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace > > | d_chfsi |
|
linearAlgebra::MultiVector< ValueType, memorySpace > * | d_filteredSubspaceOrtho |
|
linearAlgebra::MultiVector< ValueType, memorySpace > * | d_filteredSubspace |
|
utils::Profiler | d_p |
|
bool | d_isResidualChebyFilter |
|
const bool | d_storeIntermediateSubspaces |
|
size_type | d_batchSizeSmall |
|
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > | d_waveFnBatch |
|
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > | d_HXBatch |
|
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > | d_MXBatch |
|
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > | d_waveFnBatchSmall |
|
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > | d_HXBatchSmall |
|
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > | d_MXBatchSmall |
|
utils::MemoryStorage< ValueType, memorySpace > | d_kohnShamEnergiesMemspace |
|
utils::MemoryStorage< ValueType, memorySpace > | d_nOnes |
|
linearAlgebra::OrthogonalizationType | d_orthoType |
|
const linearAlgebra::ElpaScalapackManager * | d_elpaScala |
|
template<typename ValueTypeOperator, typename ValueTypeOperand,
utils::MemorySpace memorySpace>
class dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >
- Template Parameters
-
ValueTypeOperator | The datatype (float, double, complex<double>, etc.) for the underlying operator |
ValueTypeOperand | The datatype (float, double, complex<double>, etc.) of the vector, matrices, etc. on which the operator will act |
memorySpace | The meory sapce (HOST, DEVICE, HOST_PINNED, etc.) in which the data of the operator and its operands reside |