26#ifndef dftefe_RDM1Mixing_h
27#define dftefe_RDM1Mixing_h
31#include <unordered_map>
61 template <
typename ValueType, dftefe::utils::MemorySpace memorySpace>
85 const std::vector<RealType> & jxwDataHost,
86 const double mixingParameter,
87 const bool isAdaptiveMixingParameter,
91 const MPI_Comm &mpiCommDomain);
120 const std::set<DensityDescrAttr> & densityAttrs,
121 const std::set<WfcDescrAttr> & wfcAttrs,
122 std::unordered_map<DensityDescrAttr, AttrStorage> &densityAttrVals,
123 std::unordered_map<WfcDescrAttr, AttrStorage> &wfcAttrVals)
override;
126 setDescriptors(
const std::unordered_map<DensityDescrAttr, AttrStorage>
128 const std::unordered_map<WfcDescrAttr, AttrStorage>
129 &wfcAttrVals)
override;
133 const std::set<DensityObsAttr> &densityObsAttrs,
134 std::unordered_map<
DensityObsAttr, std::vector<std::vector<double>>>
135 &densityObsAttrVals)
override;
144 isSOC()
const override;
151 std::unique_ptr<RDM1<ValueType, memorySpace>>
152 clone()
const override;
160 std::shared_ptr<linearAlgebra::LinAlgOpContext<utils::MemorySpace::HOST>>
This class performs the anderson mixing in a variable agnostic way This class takes can take differen...
Definition: MixingScheme.h:72
RDM1 implementation that performs Anderson mixing of the electron density. Derives directly from RDM1...
Definition: RDM1Mixing.h:63
bool isSOC() const override
Definition: RDM1Mixing.t.cpp:249
MixingScheme< RealType, RealType > & d_mixingScheme
Definition: RDM1Mixing.h:157
bool isNonCollinear() const override
Definition: RDM1Mixing.t.cpp:238
AttrStorage d_gradDensityInAttrVals
Definition: RDM1Mixing.h:165
void setRDM1(std::shared_ptr< RDM1< ValueType, memorySpace > > rdm1)
Store rdm1 as a weak_ptr (non-owning).
Definition: RDM1Mixing.t.cpp:62
std::shared_ptr< linearAlgebra::LinAlgOpContext< utils::MemorySpace::HOST > > d_linAlgOpContextHost
Definition: RDM1Mixing.h:161
void getDensityObs(const std::set< DensityObsAttr > &densityObsAttrs, std::unordered_map< DensityObsAttr, std::vector< std::vector< double > > > &densityObsAttrVals) override
Definition: RDM1Mixing.t.cpp:207
std::weak_ptr< RDM1< ValueType, memorySpace > > d_rdm1Ptr
Definition: RDM1Mixing.h:155
size_type d_numElectrons
Definition: RDM1Mixing.h:159
const RDM1< ValueType, memorySpace > & getRDM1() const
Definition: RDM1Mixing.t.cpp:70
std::vector< double > getkPointWeights() const override
Definition: RDM1Mixing.t.cpp:282
void getDescriptors(const std::set< DensityDescrAttr > &densityAttrs, const std::set< WfcDescrAttr > &wfcAttrs, std::unordered_map< DensityDescrAttr, AttrStorage > &densityAttrVals, std::unordered_map< WfcDescrAttr, AttrStorage > &wfcAttrVals) override
Returns d_densityInAttrVals (the last mixed in-density).
Definition: RDM1Mixing.t.cpp:175
std::vector< double > getkPointCoords() const override
Definition: RDM1Mixing.t.cpp:271
linearAlgebra::blasLapack::real_type< ValueType > RealType
Definition: RDM1Mixing.h:65
virtual ~RDM1Mixing()=default
std::unique_ptr< RDM1< ValueType, memorySpace > > clone() const override
Definition: RDM1Mixing.t.cpp:293
void mix()
Execute the Anderson mixing pipeline using the stored d_rdm1Ptr. On the first call d_densityInAttrVal...
Definition: RDM1Mixing.t.cpp:81
bool isSpinPolarized() const override
Definition: RDM1Mixing.t.cpp:227
void setEvalDescrFlag(const bool evalFlag) override
Definition: RDM1Mixing.t.cpp:221
void setDescriptors(const std::unordered_map< DensityDescrAttr, AttrStorage > &densityAttrVals, const std::unordered_map< WfcDescrAttr, AttrStorage > &wfcAttrVals) override
Definition: RDM1Mixing.t.cpp:193
size_type d_mixingHistory
Definition: RDM1Mixing.h:158
typename RDM1< ValueType, memorySpace >::AttrStorage AttrStorage
Definition: RDM1Mixing.h:66
size_type getnKSOrbs() const override
Definition: RDM1Mixing.t.cpp:260
std::reference_wrapper< const MPI_Comm > d_mpiCommDomain
Definition: RDM1Mixing.h:162
AttrStorage d_densityInAttrVals
Definition: RDM1Mixing.h:164
Abstract class for the one-particle reduced density matrix.
Definition: RDM1.h:52
std::vector< dftefe::quadrature::QuadratureValuesContainer< double, dftefe::utils::MemorySpace::HOST > > AttrStorage
Definition: RDM1.h:59
Definition: LinAlgOpContext.h:52
DensityObsAttr
Definition: KSAttributes.h:48
typeInternal::real_type< ValueType > real_type
Definition: BlasLapackTypedef.h:177
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9