DFT-FE 1.3.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
excTauMGGAClass.h
Go to the documentation of this file.
1#ifndef DFTFE_excTauMGGAClass_H
2#define DFTFE_excTauMGGAClass_H
3
4#include <xc.h>
6
7namespace dftfe
8{
9 template <dftfe::utils::MemorySpace memorySpace>
10 class excTauMGGAClass : public ExcSSDFunctionalBaseClass<memorySpace>
11 {
12 public:
13 excTauMGGAClass(std::shared_ptr<xc_func_type> &funcXPtr,
14 std::shared_ptr<xc_func_type> &funcCPtr,
15 const bool useLibXC,
16 std::string XCType);
17
18 excTauMGGAClass(std::shared_ptr<xc_func_type> &funcXPtr,
19 std::shared_ptr<xc_func_type> &funcCPtr,
20 std::string modelXCInputFile,
21 const bool useLibXC,
22 std::string XCType);
23
25
26 void
28 AuxDensityMatrix<memorySpace> &auxDensityMatrix,
29 const std::pair<dftfe::uInt, dftfe::uInt> &quadIndexRange,
30 std::unordered_map<
33 &xDataOut,
34 std::unordered_map<
37 &cDataout) const override;
38
39 void
41 const std::vector<xcRemainderOutputDataAttributes> &outputDataAttributes)
42 const override;
43
44 void
47 &src,
49 const dftfe::uInt inputVecSize,
50 const dftfe::uInt kPointIndex,
51 const dftfe::uInt spinIndex) override;
52
53 /*
54 * @brief The apply function that will be called in HXCheby() with single precision.
55 * The distribute() and updateGhostValues() for src
56 * has to be called before this function.
57 * Similarly for dst, accumulateLocallyOwned() should be called in HX()
58 * after this function is called. param[in] src The input vector param[out]
59 * dst The output vector param[in] inputVecSize The size of the input vector
60 * param[in] kPointIndex the k point for which the HX() is called
61 * param[in] spinIndex the spin index for which the HX() is called
62 */
63 void
66 memorySpace> &src,
68 &dst,
69 const dftfe::uInt inputVecSize,
70 const dftfe::uInt kPointIndex,
71 const dftfe::uInt spinIndex) override;
72
73
74 void
76 const std::shared_ptr<AuxDensityMatrix<memorySpace>> &auxDensityMatrixPtr,
77 const std::vector<double> &kPointWeights) override;
78
79 void
81 const std::shared_ptr<AuxDensityMatrix<memorySpace>> &auxDensityMatrix,
82 const std::vector<double> &kPointWeights) override;
83
84 double
86
87 double
89
90 void
92
93 private:
94 std::shared_ptr<xc_func_type> d_funcXPtr;
95 std::shared_ptr<xc_func_type> d_funcCPtr;
96 // Flag to indicate whether to use libxc or not
98 std::string d_XCType;
101 // These extra flags are required for internal evaluation of exc related
102 // values. These checks are for enforcing Fermi Hole curvature.
105 };
106
107} // namespace dftfe
108
109
110#endif
Definition AuxDensityMatrix.h:40
ExcSSDFunctionalBaseClass(const ExcFamilyType excFamType, const densityFamilyType densityFamType, const std::vector< DensityDescriptorDataAttributes > &densityDescriptorAttributesList)
Definition ExcSSDFunctionalBaseClass.t.cc:25
bool d_enforceFHCX
Definition excTauMGGAClass.h:103
bool d_useLibxc
Definition excTauMGGAClass.h:97
void computeWaveFunctionDependentExcEnergy(const std::shared_ptr< AuxDensityMatrix< memorySpace > > &auxDensityMatrix, const std::vector< double > &kPointWeights) override
excTauMGGAClass(std::shared_ptr< xc_func_type > &funcXPtr, std::shared_ptr< xc_func_type > &funcCPtr, std::string modelXCInputFile, const bool useLibXC, std::string XCType)
void checkInputOutputDataAttributesConsistency(const std::vector< xcRemainderOutputDataAttributes > &outputDataAttributes) const override
double getExpectationOfWaveFunctionDependentExcFuncDerWrtPsi() override
excTauMGGAClass(std::shared_ptr< xc_func_type > &funcXPtr, std::shared_ptr< xc_func_type > &funcCPtr, const bool useLibXC, std::string XCType)
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 override
std::string d_XCType
Definition excTauMGGAClass.h:98
void reinitKPointDependentVariables(dftfe::uInt kPointIndex) override
void updateWaveFunctionDependentFuncDerWrtPsi(const std::shared_ptr< AuxDensityMatrix< memorySpace > > &auxDensityMatrixPtr, const std::vector< double > &kPointWeights) override
double getWaveFunctionDependentExcEnergy() override
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) override
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) override
bool d_tauNeededX
Definition excTauMGGAClass.h:99
std::shared_ptr< xc_func_type > d_funcCPtr
Definition excTauMGGAClass.h:95
bool d_enforceFHCC
Definition excTauMGGAClass.h:104
std::shared_ptr< xc_func_type > d_funcXPtr
Definition excTauMGGAClass.h:94
bool d_tauNeededC
Definition excTauMGGAClass.h:100
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
Definition MemoryStorage.h:33
float numberFP32
Definition dftfeDataTypes.h:42
Definition pseudoPotentialToDftfeConverter.cc:34
xcRemainderOutputDataAttributes
Definition ExcSSDFunctionalBaseClass.h:58
std::uint32_t uInt
Definition TypeConfig.h:10