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;
183 std::shared_ptr<const FEBasisDataStorage<ValueTypeBasisData, memorySpace>>
194 mutable std::pair<size_type, size_type>
207 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:208
const FEBasisDofHandler< ValueTypeBasisCoeff, memorySpace, dim > * d_feBasisDofHandler
Definition: FEBasisOperations.h:202
size_type d_maxDofInCell
Definition: FEBasisOperations.h:203
StorageUnion d_fxJxWxNBlock
Definition: FEBasisOperations.h:191
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:879
size_type d_maxQuadInCell
Definition: FEBasisOperations.h:204
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:1425
std::vector< size_type > d_numCellDofs
Definition: FEBasisOperations.h:199
StorageBasis d_basisDataInCellRange
Definition: FEBasisOperations.h:189
StorageBasis d_JxWxNBlock
Definition: FEBasisOperations.h:190
StorageBasis d_basisGradientDataInCellRange
Definition: FEBasisOperations.h:190
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:191
std::vector< size_type > d_numCellQuad
Definition: FEBasisOperations.h:200
bool d_isBasisDataCellRangeCached
Definition: FEBasisOperations.h:193
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:1638
bool d_sameQuadRuleInAllCells
Definition: FEBasisOperations.h:206
~FEBasisOperations()=default
size_type d_maxCellBlock
Definition: FEBasisOperations.h:185
std::pair< size_type, size_type > d_cellRangeForBasisDataCache
Definition: FEBasisOperations.h:192
std::shared_ptr< const FEBasisDataStorage< ValueTypeBasisData, memorySpace > > d_feBasisDataStorage
Definition: FEBasisOperations.h:184
size_type d_numLocallyOwnedCells
Definition: FEBasisOperations.h:205
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:599
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:913
size_type d_maxFieldBlock
Definition: FEBasisOperations.h:186
StorageBasis d_JxWxGradNBlock
Definition: FEBasisOperations.h:190
bool d_variableDofsPerCell
Definition: FEBasisOperations.h:206
bool d_isBasisGradientDataCellRangeCached
Definition: FEBasisOperations.h:196
std::pair< size_type, size_type > d_cellRangeForBasisGradientDataCache
Definition: FEBasisOperations.h:195
void computeFEMatrices(realspace::LinearLocalOp L1, realspace::VectorMathOp Op1, const quadrature::QuadratureValuesContainer< ValueTypeUnion, memorySpace > &f, realspace::VectorMathOp L2, realspace::LinearLocalOp Op2, StorageUnion &cellWiseFEData, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext) const
Definition: FEBasisOperations.t.cpp:1889
void BasisWeakFormKernelWithField(realspace::LinearLocalOp L1, realspace::VectorMathOp Op1, const quadrature::QuadratureValuesContainer< ValueTypeUnion, memorySpace > &f, 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:43
void deleteScratch() const
Definition: FEBasisOperations.t.cpp:894
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