26#ifndef dftefe_RDM1FE_h
27#define dftefe_RDM1FE_h
33#include <unordered_map>
50 template <
typename ValueTypeBasisData,
51 typename ValueTypeBasisCoeff,
56 linearAlgebra::blasLapack::scalar_type<ValueTypeBasisData,
78 const MPI_Comm & mpiCommDomain,
82 const bool isSOC =
false,
83 const std::vector<double> &kPointCoords = std::vector<double>{},
84 const std::vector<double> &kPointWeights = std::vector<double>{});
100 const std::set<DensityDescrAttr> & densityAttrs,
101 const std::set<WfcDescrAttr> & wfcAttrs,
102 std::unordered_map<DensityDescrAttr, AttrStorage> &densityAttrVals,
103 std::unordered_map<WfcDescrAttr, AttrStorage> & wfcAttrVals);
107 const std::unordered_map<DensityDescrAttr, AttrStorage>
109 const std::unordered_map<WfcDescrAttr, AttrStorage> &wfcAttrVals);
113 const std::set<DensityObsAttr> &densityObsAttrs,
114 std::unordered_map<
DensityObsAttr, std::vector<std::vector<double>>>
115 &densityObsAttrVals);
135 std::unique_ptr<RDM1<ValueType, memorySpace>>
156 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
An abstract class to store and access data for a given basis, such as the basis function values on a ...
Definition: FEBasisDataStorage.h:54
An abstract class to encapsulate the partitioning of a finite element basis across multiple processor...
Definition: FEBasisManager.h:44
Definition: DensityCalculator.h:43
Class to store the one-particle reduced density matrix using its spectral (eigen) representation in t...
Definition: RDM1FE.h:59
bool isSpinPolarized() const
Definition: RDM1FE.t.cpp:108
bool isSOC() const
Definition: RDM1FE.t.cpp:129
bool d_isSOC
Definition: RDM1FE.h:168
bool d_isNonCollinear
Definition: RDM1FE.h:167
std::vector< double > getkPointCoords() const
Definition: RDM1FE.t.cpp:152
void setEvalDescrFlag(const bool evalFlag) override
Definition: RDM1FE.t.cpp:174
size_type d_waveFuncBatchSize
Definition: RDM1FE.h:171
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > d_feBasisDataStorage
Definition: RDM1FE.h:151
void getDescriptors(const std::set< DensityDescrAttr > &densityAttrs, const std::set< WfcDescrAttr > &wfcAttrs, std::unordered_map< DensityDescrAttr, AttrStorage > &densityAttrVals, std::unordered_map< WfcDescrAttr, AttrStorage > &wfcAttrVals)
Definition: RDM1FE.t.cpp:185
bool d_isSpinPolarized
Definition: RDM1FE.h:166
std::vector< double > d_kPointWeights
Definition: RDM1FE.h:165
std::shared_ptr< DensityCalculator< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim > > d_densCalc
Definition: RDM1FE.h:162
bool isNonCollinear() const
Definition: RDM1FE.t.cpp:119
void reinit(std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBasisDataStorage, const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > &feBMPsi)
Definition: RDM1FE.t.cpp:88
void getDensityObs(const std::set< DensityObsAttr > &densityObsAttrs, std::unordered_map< DensityObsAttr, std::vector< std::vector< double > > > &densityObsAttrVals)
Definition: RDM1FE.t.cpp:351
const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > * d_feBMPsiPtr
Definition: RDM1FE.h:155
virtual ~RDM1FE()=default
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
Definition: RDM1FE.h:157
const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > & getFEBasisManager() const
Definition: RDM1FE.t.cpp:521
std::reference_wrapper< const MPI_Comm > d_mpiCommDomain
Definition: RDM1FE.h:169
std::unordered_map< DensityDescrAttr, AttrStorage > d_densityAttrVals
Definition: RDM1FE.h:172
std::unique_ptr< RDM1< ValueType, memorySpace > > clone() const
Definition: RDM1FE.t.cpp:325
void setDescriptors(const std::unordered_map< DensityDescrAttr, AttrStorage > &densityAttrVals, const std::unordered_map< WfcDescrAttr, AttrStorage > &wfcAttrVals)
Definition: RDM1FE.t.cpp:307
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > getFEBasisDataStorage() const
Definition: RDM1FE.t.cpp:508
std::vector< double > d_kPointCoords
Definition: RDM1FE.h:164
linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff > ValueType
Definition: RDM1FE.h:63
std::vector< double > getkPointWeights() const
Definition: RDM1FE.t.cpp:163
std::unordered_map< WfcDescrAttr, AttrStorage > d_wfcAttrVals
Definition: RDM1FE.h:173
size_type d_cellBlockSize
Definition: RDM1FE.h:170
typename RDM1< ValueType, memorySpace >::AttrStorage AttrStorage
Definition: RDM1FE.h:64
size_type getnKSOrbs() const
Definition: RDM1FE.t.cpp:141
Intermediate abstract class that stores the spectral (eigen) decomposition of the one-particle reduce...
Definition: RDM1Spectral.h:46
std::vector< dftefe::quadrature::QuadratureValuesContainer< double, dftefe::utils::MemorySpace::HOST > > AttrStorage
Definition: RDM1.h:59
Definition: LinAlgOpContext.h:52
DensityObsAttr
Definition: KSAttributes.h:48
SpinMode
Definition: KSAttributes.h:55
typeInternal::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:183
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9