26#ifndef dftefeAtomCenterNonLocalOpContextFE_h
27#define dftefeAtomCenterNonLocalOpContextFE_h
43 template <
typename ValueTypeOperator,
44 typename ValueTypeOperand,
48 :
public linearAlgebra::
49 OperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>
69 std::shared_ptr<const atoms::AtomSphericalDataContainer>
70 atomSphericalDataContainer,
71 const double atomPartitionTolerance,
72 const std::vector<std::string> & atomSymbolVec,
73 const std::vector<utils::Point> &atomCoordinatesVec,
89 bool updateGhostX =
false,
90 bool updateGhostY =
false)
const override;
100 const ValueTypeOperand *xCellValuesBegin)
const;
110 ValueTypeOperand *yCellValuesBegin)
const;
118 const std::vector<dftefe::utils::Point> &points)
const;
130 mutable std::shared_ptr<
145 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
154 std::shared_ptr<const EnrichmentIdsPartition<dim>>
156 std::vector<std::vector<global_size_type>>
158 const std::shared_ptr<const atoms::AtomSphericalDataContainer>
161 std::unordered_map<std::string, std::vector<double>>
164 std::unordered_map<std::string, std::vector<int>>
170 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
Definition: AtomCenterNonLocalOpContextFE.h:50
void setCXToZero() const
Definition: AtomCenterNonLocalOpContextFE.t.cpp:887
void apply(linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &X, linearAlgebra::MultiVector< ValueType, memorySpace > &Y, bool updateGhostX=false, bool updateGhostY=false) const override
Definition: AtomCenterNonLocalOpContextFE.t.cpp:733
std::unordered_map< std::string, std::vector< double > > d_atomSymbolToCouplingConstVecMap
Definition: AtomCenterNonLocalOpContextFE.h:162
std::vector< std::vector< global_size_type > > d_overlappingProjectorIdsInCells
Definition: AtomCenterNonLocalOpContextFE.h:157
std::shared_ptr< const EnrichmentIdsPartition< dim > > d_projectorIdsPartition
Definition: AtomCenterNonLocalOpContextFE.h:155
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
Definition: AtomCenterNonLocalOpContextFE.h:171
std::unordered_map< std::string, int > d_atomSymbolToNumProjMap
Definition: AtomCenterNonLocalOpContextFE.h:163
std::vector< double > getProjectorValues(const size_type cellId, const std::vector< dftefe::utils::Point > &points) const
Definition: AtomCenterNonLocalOpContextFE.t.cpp:654
void applyCOnVCconjtransX(std::pair< size_type, size_type > cellRange, ValueTypeOperand *yCellValuesBegin) const
Definition: AtomCenterNonLocalOpContextFE.t.cpp:1008
linearAlgebra::blasLapack::real_type< ValueType > RealType
Definition: AtomCenterNonLocalOpContextFE.h:55
const size_type d_maxWaveFnBatch
Definition: AtomCenterNonLocalOpContextFE.h:153
const std::string d_fieldNameProjector
Definition: AtomCenterNonLocalOpContextFE.h:169
void applyCconjtransOnX(std::pair< size_type, size_type > cellRange, const ValueTypeOperand *xCellValuesBegin) const
Definition: AtomCenterNonLocalOpContextFE.t.cpp:901
const std::vector< std::string > & d_atomSymbolVec
Definition: AtomCenterNonLocalOpContextFE.h:167
std::vector< size_type > d_numProjsInCells
Definition: AtomCenterNonLocalOpContextFE.h:141
utils::MemoryStorage< ValueTypeOperator, memorySpace > d_cellWiseC
Definition: AtomCenterNonLocalOpContextFE.h:126
void applyAllReduceOnCconjtransX() const
Definition: AtomCenterNonLocalOpContextFE.t.cpp:960
~AtomCenterNonLocalOpContextFE()=default
Default Destructor.
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > d_CX
Definition: AtomCenterNonLocalOpContextFE.h:132
linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand > ValueType
Definition: AtomCenterNonLocalOpContextFE.h:54
void applyVOnCconjtransX() const
Definition: AtomCenterNonLocalOpContextFE.t.cpp:974
const size_type d_maxCellBlock
Definition: AtomCenterNonLocalOpContextFE.h:152
void reinitCX(size_type waveFuncBlockSize) const
Definition: AtomCenterNonLocalOpContextFE.t.cpp:868
dftefe::utils::MemoryStorage< size_type, memorySpace > d_locallyOwnedCellLocalProjectorIds
Definition: AtomCenterNonLocalOpContextFE.h:138
size_type d_totProjInProc
Definition: AtomCenterNonLocalOpContextFE.h:143
std::unordered_map< std::string, std::vector< int > > d_atomSymbolToBetaIndexVecMap
Definition: AtomCenterNonLocalOpContextFE.h:165
const std::shared_ptr< const atoms::AtomSphericalDataContainer > d_atomSphericalDataContainer
Definition: AtomCenterNonLocalOpContextFE.h:159
utils::MemoryStorage< ValueType, memorySpace > d_CXCellValues
Definition: AtomCenterNonLocalOpContextFE.h:174
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > d_mpiPatternP2PProj
Definition: AtomCenterNonLocalOpContextFE.h:146
const std::vector< utils::Point > & d_atomCoordinatesVec
Definition: AtomCenterNonLocalOpContextFE.h:168
std::vector< size_type > d_numCellDofs
Definition: AtomCenterNonLocalOpContextFE.h:173
size_type d_maxProjInCell
Definition: AtomCenterNonLocalOpContextFE.h:142
utils::MemoryStorage< ValueTypeOperator, memorySpace > d_V
Definition: AtomCenterNonLocalOpContextFE.h:135
const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > * d_feBasisManager
Definition: AtomCenterNonLocalOpContextFE.h:151
size_type d_numLocallyOwnedCells
Definition: AtomCenterNonLocalOpContextFE.h:172
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: LinAlgOpContext.h:38
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
Definition: MemoryStorage.h:38
blas::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:70
blas::real_type< ValueType > real_type
Definition: BlasLapackTypedef.h:64
int MPIComm
Definition: MPITypes.h:83
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8