26#ifndef dftefeOEFEOverlapOperatorContext_h
27#define dftefeOEFEOverlapOperatorContext_h
60 template <
typename ValueTypeOperator,
61 typename ValueTypeOperand,
65 :
public linearAlgebra::
66 OperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>
101 &classicalBlockBasisDataStorage,
103 &enrichmentBlockEnrichmentBasisDataStorage,
105 & enrichmentBlockClassicalBasisDataStorage,
110 const bool calculateWings =
true);
128 dim> &feBasisManager,
130 &classicalBlockBasisDataStorage,
132 & enrichmentBlockBasisDataStorage,
135 const bool calculateWings =
true);
153 dim> &feBasisManager,
155 &classicalBlockBasisDataStorageGLL,
157 &enrichmentBlockBasisDataStorage,
160 const bool isEnrichAtomBlockDiagonalApprox =
false);
178 dim> &feBasisManager,
180 &classicalBlockBasisDataStorageGLL,
182 &enrichmentBlockEnrichmentBasisDataStorage,
184 &enrichmentBlockClassicalBasisDataStorage,
187 const bool isEnrichAtomBlockDiagonalApprox =
false);
197 bool updateGhostX =
false,
198 bool updateGhostY =
false)
const override;
227 std::shared_ptr<linearAlgebra::Vector<ValueTypeOperator, memorySpace>>
229 std::shared_ptr<utils::MemoryStorage<ValueTypeOperator, memorySpace>>
Definition: EFEBasisDofHandler.h:57
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
A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete operator on...
Definition: OrthoEFEOverlapOperatorContext.h:67
bool d_isEnrichAtomBlockDiagonalApprox
Definition: OrthoEFEOverlapOperatorContext.h:236
std::shared_ptr< linearAlgebra::Vector< ValueTypeOperator, memorySpace > > d_diagonal
Definition: OrthoEFEOverlapOperatorContext.h:228
const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > * d_feBasisManager
Definition: OrthoEFEOverlapOperatorContext.h:219
linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand > ValueType
define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e....
Definition: OrthoEFEOverlapOperatorContext.h:77
Storage getBasisOverlap(const size_type cellId, const size_type basisId1, const size_type basisId2) const
Definition: OrthoEFEOverlapOperatorContext.t.cpp:2348
std::vector< size_type > d_dofsInCell
Definition: OrthoEFEOverlapOperatorContext.h:222
std::shared_ptr< utils::MemoryStorage< ValueTypeOperator, memorySpace > > d_basisOverlapEnrichmentBlock
Definition: OrthoEFEOverlapOperatorContext.h:230
~OrthoEFEOverlapOperatorContext()=default
bool d_isMassLumping
Definition: OrthoEFEOverlapOperatorContext.h:226
void apply(linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &X, linearAlgebra::MultiVector< ValueType, memorySpace > &Y, bool updateGhostX=false, bool updateGhostY=false) const override
Apply AX = B where A is the discretized matrix, X is the operand and B is the result.
Definition: OrthoEFEOverlapOperatorContext.t.cpp:2100
std::shared_ptr< Storage > d_basisOverlap
Definition: OrthoEFEOverlapOperatorContext.h:220
size_type d_nglobalEnrichmentIds
Definition: OrthoEFEOverlapOperatorContext.h:235
const size_type d_maxCellBlock
Definition: OrthoEFEOverlapOperatorContext.h:223
const EFEBasisDofHandler< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > * d_efebasisDofHandler
Definition: OrthoEFEOverlapOperatorContext.h:234
std::vector< size_type > d_cellStartIdsBasisOverlap
Definition: OrthoEFEOverlapOperatorContext.h:221
const Storage & getBasisOverlapInAllCells() const
Definition: OrthoEFEOverlapOperatorContext.t.cpp:2311
utils::MemoryStorage< ValueTypeOperator, memorySpace > d_atomBlockEnrichmentOverlap
Definition: OrthoEFEOverlapOperatorContext.h:238
Storage getBasisOverlapInCell(const size_type cellId) const
Definition: OrthoEFEOverlapOperatorContext.t.cpp:2324
const size_type d_maxFieldBlock
Definition: OrthoEFEOverlapOperatorContext.h:224
Definition: LinAlgOpContext.h:38
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
blas::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:70
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8