DFT-EFE
 
Loading...
Searching...
No Matches
dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim > Class Template Reference

Class to store the one-particle reduced density matrix using its spectral (eigen) representation in the finite-element basis. More...

#include <RDM1FE.h>

Inheritance diagram for dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >:
Collaboration diagram for dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >:

Public Types

using ValueType = linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff >
 
using AttrStorage = typename RDM1< ValueType, memorySpace >::AttrStorage
 
- Public Types inherited from dftefe::ksdft::RDM1Spectral< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff >, memorySpace >
using AttrStorage = typename RDM1< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff >, memorySpace >::AttrStorage
 
- Public Types inherited from dftefe::ksdft::RDM1< ValueType, memorySpace >
using AttrStorage = std::vector< dftefe::quadrature::QuadratureValuesContainer< double, dftefe::utils::MemorySpace::HOST > >
 
using AttrStorageRef = std::reference_wrapper< AttrStorage >
 
using AttrStorageConstRef = std::reference_wrapper< const AttrStorage >
 

Public Member Functions

virtual ~RDM1FE ()=default
 
 RDM1FE (std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBasisDataStorage, const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > &feBMPsi, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext, const MPI_Comm &mpiCommDomain, const size_type cellBlockSize, const size_type waveFuncBatchSize, const SpinMode spinMode=SpinMode::Unpolarized, const bool isSOC=false, const std::vector< double > &kPointCoords=std::vector< double >{}, const std::vector< double > &kPointWeights=std::vector< double >{})
 
void reinit (std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBasisDataStorage, const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > &feBMPsi)
 
void setEvalDescrFlag (const bool evalFlag) override
 
void getDescriptors (const std::set< DensityDescrAttr > &densityAttrs, const std::set< WfcDescrAttr > &wfcAttrs, std::unordered_map< DensityDescrAttr, AttrStorage > &densityAttrVals, std::unordered_map< WfcDescrAttr, AttrStorage > &wfcAttrVals)
 
void setDescriptors (const std::unordered_map< DensityDescrAttr, AttrStorage > &densityAttrVals, const std::unordered_map< WfcDescrAttr, AttrStorage > &wfcAttrVals)
 
void getDensityObs (const std::set< DensityObsAttr > &densityObsAttrs, std::unordered_map< DensityObsAttr, std::vector< std::vector< double > > > &densityObsAttrVals)
 
bool isSpinPolarized () const
 
bool isNonCollinear () const
 
bool isSOC () const
 
size_type getnKSOrbs () const
 
std::vector< double > getkPointCoords () const
 
std::vector< double > getkPointWeights () const
 
std::unique_ptr< RDM1< ValueType, memorySpace > > clone () const
 
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > getFEBasisDataStorage () const
 
const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > & getFEBasisManager () const
 
- Public Member Functions inherited from dftefe::ksdft::RDM1Spectral< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff >, memorySpace >
 RDM1Spectral ()
 
virtual ~RDM1Spectral ()=default
 
void setSpectral (std::unique_ptr< linearAlgebra::MultiVector< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff >, memorySpace > > ksOrbitals, const std::vector< std::vector< double > > &occupancies, const size_type nKSOrbs)
 
void getSpectral (std::unique_ptr< linearAlgebra::MultiVector< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff >, memorySpace > > &ksOrbitals, std::vector< std::vector< double > > &occupancies, size_type &nKSOrbs)
 
bool getKSSetFlag () const
 
- Public Member Functions inherited from dftefe::ksdft::RDM1< ValueType, memorySpace >
virtual ~RDM1 ()=default
 Default destructor. More...
 
virtual void setEvalDescrFlag (const bool evalFlag)=0
 
virtual void getDescriptors (const std::set< DensityDescrAttr > &densityAttrs, const std::set< WfcDescrAttr > &wfcAttrs, std::unordered_map< DensityDescrAttr, AttrStorage > &densityAttrVals, std::unordered_map< WfcDescrAttr, AttrStorage > &wfcAttrVals)=0
 
virtual void setDescriptors (const std::unordered_map< DensityDescrAttr, AttrStorage > &densityAttrVals, const std::unordered_map< WfcDescrAttr, AttrStorage > &wfcAttrVals)=0
 
virtual void getDensityObs (const std::set< DensityObsAttr > &densityObsAttrs, std::unordered_map< DensityObsAttr, std::vector< std::vector< double > > > &densityObsAttrVals)=0
 
virtual bool isSpinPolarized () const =0
 
virtual bool isNonCollinear () const =0
 
virtual bool isSOC () const =0
 
virtual size_type getnKSOrbs () const =0
 
virtual std::vector< double > getkPointCoords () const =0
 
virtual std::vector< double > getkPointWeights () const =0
 
virtual std::unique_ptr< RDM1< ValueType, memorySpace > > clone () const =0
 

Private Attributes

std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > d_feBasisDataStorage
 
const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > * d_feBMPsiPtr
 
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
 
std::shared_ptr< DensityCalculator< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim > > d_densCalc
 
std::vector< double > d_kPointCoords
 
std::vector< double > d_kPointWeights
 
bool d_isSpinPolarized
 
bool d_isNonCollinear
 
bool d_isSOC
 
std::reference_wrapper< const MPI_Comm > d_mpiCommDomain
 
size_type d_cellBlockSize
 
size_type d_waveFuncBatchSize
 
std::unordered_map< DensityDescrAttr, AttrStoraged_densityAttrVals
 
std::unordered_map< WfcDescrAttr, AttrStoraged_wfcAttrVals
 

Additional Inherited Members

- Protected Attributes inherited from dftefe::ksdft::RDM1Spectral< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff >, memorySpace >
std::unique_ptr< linearAlgebra::MultiVector< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff >, memorySpace > > d_ksOrbs
 
size_type d_nKSOrbs
 
std::vector< std::vector< double > > d_occupancies
 
bool d_ksSetFlag
 
bool d_evalFlag
 

Detailed Description

template<typename ValueTypeBasisData, typename ValueTypeBasisCoeff, dftefe::utils::MemorySpace memorySpace, size_type dim>
class dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >

Class to store the one-particle reduced density matrix using its spectral (eigen) representation in the finite-element basis.

Member Typedef Documentation

◆ AttrStorage

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
using dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::AttrStorage = typename RDM1<ValueType, memorySpace>::AttrStorage

◆ ValueType

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
using dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::ValueType = linearAlgebra::blasLapack::scalar_type<ValueTypeBasisData, ValueTypeBasisCoeff>

Constructor & Destructor Documentation

◆ ~RDM1FE()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
virtual dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::~RDM1FE ( )
virtualdefault

◆ RDM1FE()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::RDM1FE ( std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > >  feBasisDataStorage,
const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > &  feBMPsi,
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > >  linAlgOpContext,
const MPI_Comm &  mpiCommDomain,
const size_type  cellBlockSize,
const size_type  waveFuncBatchSize,
const SpinMode  spinMode = SpinMode::Unpolarized,
const bool  isSOC = false,
const std::vector< double > &  kPointCoords = std::vector<double>{},
const std::vector< double > &  kPointWeights = std::vector<double>{} 
)
Here is the call graph for this function:

Member Function Documentation

◆ clone()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::unique_ptr< RDM1< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff >, memorySpace > > dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::clone
virtual

◆ getDensityObs()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
void dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::getDensityObs ( const std::set< DensityObsAttr > &  densityObsAttrs,
std::unordered_map< DensityObsAttr, std::vector< std::vector< double > > > &  densityObsAttrVals 
)
virtual

◆ getDescriptors()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
void dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::getDescriptors ( const std::set< DensityDescrAttr > &  densityAttrs,
const std::set< WfcDescrAttr > &  wfcAttrs,
std::unordered_map< DensityDescrAttr, AttrStorage > &  densityAttrVals,
std::unordered_map< WfcDescrAttr, AttrStorage > &  wfcAttrVals 
)
virtual

Implements dftefe::ksdft::RDM1< ValueType, memorySpace >.

Here is the call graph for this function:

◆ getFEBasisDataStorage()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::getFEBasisDataStorage

◆ getFEBasisManager()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > & dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::getFEBasisManager

◆ getkPointCoords()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::vector< double > dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::getkPointCoords
virtual

◆ getkPointWeights()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::vector< double > dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::getkPointWeights
virtual

◆ getnKSOrbs()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
size_type dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::getnKSOrbs
virtual

◆ isNonCollinear()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
bool dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::isNonCollinear
virtual

◆ isSOC()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
bool dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::isSOC
virtual

Implements dftefe::ksdft::RDM1< ValueType, memorySpace >.

Here is the caller graph for this function:

◆ isSpinPolarized()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
bool dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::isSpinPolarized
virtual

◆ reinit()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
void dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::reinit ( std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > >  feBasisDataStorage,
const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > &  feBMPsi 
)

◆ setDescriptors()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
void dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::setDescriptors ( const std::unordered_map< DensityDescrAttr, AttrStorage > &  densityAttrVals,
const std::unordered_map< WfcDescrAttr, AttrStorage > &  wfcAttrVals 
)
virtual

◆ setEvalDescrFlag()

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
void dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::setEvalDescrFlag ( const bool  evalFlag)
overridevirtual

Member Data Documentation

◆ d_cellBlockSize

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
size_type dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_cellBlockSize
private

◆ d_densCalc

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr<DensityCalculator<ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim> > dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_densCalc
private

◆ d_densityAttrVals

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::unordered_map<DensityDescrAttr, AttrStorage> dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_densityAttrVals
private

◆ d_feBasisDataStorage

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr< const basis::FEBasisDataStorage<ValueTypeBasisData, memorySpace> > dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_feBasisDataStorage
private

◆ d_feBMPsiPtr

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
const basis::FEBasisManager<ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim>* dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_feBMPsiPtr
private

◆ d_isNonCollinear

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
bool dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_isNonCollinear
private

◆ d_isSOC

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
bool dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_isSOC
private

◆ d_isSpinPolarized

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
bool dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_isSpinPolarized
private

◆ d_kPointCoords

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::vector<double> dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_kPointCoords
private

◆ d_kPointWeights

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::vector<double> dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_kPointWeights
private

◆ d_linAlgOpContext

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace> > dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_linAlgOpContext
private

◆ d_mpiCommDomain

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::reference_wrapper<const MPI_Comm> dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_mpiCommDomain
private

◆ d_waveFuncBatchSize

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
size_type dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_waveFuncBatchSize
private

◆ d_wfcAttrVals

template<typename ValueTypeBasisData , typename ValueTypeBasisCoeff , dftefe::utils::MemorySpace memorySpace, size_type dim>
std::unordered_map<WfcDescrAttr, AttrStorage> dftefe::ksdft::RDM1FE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim >::d_wfcAttrVals
private

The documentation for this class was generated from the following files: