18#ifndef DFTFE_EXE_EXCDFTPLUSU_H
19#define DFTFE_EXE_EXCDFTPLUSU_H
27 template <
typename ValueType, dftfe::utils::MemorySpace memorySpace>
33 unsigned int numSpins);
42 const unsigned int inputVecSize,
43 const unsigned int kPointIndex,
44 const unsigned int spinIndex)
override;
64 const unsigned int inputVecSize,
65 const unsigned int kPointIndex,
66 const unsigned int spinIndex)
override;
71 const std::vector<double> &kPointWeights)
override;
76 const std::vector<double> &kPointWeights)
override;
90 const std::vector<double> & quadPoints,
94 &cDataout)
const override;
98 const std::vector<xcRemainderOutputDataAttributes> &outputDataAttributes)
106 const MPI_Comm &mpi_comm_parent,
107 const MPI_Comm &mpi_comm_domain,
108 const MPI_Comm &mpi_comm_interPool,
109 const MPI_Comm &mpi_comm_interBandGroup,
112 basisOperationsMemPtr,
115 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST>>
116 basisOperationsHostPtr,
122 const unsigned int matrixFreeVectorComponent,
123 const unsigned int densityQuadratureId,
124 const unsigned int sparsityPatternQuadratureId,
125 const unsigned int numberWaveFunctions,
126 const unsigned int numSpins,
128 const std::string & scratchFolderName,
129 const bool singlePrecNonLocalOperator,
130 const bool updateNonlocalSparsity,
131 const std::vector<std::vector<double>> &atomLocations,
132 const std::vector<std::vector<double>> &atomLocationsFrac,
133 const std::vector<int> & imageIds,
134 const std::vector<std::vector<double>> &imagePositions,
135 std::vector<double> & kPointCoordinates,
136 const std::vector<double> & kPointWeights,
137 const std::vector<std::vector<double>> &domainBoundaries);
139 std::shared_ptr<hubbard<ValueType, memorySpace>> &
Definition AuxDensityMatrix.h:33
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
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
void applyWaveFunctionDependentFuncDerWrtPsi(const dftfe::linearAlgebra::MultiVector< typename dataTypes::singlePrecType< ValueType >::type, memorySpace > &src, dftfe::linearAlgebra::MultiVector< typename dataTypes::singlePrecType< ValueType >::type, memorySpace > &dst, const unsigned int inputVecSize, const unsigned int kPointIndex, const unsigned int spinIndex) override
void reinitKPointDependentVariables(unsigned int kPointIndex) override
std::shared_ptr< ExcSSDFunctionalBaseClass< memorySpace > > d_excSSDObjPtr
Definition ExcDFTPlusU.h:143
void computeWaveFunctionDependentExcEnergy(const std::shared_ptr< AuxDensityMatrix< memorySpace > > &auxDensityMatrix, const std::vector< double > &kPointWeights) override
void updateWaveFunctionDependentFuncDerWrtPsi(const std::shared_ptr< AuxDensityMatrix< memorySpace > > &auxDensityMatrixPtr, const std::vector< double > &kPointWeights) override
double getWaveFunctionDependentExcEnergy() override
std::shared_ptr< hubbard< ValueType, memorySpace > > & getHubbardClass()
ExcDFTPlusU(std::shared_ptr< ExcSSDFunctionalBaseClass< memorySpace > > excSSDObjPtr, unsigned int numSpins)
void checkInputOutputDataAttributesConsistency(const std::vector< xcRemainderOutputDataAttributes > &outputDataAttributes) const override
double getExpectationOfWaveFunctionDependentExcFuncDerWrtPsi() override
void initialiseHubbardClass(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &mpi_comm_interPool, const MPI_Comm &mpi_comm_interBandGroup, std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, memorySpace > > basisOperationsMemPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsHostPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperMemPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperHostPtr, const unsigned int matrixFreeVectorComponent, const unsigned int densityQuadratureId, const unsigned int sparsityPatternQuadratureId, const unsigned int numberWaveFunctions, const unsigned int numSpins, const dftParameters &dftParam, const std::string &scratchFolderName, const bool singlePrecNonLocalOperator, const bool updateNonlocalSparsity, const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &atomLocationsFrac, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &imagePositions, std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights, const std::vector< std::vector< double > > &domainBoundaries)
std::shared_ptr< hubbard< ValueType, memorySpace > > d_hubbardClassPtr
Definition ExcDFTPlusU.h:144
ExcSSDFunctionalBaseClass(const ExcFamilyType excFamType, const densityFamilyType densityFamType, const std::vector< DensityDescriptorDataAttributes > &densityDescriptorAttributesList)
Definition ExcSSDFunctionalBaseClass.t.cc:25
Definition FEBasisOperations.h:84
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
Definition BLASWrapper.h:35
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
Definition FEBasisOperations.h:30
Definition pseudoPotentialToDftfeConverter.cc:34
xcRemainderOutputDataAttributes
Definition ExcSSDFunctionalBaseClass.h:51
T type
Definition dftfeDataTypes.h:115