DFT-FE 1.3.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
dftfe::ExcSSDFunctionalBaseClass< memorySpace > Class Template Referenceabstract

This class provides the structure for all Exc functionals that can be written as a combination of functional of Single Slater determinant that results in a non-multiplicative potential plus a remainder functional dependent on density and Tau. More...

#include <ExcSSDFunctionalBaseClass.h>

Inheritance diagram for dftfe::ExcSSDFunctionalBaseClass< memorySpace >:
dftfe::ExcDFTPlusU< ValueType, memorySpace > dftfe::excDensityGGAClass< memorySpace > dftfe::excDensityLDAClass< memorySpace > dftfe::excDensityLLMGGAClass< memorySpace > dftfe::excTauMGGAClass< memorySpace >

Public Member Functions

 ExcSSDFunctionalBaseClass (const ExcFamilyType excFamType, const densityFamilyType densityFamType, const std::vector< DensityDescriptorDataAttributes > &densityDescriptorAttributesList)
 
 ExcSSDFunctionalBaseClass (const ExcFamilyType excFamType, const densityFamilyType densityFamType, const std::vector< DensityDescriptorDataAttributes > &densityDescriptorAttributesList, const std::vector< WfcDescriptorDataAttributes > &wfcDescriptorAttributesList)
 
virtual ~ExcSSDFunctionalBaseClass ()
 
const std::vector< DensityDescriptorDataAttributes > & getDensityDescriptorAttributesList () const
 
densityFamilyType getDensityBasedFamilyType () const
 
virtual void applyWaveFunctionDependentFuncDerWrtPsi (const dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const dftfe::uInt inputVecSize, const dftfe::uInt kPointIndex, const dftfe::uInt spinIndex)=0
 
virtual void applyWaveFunctionDependentFuncDerWrtPsi (const dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > &src, dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > &dst, const dftfe::uInt inputVecSize, const dftfe::uInt kPointIndex, const dftfe::uInt spinIndex)=0
 
virtual void updateWaveFunctionDependentFuncDerWrtPsi (const std::shared_ptr< AuxDensityMatrix< memorySpace > > &auxDensityMatrixPtr, const std::vector< double > &kPointWeights)=0
 
virtual void computeWaveFunctionDependentExcEnergy (const std::shared_ptr< AuxDensityMatrix< memorySpace > > &auxDensityMatrix, const std::vector< double > &kPointWeights)=0
 
virtual double getWaveFunctionDependentExcEnergy ()=0
 
virtual double getExpectationOfWaveFunctionDependentExcFuncDerWrtPsi ()=0
 
virtual void computeRhoTauDependentXCData (AuxDensityMatrix< memorySpace > &auxDensityMatrix, const std::pair< dftfe::uInt, dftfe::uInt > &quadIndexRange, std::unordered_map< xcRemainderOutputDataAttributes, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &xDataOut, std::unordered_map< xcRemainderOutputDataAttributes, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &cDataout) const =0
 
ExcFamilyType getExcFamilyType () const
 
virtual void checkInputOutputDataAttributesConsistency (const std::vector< xcRemainderOutputDataAttributes > &outputDataAttributes) const =0
 
virtual void reinitKPointDependentVariables (dftfe::uInt kPointIndex)=0
 

Protected Attributes

const std::vector< DensityDescriptorDataAttributesd_densityDescriptorAttributesList
 
const std::vector< WfcDescriptorDataAttributesd_wfcDescriptorAttributesList
 
ExcFamilyType d_ExcFamilyType
 
densityFamilyType d_densityFamilyType
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_densityValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_sigmaValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_tauValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdexDensityValuesNonNN
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdecDensityValuesNonNN
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdexTauValuesNonNN
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdecTauValuesNonNN
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_exValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_ecValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdexDensitySpinUpValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdexDensitySpinDownValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdecDensitySpinUpValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdecDensitySpinDownValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdexSigmaValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdecSigmaValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdexTauSpinUpValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdexTauSpinDownValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdecTauSpinUpValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTs_pdecTauSpinDownValues
 
dftfe::utils::MemoryStorage< double, memorySpace > s_densityValuesTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_sigmaValuesTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_tauValuesTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_exValuesTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_ecValuesTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_pdecDensityTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_pdexDensityTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_pdecSigmaValuesTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_pdexSigmaValuesTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_pdexTauValuesTemp
 
