#include <KohnShamEigenSolver.h>
Public Types | |
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 |
Public Member Functions | |
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 size_type waveFunctionBlockSize=0, const OpContext &MLanczos=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), const OpContext &MInvLanczos=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >()) | |
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 () |
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 () |
Private Attributes | |
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_waveFunctionBlockSize |
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 |
linearAlgebra::MultiVector< ValueType, memorySpace > * | d_filteredSubspaceOrtho |
linearAlgebra::MultiVector< ValueType, memorySpace > * | d_filteredSubspace |
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 |
using dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext = typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace>::OpContext |
using dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::RealType = typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace>::RealType |
using dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::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)
dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::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 size_type | waveFunctionBlockSize = 0 , |
||
const OpContext & | MLanczos = linearAlgebra::IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() , |
||
const OpContext & | MInvLanczos = linearAlgebra::IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() |
||
) |
Constructor The occupation Tolerance is such that one considers the Kohn Sham Orbitals occupied if occupationTolerance < f_i(from diftribution) < 1-1e-12.
|
default |
Default Destructor.
std::vector< typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::RealType > dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::getEigenSolveResidualNorm |
linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::RealType dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::getFermiEnergy |
linearAlgebra::MultiVector< typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::ValueType, memorySpace > & dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::getFilteredSubspace |
std::vector< typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::RealType > dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::getFractionalOccupancy |
linearAlgebra::MultiVector< typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::ValueType, memorySpace > & dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::getOrthogonalizedFilteredSubspace |
void dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::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 dftefe::ksdft::KohnShamEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::reinitBounds | ( | double | wantedSpectrumLowerBound, |
double | wantedSpectrumUpperBound | ||
) |
|
override |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |