DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
excDensityLLMGGAClass.h
Go to the documentation of this file.
1//
2// Created by Arghadwip Paul.
3//
4
5#ifndef DFTFE_EXCDENSITYLLMGGACLASS_H
6#define DFTFE_EXCDENSITYLLMGGACLASS_H
7
8#include <xc.h>
10namespace dftfe
11{
12 class NNLLMGGA;
13 template <dftfe::utils::MemorySpace memorySpace>
15 {
16 public:
17 excDensityLLMGGAClass(std::shared_ptr<xc_func_type> funcXPtr,
18 std::shared_ptr<xc_func_type> funcCPtr);
19
20 excDensityLLMGGAClass(std::shared_ptr<xc_func_type> funcXPtr,
21 std::shared_ptr<xc_func_type> funcCPtr,
22 std::string modelXCInputFile);
23
25
26 void
28 AuxDensityMatrix<memorySpace> &auxDensityMatrix,
29 const std::vector<double> & quadPoints,
30 std::unordered_map<xcRemainderOutputDataAttributes, std::vector<double>>
31 &xDataOut,
32 std::unordered_map<xcRemainderOutputDataAttributes, std::vector<double>>
33 &cDataout) const override;
34
35 void
37 const std::vector<xcRemainderOutputDataAttributes> &outputDataAttributes)
38 const override;
39
40 void
43 & src,
45 const unsigned int inputVecSize,
46 const unsigned int kPointIndex,
47 const unsigned int spinIndex) override;
48
49 /*
50 * @brief The apply function that will be called in HXCheby() with single precision.
51 * The distribute() and updateGhostValues() for src
52 * has to be called before this function.
53 * Similarly for dst, accumulateLocallyOwned() should be called in HX()
54 * after this function is called. param[in] src The input vector param[out]
55 * dst The output vector param[in] inputVecSize The size of the input vector
56 * param[in] kPointIndex the k point for which the HX() is called
57 * param[in] spinIndex the spin index for which the HX() is called
58 */
59 void
62 memorySpace> &src,
64 & dst,
65 const unsigned int inputVecSize,
66 const unsigned int kPointIndex,
67 const unsigned int spinIndex) override;
68
69 void
71 const std::shared_ptr<AuxDensityMatrix<memorySpace>> &auxDensityMatrixPtr,
72 const std::vector<double> &kPointWeights) override;
73 void
75 const std::shared_ptr<AuxDensityMatrix<memorySpace>> &auxDensityMatrix,
76 const std::vector<double> &kPointWeights) override;
77
78 double
80
81 double
83
84 void
85 reinitKPointDependentVariables(unsigned int kPointIndex) override;
86
87 private:
88 NNLLMGGA * d_NNLLMGGAPtr;
89 std::shared_ptr<xc_func_type> d_funcXPtr;
90 std::shared_ptr<xc_func_type> d_funcCPtr;
91 std::vector<double> d_spacingFDStencil;
93 };
94} // namespace dftfe
95#endif // DFTFE_EXCDENSITYLLMGGACLASS_H
Definition AuxDensityMatrix.h:33
ExcSSDFunctionalBaseClass(const ExcFamilyType excFamType, const densityFamilyType densityFamType, const std::vector< DensityDescriptorDataAttributes > &densityDescriptorAttributesList)
Definition ExcSSDFunctionalBaseClass.t.cc:25
void updateWaveFunctionDependentFuncDerWrtPsi(const std::shared_ptr< AuxDensityMatrix< memorySpace > > &auxDensityMatrixPtr, const std::vector< double > &kPointWeights) override
void applyWaveFunctionDependentFuncDerWrtPsi(const dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > &src, dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > &dst, const unsigned int inputVecSize, const unsigned int kPointIndex, const unsigned int spinIndex) override
double getWaveFunctionDependentExcEnergy() override
unsigned int d_vxcDivergenceTermFDStencilSize
Definition excDensityLLMGGAClass.h:92
void computeRhoTauDependentXCData(AuxDensityMatrix< memorySpace > &auxDensityMatrix, const std::vector< double > &quadPoints, std::unordered_map< xcRemainderOutputDataAttributes, std::vector< double > > &xDataOut, std::unordered_map< xcRemainderOutputDataAttributes, std::vector< double > > &cDataout) const override
std::shared_ptr< xc_func_type > d_funcXPtr
Definition excDensityLLMGGAClass.h:89
excDensityLLMGGAClass(std::shared_ptr< xc_func_type > funcXPtr, std::shared_ptr< xc_func_type > funcCPtr)
NNLLMGGA * d_NNLLMGGAPtr
Definition excDensityLLMGGAClass.h:88
std::vector< double > d_spacingFDStencil
Definition excDensityLLMGGAClass.h:91
void reinitKPointDependentVariables(unsigned int kPointIndex) override
std::shared_ptr< xc_func_type > d_funcCPtr
Definition excDensityLLMGGAClass.h:90
void checkInputOutputDataAttributesConsistency(const std::vector< xcRemainderOutputDataAttributes > &outputDataAttributes) const override
void applyWaveFunctionDependentFuncDerWrtPsi(const dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const unsigned int inputVecSize, const unsigned int kPointIndex, const unsigned int spinIndex) override
excDensityLLMGGAClass(std::shared_ptr< xc_func_type > funcXPtr, std::shared_ptr< xc_func_type > funcCPtr, std::string modelXCInputFile)
void computeWaveFunctionDependentExcEnergy(const std::shared_ptr< AuxDensityMatrix< memorySpace > > &auxDensityMatrix, const std::vector< double > &kPointWeights) override
double getExpectationOfWaveFunctionDependentExcFuncDerWrtPsi() override
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
float numberFP32
Definition dftfeDataTypes.h:45
Definition pseudoPotentialToDftfeConverter.cc:34
xcRemainderOutputDataAttributes
Definition ExcSSDFunctionalBaseClass.h:51