dftfe::utils::MemoryStorage< double, memorySpace > s_pdecTauValuesTemp
 
void * s_pinnedBuf = nullptr
 
size_t s_pinnedCap = 0
 

Detailed Description

template<dftfe::utils::MemorySpace memorySpace>
class dftfe::ExcSSDFunctionalBaseClass< memorySpace >

This class provides the structure for all Exc functionals that can be written as a combination of functional of Single Slater determinant that results in a non-multiplicative potential plus a remainder functional dependent on density and Tau.

Exc = S{\phi} + R [\rho, \tau]

Author
Vishal Subramanian, Sambit Das

Constructor & Destructor Documentation

◆ ExcSSDFunctionalBaseClass() [1/2]

template<dftfe::utils::MemorySpace memorySpace>
dftfe::ExcSSDFunctionalBaseClass< memorySpace >::ExcSSDFunctionalBaseClass ( const ExcFamilyType excFamType,
const densityFamilyType densityFamType,
const std::vector< DensityDescriptorDataAttributes > & densityDescriptorAttributesList )

◆ ExcSSDFunctionalBaseClass() [2/2]

template<dftfe::utils::MemorySpace memorySpace>
dftfe::ExcSSDFunctionalBaseClass< memorySpace >::ExcSSDFunctionalBaseClass ( const ExcFamilyType excFamType,
const densityFamilyType densityFamType,
const std::vector< DensityDescriptorDataAttributes > & densityDescriptorAttributesList,
const std::vector< WfcDescriptorDataAttributes > & wfcDescriptorAttributesList )

◆ ~ExcSSDFunctionalBaseClass()

template<dftfe::utils::MemorySpace memorySpace>
dftfe::ExcSSDFunctionalBaseClass< memorySpace >::~ExcSSDFunctionalBaseClass ( )
virtual

Member Function Documentation

◆ applyWaveFunctionDependentFuncDerWrtPsi() [1/2]

◆ applyWaveFunctionDependentFuncDerWrtPsi() [2/2]

template<dftfe::utils::MemorySpace memorySpace>
virtual void dftfe::ExcSSDFunctionalBaseClass< memorySpace >::applyWaveFunctionDependentFuncDerWrtPsi ( const dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > & src,
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > & dst,
const dftfe::uInt inputVecSize,
const dftfe::uInt kPointIndex,
const dftfe::uInt spinIndex )
pure virtual

◆ checkInputOutputDataAttributesConsistency()

◆ computeRhoTauDependentXCData()

template<dftfe::utils::MemorySpace memorySpace>
virtual void dftfe::ExcSSDFunctionalBaseClass< memorySpace >::computeRhoTauDependentXCData ( AuxDensityMatrix< memorySpace > & auxDensityMatrix,
const std::pair< dftfe::uInt, dftfe::uInt > & quadIndexRange,
std::unordered_map< xcRemainderOutputDataAttributes, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & xDataOut,
std::unordered_map< xcRemainderOutputDataAttributes, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & cDataout ) const
pure virtual

x and c denotes exchange and correlation respectively. This function computes the rho and tau dependent part of the Exc functional energy density and its partial derivatives

Implemented in dftfe::excDensityGGAClass< memorySpace >, dftfe::excDensityLDAClass< memorySpace >, dftfe::excDensityLLMGGAClass< memorySpace >, dftfe::ExcDFTPlusU< ValueType, memorySpace >, and dftfe::excTauMGGAClass< memorySpace >.

◆ computeWaveFunctionDependentExcEnergy()

template<dftfe::utils::MemorySpace memorySpace>
virtual void dftfe::ExcSSDFunctionalBaseClass< memorySpace >::computeWaveFunctionDependentExcEnergy ( const std::shared_ptr< AuxDensityMatrix< memorySpace > > & auxDensityMatrix,
const std::vector< double > & kPointWeights )
pure virtual

◆ getDensityBasedFamilyType()

template<dftfe::utils::MemorySpace memorySpace>
densityFamilyType dftfe::ExcSSDFunctionalBaseClass< memorySpace >::getDensityBasedFamilyType ( ) const

◆ getDensityDescriptorAttributesList()

template<dftfe::utils::MemorySpace memorySpace>
const std::vector< DensityDescriptorDataAttributes > & dftfe::ExcSSDFunctionalBaseClass< memorySpace >::getDensityDescriptorAttributesList ( ) const

◆ getExcFamilyType()

template<dftfe::utils::MemorySpace memorySpace>
ExcFamilyType dftfe::ExcSSDFunctionalBaseClass< memorySpace >::getExcFamilyType ( ) const

◆ getExpectationOfWaveFunctionDependentExcFuncDerWrtPsi()

◆ getWaveFunctionDependentExcEnergy()

◆ reinitKPointDependentVariables()

◆ updateWaveFunctionDependentFuncDerWrtPsi()

template<dftfe::utils::MemorySpace memorySpace>
virtual void dftfe::ExcSSDFunctionalBaseClass< memorySpace >::updateWaveFunctionDependentFuncDerWrtPsi ( const std::shared_ptr< AuxDensityMatrix< memorySpace > > & auxDensityMatrixPtr,
const std::vector< double > & kPointWeights )
pure virtual

Member Data Documentation

◆ d_densityDescriptorAttributesList

template<dftfe::utils::MemorySpace memorySpace>
const std::vector<DensityDescriptorDataAttributes> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::d_densityDescriptorAttributesList
protected

◆ d_densityFamilyType

template<dftfe::utils::MemorySpace memorySpace>
densityFamilyType dftfe::ExcSSDFunctionalBaseClass< memorySpace >::d_densityFamilyType
protected

◆ d_ExcFamilyType

template<dftfe::utils::MemorySpace memorySpace>
ExcFamilyType dftfe::ExcSSDFunctionalBaseClass< memorySpace >::d_ExcFamilyType
protected

◆ d_wfcDescriptorAttributesList

template<dftfe::utils::MemorySpace memorySpace>
const std::vector<WfcDescriptorDataAttributes> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::d_wfcDescriptorAttributesList
protected

◆ s_densityValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_densityValues
mutableprotected

◆ s_densityValuesTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_densityValuesTemp
mutableprotected

◆ s_ecValues

◆ s_ecValuesTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_ecValuesTemp
protected

◆ s_exValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_exValues
mutableprotected

◆ s_exValuesTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_exValuesTemp
protected

◆ s_pdecDensitySpinDownValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecDensitySpinDownValues
protected

◆ s_pdecDensitySpinUpValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecDensitySpinUpValues
protected

◆ s_pdecDensityTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecDensityTemp
protected

◆ s_pdecDensityValuesNonNN

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecDensityValuesNonNN
protected

◆ s_pdecSigmaValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecSigmaValues
protected

◆ s_pdecSigmaValuesTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecSigmaValuesTemp
protected

◆ s_pdecTauSpinDownValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecTauSpinDownValues
protected

◆ s_pdecTauSpinUpValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecTauSpinUpValues
protected

◆ s_pdecTauValuesNonNN

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecTauValuesNonNN
protected

◆ s_pdecTauValuesTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdecTauValuesTemp
protected

◆ s_pdexDensitySpinDownValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexDensitySpinDownValues
protected

◆ s_pdexDensitySpinUpValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexDensitySpinUpValues
protected

◆ s_pdexDensityTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexDensityTemp
protected

◆ s_pdexDensityValuesNonNN

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexDensityValuesNonNN
mutableprotected

◆ s_pdexSigmaValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexSigmaValues
protected

◆ s_pdexSigmaValuesTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexSigmaValuesTemp
protected

◆ s_pdexTauSpinDownValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexTauSpinDownValues
protected

◆ s_pdexTauSpinUpValues

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexTauSpinUpValues
protected

◆ s_pdexTauValuesNonNN

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexTauValuesNonNN
protected

◆ s_pdexTauValuesTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pdexTauValuesTemp
protected

◆ s_pinnedBuf

template<dftfe::utils::MemorySpace memorySpace>
void* dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pinnedBuf = nullptr
mutableprotected

◆ s_pinnedCap

template<dftfe::utils::MemorySpace memorySpace>
size_t dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_pinnedCap = 0
mutableprotected

◆ s_sigmaValues

◆ s_sigmaValuesTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_sigmaValuesTemp
protected

◆ s_tauValues

◆ s_tauValuesTemp

template<dftfe::utils::MemorySpace memorySpace>
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::ExcSSDFunctionalBaseClass< memorySpace >::s_tauValuesTemp
protected

The documentation for this class was generated from the following files: