26#ifndef dftefeEnrichmentClassicalInterfaceSpherical_h
27#define dftefeEnrichmentClassicalInterfaceSpherical_h
33#include <unordered_map>
69 template <
typename ValueTypeBasisData,
113 cfeBasisDataStorageOverlapMatrix,
116 cfeBasisDataStorageRhs,
117 std::shared_ptr<const atoms::AtomSphericalDataContainer>
118 atomSphericalDataContainer,
119 const double atomPartitionTolerance,
120 const std::vector<std::string> & atomSymbolVec,
121 const std::vector<utils::Point> &atomCoordinatesVec,
122 const std::string fieldName,
140 std::shared_ptr<const TriangulationBase> triangulation,
142 std::shared_ptr<const atoms::AtomSphericalDataContainer>
143 atomSphericalDataContainer,
144 const double atomPartitionTolerance,
145 const std::vector<std::string> & atomSymbolVec,
146 const std::vector<utils::Point> &atomCoordinatesVec,
147 const std::string fieldName,
158 std::shared_ptr<const atoms::AtomSphericalDataContainer>
164 std::shared_ptr<const EnrichmentIdsPartition<dim>>
167 std::shared_ptr<const AtomIdsPartition<dim>>
170 std::shared_ptr<const BasisManager<ValueTypeBasisData, memorySpace>>
173 std::vector<ValueTypeBasisData>
176 std::vector<ValueTypeBasisData>
179 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
185 std::vector<std::string>
188 std::vector<utils::Point>
194 std::shared_ptr<const TriangulationBase>
219 const std::vector<dftefe::utils::Point> &points)
const;
224 const std::vector<dftefe::utils::Point> &points)
const;
229 const std::vector<dftefe::utils::Point> &points)
const;
236 double *basisEnrichQuadStorageStartPtr,
237 double *basisGradientEnrichQuadStorageStartPtr,
239 const size_type enrichBlock = 500)
const;
244 double * basisEnrichQuadStoragePtr,
246 const std::pair<size_type, size_type> cellRange)
const;
251 double *basisGradientEnrichQuadStoragePtr,
253 const std::pair<size_type, size_type> cellRange)
const;
261 std::vector<ValueTypeBasisData>> &
264 std::shared_ptr<const BasisDofHandler>
272 std::shared_ptr<const atoms::AtomSphericalDataContainer>
287 std::vector<std::vector<global_size_type>>
290 std::unordered_map<global_size_type, utils::OptimizedIndexSet<size_type>>
293 std::unordered_map<global_size_type, std::vector<ValueTypeBasisData>>
296 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
Definition: SphericalDataNumerical.h:57
Definition: Defaults.h:99
static const size_type ENRICHMENT_BATCH_SIZE
Definition: Defaults.h:92
Class to get the interface between Classical and Enrichment basis. It takes as the classical basis as...
Definition: EnrichmentClassicalInterfaceSpherical.h:73
std::vector< utils::Point > getAtomCoordinatesVec() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1221
const std::vector< std::string > d_atomSymbolVec
Definition: EnrichmentClassicalInterfaceSpherical.h:284
size_type d_feOrder
Definition: EnrichmentClassicalInterfaceSpherical.h:299
bool isOrthogonalized() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1199
const utils::mpi::MPIComm d_comm
Definition: EnrichmentClassicalInterfaceSpherical.h:301
std::vector< ValueTypeBasisData > getClassicalComponentCoeffsInCellOEFE(const size_type cellIndex) const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:996
std::shared_ptr< const AtomIdsPartition< dim > > d_atomIdsPartition
Definition: EnrichmentClassicalInterfaceSpherical.h:271
std::unordered_map< global_size_type, std::vector< ValueTypeBasisData > > d_enrichmentIdToInterfaceCoeffMap
Definition: EnrichmentClassicalInterfaceSpherical.h:294
const std::unordered_map< global_size_type, std::vector< ValueTypeBasisData > > & getClassicalComponentCoeffMap() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:978
~EnrichmentClassicalInterfaceSpherical()
Destructor for the class.
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:875
std::vector< double > getEnrichmentDerivative(const size_type cellId, const std::vector< dftefe::utils::Point > &points) const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1481
void getOverlappingEnrichmentInCellsAdditionalData()
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1942
bool d_isOrthogonalized
Definition: EnrichmentClassicalInterfaceSpherical.h:275
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
Definition: EnrichmentClassicalInterfaceSpherical.h:297
std::vector< double > getEnrichmentValue(const size_type cellId, const std::vector< dftefe::utils::Point > &points) const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1398
global_size_type getEnrichmentId(size_type cellId, size_type enrichmentCellLocalId) const
The localid is determined by the storage pattern of the components of basisInterfaceCoeff multivector...
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1266
std::shared_ptr< const atoms::AtomSphericalDataContainer > getAtomSphericalDataContainer() const
Function to return AtomSphericalDataContainerObject.
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:892
std::shared_ptr< const atoms::AtomSphericalDataContainer > d_atomSphericalDataContainer
Definition: EnrichmentClassicalInterfaceSpherical.h:273
std::vector< double > getEnrichmentHessian(const size_type cellId, const std::vector< dftefe::utils::Point > &points) const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1590
std::vector< size_type > d_numEnrichInAllCells
Definition: EnrichmentClassicalInterfaceSpherical.h:307
size_type d_enrichBatchSize
Definition: EnrichmentClassicalInterfaceSpherical.h:303
std::shared_ptr< const AtomIdsPartition< dim > > getAtomIdsPartition() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:916
std::vector< ValueTypeBasisData > getClassicalComponentCoeffsInAllCellsOEFE() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1082
const std::string d_fieldName
Definition: EnrichmentClassicalInterfaceSpherical.h:286
std::shared_ptr< EnrichmentIdsPartition< dim > > d_enrichmentIdsPartition
Definition: EnrichmentClassicalInterfaceSpherical.h:270
void getEnrichmentValuesInCellRangeAtQuadPts(const quadrature::QuadratureRuleContainer &quadRuleContainer, double *basisEnrichQuadStoragePtr, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext, const std::pair< size_type, size_type > cellRange) const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:2014
std::shared_ptr< const BasisDofHandler > getCFEBasisDofHandler() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:943
size_type getEnrichmentLocalId(global_size_type enrichmentId) const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1342
std::shared_ptr< const EnrichmentIdsPartition< dim > > getEnrichmentIdsPartition() const
Function to return EnrichmentIDsObject.
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:904
size_type d_cellBlockSize
Definition: EnrichmentClassicalInterfaceSpherical.h:304
std::shared_ptr< const FEBasisManager< ValueTypeBasisData, ValueTypeBasisData, memorySpace, dim > > d_cfeBasisManager
Definition: EnrichmentClassicalInterfaceSpherical.h:283
const std::vector< utils::Point > d_atomCoordinatesVec
Definition: EnrichmentClassicalInterfaceSpherical.h:285
size_type getFEOrder() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1254
std::shared_ptr< const FEBasisDofHandler< ValueTypeBasisData, memorySpace, dim > > d_cfeBasisDofHandler
Definition: EnrichmentClassicalInterfaceSpherical.h:278
void getEnrichmentGradientsInCellRangeAtQuadPts(const quadrature::QuadratureRuleContainer &quadRuleContainer, double *basisGradientEnrichQuadStoragePtr, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext, const std::pair< size_type, size_type > cellRange) const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:2052
std::vector< std::string > getAtomSymbolVec() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1210
std::shared_ptr< const TriangulationBase > d_triangulation
Definition: EnrichmentClassicalInterfaceSpherical.h:274
std::vector< std::vector< global_size_type > > d_overlappingEnrichmentIdsInCells
Definition: EnrichmentClassicalInterfaceSpherical.h:288
utils::MemoryStorage< double, memorySpace > d_originMemSpace
Definition: EnrichmentClassicalInterfaceSpherical.h:306
atoms::SphericalDataNumerical::Func< memorySpace > * d_sphericalDataNumericalFuncPtrVec
Definition: EnrichmentClassicalInterfaceSpherical.h:309
std::shared_ptr< const BasisManager< ValueTypeBasisData, memorySpace > > getCFEBasisManager() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:927
std::shared_ptr< const TriangulationBase > getTriangulation() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1243
void getEnrichmentDataInAllCellsAtQuadPts(bool storeValues, bool storeGradients, const quadrature::QuadratureRuleContainer &quadRuleContainer, double *basisEnrichQuadStorageStartPtr, double *basisGradientEnrichQuadStorageStartPtr, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext, const size_type enrichBlock=500) const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1610
const std::unordered_map< global_size_type, utils::OptimizedIndexSet< size_type > > & getClassicalComponentLocalIdsMap() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:961
std::unordered_map< global_size_type, utils::OptimizedIndexSet< size_type > > d_enrichmentIdToClassicalLocalIdMap
Definition: EnrichmentClassicalInterfaceSpherical.h:291
std::string getFieldName() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1232
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > getLinAlgOpContext() const
Definition: EnrichmentClassicalInterfaceSpherical.t.cpp:1183
An abstract class to store and access data for a given basis, such as the basis function values on a ...
Definition: FEBasisDataStorage.h:54
Definition: FEBasisDofHandler.h:57
An abstract class to encapsulate the partitioning of a finite element basis across multiple processor...
Definition: FEBasisManager.h:44
Definition: LinAlgOpContext.h:52
Definition: QuadratureRuleContainer.h:27
Definition: MemoryStorage.h:38
Definition: OptimizedIndexSet.h:48
int MPIComm
Definition: MPITypes.h:84
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9
std::uint64_t global_size_type
Definition: TypeConfig.h:10