DFT-EFE
 
Loading...
Searching...
No Matches
dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim > Class Template Reference

#include <AtomCenterNonLocalOpContextFE.h>

Inheritance diagram for dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >:
Collaboration diagram for dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >:

Public Types

using ValueType = linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >
 
using RealType = linearAlgebra::blasLapack::real_type< ValueType >
 

Public Member Functions

 AtomCenterNonLocalOpContextFE (const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &feBasisManager, const basis::FEBasisDataStorage< ValueTypeOperator, memorySpace > &feBasisDataStorage, std::shared_ptr< const atoms::AtomSphericalDataContainer > atomSphericalDataContainer, const double atomPartitionTolerance, const std::vector< std::string > &atomSymbolVec, const std::vector< utils::Point > &atomCoordinatesVec, const size_type maxCellBlock, const size_type maxFieldBlock, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext, const utils::mpi::MPIComm &comm)
 Constructor Class does : \sum_atoms \sum_lpm CVC^T X = Y where V = coupling matrix C_lpm,j = \integral_\omega \beta_lp Y_lm N_j. More...
 
 ~AtomCenterNonLocalOpContextFE ()=default
 Default Destructor. More...
 
void apply (linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &X, linearAlgebra::MultiVector< ValueType, memorySpace > &Y, bool updateGhostX=false, bool updateGhostY=false) const override
 
void reinitCX (size_type waveFuncBlockSize) const
 
void setCXToZero () const
 
void applyCconjtransOnX (std::pair< size_type, size_type > cellRange, const ValueTypeOperand *xCellValuesBegin) const
 
void applyAllReduceOnCconjtransX () const
 
void applyVOnCconjtransX () const
 
void applyCOnVCconjtransX (std::pair< size_type, size_type > cellRange, ValueTypeOperand *yCellValuesBegin) const
 

Private Member Functions

std::vector< double > getProjectorValues (const size_type cellId, const std::vector< dftefe::utils::Point > &points) const
 

Private Attributes

utils::MemoryStorage< ValueTypeOperator, memorySpace > d_cellWiseC
 
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > d_CX
 
utils::MemoryStorage< ValueTypeOperator, memorySpace > d_V
 
dftefe::utils::MemoryStorage< size_type, memorySpace > d_locallyOwnedCellLocalProjectorIds
 
std::vector< size_typed_numProjsInCells
 
size_type d_maxProjInCell
 
size_type d_totProjInProc
 
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > d_mpiPatternP2PProj
 
const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > * d_feBasisManager
 
const size_type d_maxCellBlock
 
const size_type d_maxWaveFnBatch
 
std::shared_ptr< const EnrichmentIdsPartition< dim > > d_projectorIdsPartition
 
std::vector< std::vector< global_size_type > > d_overlappingProjectorIdsInCells
 
const std::shared_ptr< const atoms::AtomSphericalDataContainer > d_atomSphericalDataContainer
 
std::unordered_map< std::string, std::vector< double > > d_atomSymbolToCouplingConstVecMap
 
std::unordered_map< std::string, int > d_atomSymbolToNumProjMap
 
std::unordered_map< std::string, std::vector< int > > d_atomSymbolToBetaIndexVecMap
 
const std::vector< std::string > & d_atomSymbolVec
 
const std::vector< utils::Point > & d_atomCoordinatesVec
 
const std::string d_fieldNameProjector
 
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
 
size_type d_numLocallyOwnedCells
 
std::vector< size_typed_numCellDofs
 
utils::MemoryStorage< ValueType, memorySpace > d_CXCellValues
 

Member Typedef Documentation

◆ RealType

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
using dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::RealType = linearAlgebra::blasLapack::real_type<ValueType>

◆ ValueType

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
using dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::ValueType = linearAlgebra::blasLapack::scalar_type<ValueTypeOperator, ValueTypeOperand>

Constructor & Destructor Documentation

◆ AtomCenterNonLocalOpContextFE()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::AtomCenterNonLocalOpContextFE ( const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &  feBasisManager,
const basis::FEBasisDataStorage< ValueTypeOperator, memorySpace > &  feBasisDataStorage,
std::shared_ptr< const atoms::AtomSphericalDataContainer >  atomSphericalDataContainer,
const double  atomPartitionTolerance,
const std::vector< std::string > &  atomSymbolVec,
const std::vector< utils::Point > &  atomCoordinatesVec,
const size_type  maxCellBlock,
const size_type  maxFieldBlock,
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > >  linAlgOpContext,
const utils::mpi::MPIComm comm 
)

Constructor Class does : \sum_atoms \sum_lpm CVC^T X = Y where V = coupling matrix C_lpm,j = \integral_\omega \beta_lp Y_lm N_j.

Here is the call graph for this function:

◆ ~AtomCenterNonLocalOpContextFE()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::~AtomCenterNonLocalOpContextFE ( )
default

Default Destructor.

Member Function Documentation

◆ apply()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
void dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::apply ( linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &  X,
linearAlgebra::MultiVector< ValueType, memorySpace > &  Y,
bool  updateGhostX = false,
bool  updateGhostY = false 
) const
override
Here is the call graph for this function:

◆ applyAllReduceOnCconjtransX()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
void dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::applyAllReduceOnCconjtransX

◆ applyCconjtransOnX()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
void dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::applyCconjtransOnX ( std::pair< size_type, size_type cellRange,
const ValueTypeOperand *  xCellValuesBegin 
) const
Here is the call graph for this function:

◆ applyCOnVCconjtransX()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
void dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::applyCOnVCconjtransX ( std::pair< size_type, size_type cellRange,
ValueTypeOperand *  yCellValuesBegin 
) const
Here is the call graph for this function:

◆ applyVOnCconjtransX()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
void dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::applyVOnCconjtransX
Here is the call graph for this function:

◆ getProjectorValues()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::vector< double > dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::getProjectorValues ( const size_type  cellId,
const std::vector< dftefe::utils::Point > &  points 
) const
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ reinitCX()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
void dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::reinitCX ( size_type  waveFuncBlockSize) const

◆ setCXToZero()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
void dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::setCXToZero

Member Data Documentation

◆ d_atomCoordinatesVec

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const std::vector<utils::Point>& dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_atomCoordinatesVec
private

◆ d_atomSphericalDataContainer

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const std::shared_ptr<const atoms::AtomSphericalDataContainer> dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_atomSphericalDataContainer
private

◆ d_atomSymbolToBetaIndexVecMap

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::unordered_map<std::string, std::vector<int> > dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_atomSymbolToBetaIndexVecMap
private

◆ d_atomSymbolToCouplingConstVecMap

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::unordered_map<std::string, std::vector<double> > dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_atomSymbolToCouplingConstVecMap
private

◆ d_atomSymbolToNumProjMap

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::unordered_map<std::string, int> dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_atomSymbolToNumProjMap
private

◆ d_atomSymbolVec

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const std::vector<std::string>& dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_atomSymbolVec
private

◆ d_cellWiseC

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
utils::MemoryStorage<ValueTypeOperator, memorySpace> dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_cellWiseC
private

◆ d_CX

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr< linearAlgebra::MultiVector<ValueType, memorySpace> > dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_CX
mutableprivate

◆ d_CXCellValues

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
utils::MemoryStorage<ValueType, memorySpace> dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_CXCellValues
mutableprivate

◆ d_feBasisManager

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const FEBasisManager<ValueTypeOperand, ValueTypeOperator, memorySpace, dim>* dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_feBasisManager
private

◆ d_fieldNameProjector

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const std::string dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_fieldNameProjector
private

◆ d_linAlgOpContext

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace> > dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_linAlgOpContext
private

◆ d_locallyOwnedCellLocalProjectorIds

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
dftefe::utils::MemoryStorage<size_type, memorySpace> dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_locallyOwnedCellLocalProjectorIds
private

◆ d_maxCellBlock

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const size_type dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_maxCellBlock
private

◆ d_maxProjInCell

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
size_type dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_maxProjInCell
private

◆ d_maxWaveFnBatch

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const size_type dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_maxWaveFnBatch
private

◆ d_mpiPatternP2PProj

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace> > dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_mpiPatternP2PProj
private

◆ d_numCellDofs

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::vector<size_type> dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_numCellDofs
private

◆ d_numLocallyOwnedCells

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
size_type dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_numLocallyOwnedCells
private

◆ d_numProjsInCells

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::vector<size_type> dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_numProjsInCells
private

◆ d_overlappingProjectorIdsInCells

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::vector<std::vector<global_size_type> > dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_overlappingProjectorIdsInCells
private

◆ d_projectorIdsPartition

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr<const EnrichmentIdsPartition<dim> > dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_projectorIdsPartition
private

◆ d_totProjInProc

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
size_type dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_totProjInProc
private

◆ d_V

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
utils::MemoryStorage<ValueTypeOperator, memorySpace> dftefe::basis::AtomCenterNonLocalOpContextFE< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_V
private

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