26#ifndef dftefeFEBasisOperations_h
27#define dftefeFEBasisOperations_h
57 template <
typename ValueTypeBasisCoeff,
58 typename ValueTypeBasisData,
106 memorySpace> &quadValuesContainer)
const override;
116 memorySpace> &quadValuesContainer)
const override;
123 const std::pair<size_type, size_type> cellRange,
126 *quadValuesInCellRangePtr)
const;
136 &vectorData)
const override;
143 const std::pair<size_type, size_type> cellRange,
146 *quadValuesInCellRangePtr)
const;
185 std::shared_ptr<const FEBasisDataStorage<ValueTypeBasisData, memorySpace>>
196 mutable std::pair<size_type, size_type>
209 std::shared_ptr<const quadrature::QuadratureRuleContainer>
An abstract class to store and access data for a given basis, such as the basis function values on a ...
Definition: BasisDataStorage.h:59
An abstract class to encapsulate the partitioning of a basis across multiple processors.
Definition: BasisManager.h:54
Definition: BasisOperations.h:67
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
Definition: FEBasisOperations.h:64
std::shared_ptr< const quadrature::QuadratureRuleContainer > d_quadratureRuleContainer
Definition: FEBasisOperations.h:210
const FEBasisDofHandler< ValueTypeBasisCoeff, memorySpace, dim > * d_feBasisDofHandler
Definition: FEBasisOperations.h:204
size_type d_maxDofInCell
Definition: FEBasisOperations.h:205
void BasisWeakFormKernelWithField(realspace::LinearLocalOp L1, realspace::VectorMathOp Op1, const std::vector< quadrature::QuadratureValuesContainer< ValueTypeUnion, memorySpace > > &fVec, realspace::VectorMathOp Op2, realspace::LinearLocalOp L2, std::shared_ptr< const FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBasisDataStorage, const size_type cellBlockSize, StorageUnion &cellWiseFEData, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext) const
Definition: FEBasisOperations.t.cpp:45
StorageUnion d_fxJxWxNBlock
Definition: FEBasisOperations.h:193
typename BasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::ValueTypeUnion ValueTypeUnion
Definition: FEBasisOperations.h:76
void reinit(const size_type maxCellBlockSize, const size_type maxFieldBlockSize=0)
Definition: FEBasisOperations.t.cpp:901
size_type d_maxQuadInCell
Definition: FEBasisOperations.h:206
void computeFEMatrices(realspace::LinearLocalOp L1, realspace::VectorMathOp Op1, const std::vector< quadrature::QuadratureValuesContainer< ValueTypeUnion, memorySpace > > &fVec, realspace::VectorMathOp L2, realspace::LinearLocalOp Op2, StorageUnion &cellWiseFEData, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext) const
Definition: FEBasisOperations.t.cpp:1949
void interpolateWithBasisGradient(const linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData, const BasisManager< ValueTypeBasisCoeff, memorySpace > &basisManager, quadrature::QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisCoeff, ValueTypeBasisData >, memorySpace > &quadValuesContainer) const override
Definition: FEBasisOperations.t.cpp:1463
std::vector< size_type > d_numCellDofs
Definition: FEBasisOperations.h:201
StorageBasis d_basisDataInCellRange
Definition: FEBasisOperations.h:191
StorageBasis d_JxWxNBlock
Definition: FEBasisOperations.h:192
StorageBasis d_basisGradientDataInCellRange
Definition: FEBasisOperations.h:192
typename BasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::StorageBasis StorageBasis
Definition: FEBasisOperations.h:84
typename BasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::StorageUnion StorageUnion
Definition: FEBasisOperations.h:80
StorageUnion d_fieldCellValues
Definition: FEBasisOperations.h:193
std::vector< size_type > d_numCellQuad
Definition: FEBasisOperations.h:202
bool d_isBasisDataCellRangeCached
Definition: FEBasisOperations.h:195
void integrateWithBasisValues(const quadrature::QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisCoeff, ValueTypeBasisData >, memorySpace > &inp, const BasisManager< ValueTypeBasisCoeff, memorySpace > &basisManager, linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData) const override
Definition: FEBasisOperations.t.cpp:1689
bool d_sameQuadRuleInAllCells
Definition: FEBasisOperations.h:208
~FEBasisOperations()=default
size_type d_maxCellBlock
Definition: FEBasisOperations.h:187
std::pair< size_type, size_type > d_cellRangeForBasisDataCache
Definition: FEBasisOperations.h:194
std::shared_ptr< const FEBasisDataStorage< ValueTypeBasisData, memorySpace > > d_feBasisDataStorage
Definition: FEBasisOperations.h:186
size_type d_numLocallyOwnedCells
Definition: FEBasisOperations.h:207
void BasisWeakFormKernel(realspace::LinearLocalOp L1, realspace::VectorMathOp Op1, realspace::LinearLocalOp L2, std::shared_ptr< const FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBasisDataStorage, const size_type cellBlockSize, StorageBasis &cellWiseFEData, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext) const
Definition: FEBasisOperations.t.cpp:613
void interpolate(const linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData, const BasisManager< ValueTypeBasisCoeff, memorySpace > &basisManager, quadrature::QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueTypeBasisCoeff, ValueTypeBasisData >, memorySpace > &quadValuesContainer) const override
Definition: FEBasisOperations.t.cpp:935
size_type d_maxFieldBlock
Definition: FEBasisOperations.h:188
StorageBasis d_JxWxGradNBlock
Definition: FEBasisOperations.h:192
bool d_variableDofsPerCell
Definition: FEBasisOperations.h:208
bool d_isBasisGradientDataCellRangeCached
Definition: FEBasisOperations.h:198
std::pair< size_type, size_type > d_cellRangeForBasisGradientDataCache
Definition: FEBasisOperations.h:197
void deleteScratch() const
Definition: FEBasisOperations.t.cpp:916
Definition: LinAlgOpContext.h:52
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
Definition: QuadratureValuesContainer.h:39
VectorMathOp
Definition: BasisOperations.h:44
LinearLocalOp
Definition: BasisOperations.h:52
FEBasisOpScratchSpaceAttr
Definition: FEBasisOperations.h:46
@ basisGradientDataInCellRange
typeInternal::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:183
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9