#include <KohnShamDFT.h>
Public Types | |
using | HamiltonianPtrVariant = std::variant< Hamiltonian< float, memorySpace > *, Hamiltonian< double, memorySpace > *, Hamiltonian< std::complex< float >, memorySpace > *, Hamiltonian< std::complex< double >, memorySpace > * > |
using | ValueTypeOperator = linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis > |
using | ValueTypeOperand = linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff > |
using | ValueType = linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperator > |
using | RealType = linearAlgebra::blasLapack::real_type< ValueType > |
using | OpContext = typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext |
Public Member Functions | |
KohnShamDFT (const std::vector< utils::Point > &atomCoordinates, const std::vector< double > &atomCharges, const std::vector< double > &smearedChargeRadius, const size_type numElectrons, const size_type numWantedEigenvalues, const double smearingTemperature, const double fermiEnergyTolerance, const double fracOccupancyTolerance, const double eigenSolveResidualTolerance, const double scfDensityResidualNormTolerance, const size_type maxChebyshevFilterPass, const size_type maxSCFIter, const bool evaluateEnergyEverySCF, const size_type mixingHistory, const double mixingParameter, const bool isAdaptiveAndersonMixingParameter, const quadrature::QuadratureValuesContainer< RealType, memorySpace > &electronChargeDensityInput, std::shared_ptr< const basis::FEBasisManager< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, memorySpace, dim > > feBMTotalCharge, std::shared_ptr< const basis::FEBasisManager< ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > feBMWaveFn, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > feBDTotalChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > feBDTotalChargeRhs, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > feBDKineticHamiltonian, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > feBDElectrostaticsHamiltonian, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > feBDEXCHamiltonian, const utils::ScalarSpatialFunctionReal &externalPotentialFunction, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext, const OpContext &MContextForInv=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), const OpContext &MContext=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), const OpContext &MInvContext=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >()) | |
KohnShamDFT (const std::vector< utils::Point > &atomCoordinates, const std::vector< double > &atomCharges, const std::vector< double > &smearedChargeRadius, const size_type numElectrons, const size_type numWantedEigenvalues, const double smearingTemperature, const double fermiEnergyTolerance, const double fracOccupancyTolerance, const double eigenSolveResidualTolerance, const double scfDensityResidualNormTolerance, const size_type maxChebyshevFilterPass, const size_type maxSCFIter, const bool evaluateEnergyEverySCF, const size_type mixingHistory, const double mixingParameter, const bool isAdaptiveAndersonMixingParameter, const quadrature::QuadratureValuesContainer< RealType, memorySpace > &electronChargeDensityInput, std::shared_ptr< const basis::FEBasisManager< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, memorySpace, dim > > feBMTotalCharge, std::shared_ptr< const basis::FEBasisManager< ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > feBMWaveFn, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > feBDTotalChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > feBDTotalChargeRhs, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > feBDNuclearChargeStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > feBDNuclearChargeRhs, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > feBDKineticHamiltonian, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > feBDElectrostaticsHamiltonian, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > feBDEXCHamiltonian, const utils::ScalarSpatialFunctionReal &externalPotentialFunction, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext, const OpContext &MContextForInv=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), const OpContext &MContext=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >(), const OpContext &MInvContext=linearAlgebra::IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >()) | |
~KohnShamDFT ()=default | |
void | solve () |
double | getGroundStateEnergy () |
using dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::HamiltonianPtrVariant = std::variant<Hamiltonian<float, memorySpace> *, Hamiltonian<double, memorySpace> *, Hamiltonian<std::complex<float>, memorySpace> *, Hamiltonian<std::complex<double>, memorySpace> *> |
using dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::OpContext = typename linearAlgebra::HermitianIterativeEigenSolver< ValueTypeOperator, ValueTypeOperand, memorySpace>::OpContext |
using dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::RealType = linearAlgebra::blasLapack::real_type<ValueType> |
using dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::ValueType = linearAlgebra::blasLapack::scalar_type<ValueTypeOperator, ValueTypeOperator> |
using dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::ValueTypeOperand = linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff> |
using dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::ValueTypeOperator = linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis> |
dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::KohnShamDFT | ( | const std::vector< utils::Point > & | atomCoordinates, |
const std::vector< double > & | atomCharges, | ||
const std::vector< double > & | smearedChargeRadius, | ||
const size_type | numElectrons, | ||
const size_type | numWantedEigenvalues, | ||
const double | smearingTemperature, | ||
const double | fermiEnergyTolerance, | ||
const double | fracOccupancyTolerance, | ||
const double | eigenSolveResidualTolerance, | ||
const double | scfDensityResidualNormTolerance, | ||
const size_type | maxChebyshevFilterPass, | ||
const size_type | maxSCFIter, | ||
const bool | evaluateEnergyEverySCF, | ||
const size_type | mixingHistory, | ||
const double | mixingParameter, | ||
const bool | isAdaptiveAndersonMixingParameter, | ||
const quadrature::QuadratureValuesContainer< RealType, memorySpace > & | electronChargeDensityInput, | ||
std::shared_ptr< const basis::FEBasisManager< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, memorySpace, dim > > | feBMTotalCharge, | ||
std::shared_ptr< const basis::FEBasisManager< ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > | feBMWaveFn, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > | feBDTotalChargeStiffnessMatrix, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > | feBDTotalChargeRhs, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > | feBDKineticHamiltonian, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > | feBDElectrostaticsHamiltonian, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > | feBDEXCHamiltonian, | ||
const utils::ScalarSpatialFunctionReal & | externalPotentialFunction, | ||
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > | linAlgOpContext, | ||
const OpContext & | MContextForInv = linearAlgebra::IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() , |
||
const OpContext & | MContext = linearAlgebra::IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() , |
||
const OpContext & | MInvContext = linearAlgebra::IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() |
||
) |
dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::KohnShamDFT | ( | const std::vector< utils::Point > & | atomCoordinates, |
const std::vector< double > & | atomCharges, | ||
const std::vector< double > & | smearedChargeRadius, | ||
const size_type | numElectrons, | ||
const size_type | numWantedEigenvalues, | ||
const double | smearingTemperature, | ||
const double | fermiEnergyTolerance, | ||
const double | fracOccupancyTolerance, | ||
const double | eigenSolveResidualTolerance, | ||
const double | scfDensityResidualNormTolerance, | ||
const size_type | maxChebyshevFilterPass, | ||
const size_type | maxSCFIter, | ||
const bool | evaluateEnergyEverySCF, | ||
const size_type | mixingHistory, | ||
const double | mixingParameter, | ||
const bool | isAdaptiveAndersonMixingParameter, | ||
const quadrature::QuadratureValuesContainer< RealType, memorySpace > & | electronChargeDensityInput, | ||
std::shared_ptr< const basis::FEBasisManager< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, memorySpace, dim > > | feBMTotalCharge, | ||
std::shared_ptr< const basis::FEBasisManager< ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > > | feBMWaveFn, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > | feBDTotalChargeStiffnessMatrix, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > | feBDTotalChargeRhs, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > | feBDNuclearChargeStiffnessMatrix, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeElectrostaticsBasis, memorySpace > > | feBDNuclearChargeRhs, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > | feBDKineticHamiltonian, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > | feBDElectrostaticsHamiltonian, | ||
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeWaveFunctionBasis, memorySpace > > | feBDEXCHamiltonian, | ||
const utils::ScalarSpatialFunctionReal & | externalPotentialFunction, | ||
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > | linAlgOpContext, | ||
const OpContext & | MContextForInv = linearAlgebra::IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() , |
||
const OpContext & | MContext = linearAlgebra::IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() , |
||
const OpContext & | MInvContext = linearAlgebra::IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() |
||
) |
|
default |
double dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::getGroundStateEnergy |
void dftefe::ksdft::KohnShamDFT< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::solve |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |