DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
AuxDensityMatrixFE.h
Go to the documentation of this file.
1//
2// Created by Sambit Das.
3//
4
5#ifndef DFTFE_AUXDM_AUXDENSITYMATRIXFE_H
6#define DFTFE_AUXDM_AUXDENSITYMATRIXFE_H
7
8#include <vector>
9#include <utility>
10#include <AuxDensityMatrix.h>
11
12namespace dftfe
13{
14 template <dftfe::utils::MemorySpace memorySpace>
15 class AuxDensityMatrixFE : public AuxDensityMatrix<memorySpace>
16 {
17 public:
18 // FIXME: to be implemented
19
20 void
23 & eigenVectorsFlattenedMemSpace,
24 const std::vector<std::vector<double>> &fractionalOccupancies);
25
26
27
28 // CAUTION: points have to be a contiguous subset of d_quadPointsSet
29 void
31 const std::vector<double> &points,
32 std::unordered_map<DensityDescriptorDataAttributes, std::vector<double>>
33 &densityData) override;
34
35 void
36 evalOverlapMatrixStart(const std::vector<double> &quadpts,
37 const std::vector<double> &quadWt) override;
38
39 void
40 evalOverlapMatrixEnd(const MPI_Comm &mpiComm) override;
41
42 virtual void
44 const std::unordered_map<std::string, std::vector<dataTypes::number>>
45 &projectionInputsDataType,
46 const std::unordered_map<std::string, std::vector<double>>
47 & projectionInputsReal,
48 const int iSpin) override;
49
50 void
51 projectDensityMatrixEnd(const MPI_Comm &mpiComm) override;
52
53 /**
54 * @brief Projects the quadrature density to aux basis (L2 projection).
55 * This is actually a copy call. All the local partition quadrature points
56 * must to be passed to this function in one go
57 *
58 * @param projectionInputs is a map from string to inputs needed
59 * for projection.
60 * projectionInputs["quadpts"],
61 * projectionInputs["quadWt"],
62 * projectionInputs["densityFunc"]
63 * projectionInputs["gradDensityFunc"]
64 *
65 * densityFunc The density Values at quad points
66 * densityFunc(spin_index, quad_index),
67 * quad_index is fastest.
68 *
69 * gradDensityFunc The density Values at quad points
70 * gradDensityFunc(spin_index, quad_index,dim_index),
71 * dim_index is fastest.
72 *
73 */
74 void
76 const std::unordered_map<std::string, std::vector<double>>
77 &projectionInputs) override;
78
79 void
80 projectDensityEnd(const MPI_Comm &mpiComm) override;
81
82 const std::vector<std::vector<double>> *
84
87
88 private:
91
92 const std::vector<std::vector<double>> *d_fractionalOccupancies;
93
94 std::vector<double> d_densityValsTotalAllQuads;
95 std::vector<double> d_densityValsSpinUpAllQuads;
96 std::vector<double> d_densityValsSpinDownAllQuads;
99 std::vector<double> d_quadPointsAll;
100 std::vector<double> d_quadWeightsAll;
101 };
102} // namespace dftfe
103
104#endif // DFTFE_AUXDM_AUXDENSITYMATRIXFE_H
Definition AuxDensityMatrixFE.h:16
void projectDensityEnd(const MPI_Comm &mpiComm) override
for MPI accumulation
void evalOverlapMatrixStart(const std::vector< double > &quadpts, const std::vector< double > &quadWt) override
Compute aux basis overlap matrix batchwise contribution from supplied set of quadrature points and th...
std::vector< double > d_densityValsSpinDownAllQuads
Definition AuxDensityMatrixFE.h:96
std::vector< double > d_quadPointsAll
Definition AuxDensityMatrixFE.h:99
std::vector< double > d_densityValsSpinUpAllQuads
Definition AuxDensityMatrixFE.h:95
const std::vector< std::vector< double > > * getDensityMatrixComponents_occupancies() const
void applyLocalOperations(const std::vector< double > &points, std::unordered_map< DensityDescriptorDataAttributes, std::vector< double > > &densityData) override
compute local descriptors of the aux basis electron-density representation at the supplied set of poi...
std::vector< double > d_gradDensityValsSpinUpAllQuads
Definition AuxDensityMatrixFE.h:97
const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > * getDensityMatrixComponents_wavefunctions() const
std::vector< double > d_densityValsTotalAllQuads
Definition AuxDensityMatrixFE.h:94
void evalOverlapMatrixEnd(const MPI_Comm &mpiComm) override
for MPI accumulation
const std::vector< std::vector< double > > * d_fractionalOccupancies
Definition AuxDensityMatrixFE.h:92
virtual void projectDensityMatrixStart(const std::unordered_map< std::string, std::vector< dataTypes::number > > &projectionInputsDataType, const std::unordered_map< std::string, std::vector< double > > &projectionInputsReal, const int iSpin) override
Projects the KS density matrix to aux basis (L2 projection) batch wise.
void setDensityMatrixComponents(const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > &eigenVectorsFlattenedMemSpace, const std::vector< std::vector< double > > &fractionalOccupancies)
void projectDensityStart(const std::unordered_map< std::string, std::vector< double > > &projectionInputs) override
Projects the quadrature density to aux basis (L2 projection). This is actually a copy call....
std::vector< double > d_quadWeightsAll
Definition AuxDensityMatrixFE.h:100
const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > * d_eigenVectorsFlattenedMemSpacePtr
Definition AuxDensityMatrixFE.h:90
std::vector< double > d_gradDensityValsSpinDownAllQuads
Definition AuxDensityMatrixFE.h:98
void projectDensityMatrixEnd(const MPI_Comm &mpiComm) override
for MPI accumulation
Definition AuxDensityMatrix.h:33
Definition MemoryStorage.h:33
Definition pseudoPotentialToDftfeConverter.cc:34
DensityDescriptorDataAttributes
Definition AuxDensityMatrix.h:19