![]() |
Dune-Fufem 2.11
|
Loading...
Searching...
No Matches
dunefunctionsoperatorassembler.hh
Go to the documentation of this file.
11#warning This header is deprecated and will be removed after 2.11. Use the global assemblers from dune/assembler/defaultglobalassembler.hh instead.
49[[deprecated("This class will be removed after 2.11. Use Dune::Assembler::Assembler together with Dune::Fufem::Forms based local assemblers instead.")]]
58 static void zeroInitializeLocal(const TestLocalView& testLocalView, const AnsatzLocalView& ansatzLocalView, LocalMatrix& localMatrix)
75 static void distributeLocalPattern(const TestLocalView& testLocalView, const AnsatzLocalView& ansatzLocalView, PatternBuilder& patternBuilder)
94 static void distributeLocalEntries(const TestLocalView& testLocalView, const AnsatzLocalView& ansatzLocalView, const LocalMatrix& localMatrix, MatrixBackend& matrixBackend)
111 using LocalAssemblerPreprocess = decltype(std::declval<LocalAssembler>().preprocess(std::declval<typename TestBasis::LocalView>(), std::declval<typename AnsatzBasis::LocalView>()));
115 [[deprecated("This class will be removed after 2.11. Use Dune::Assembler::Assembler together with Dune::Fufem::Forms based local assemblers instead.")]]
153 void assembleBulkPattern(PatternBuilder& patternBuilder, const ElementPartition& elementPartition, std::size_t threadCount) const
155 static_assert(Dune::Capabilities::viewThreadSafe<typename GridView::Grid>::v, "Trying to use thread parallel assembler but grid is not viewThreadSafe.");
204 // We assume that all basis functions of the inner element couple with all basis functions from the outer one
239 using Field = std::decay_t<decltype(matrixBackend(testLocalView.index(0), ansatzLocalView.index(0)))>;
276 void assembleBulkEntries(Matrix&& matrix, LocalAssembler&& localAssembler, const ElementPartition& elementPartition, std::size_t threadCount) const
278 static_assert(Dune::Capabilities::viewThreadSafe<typename GridView::Grid>::v, "Trying to use thread parallel assembler but grid is not viewThreadSafe.");
295 using Field = std::decay_t<decltype(matrixBackend(testLocalView.index(0), ansatzLocalView.index(0)))>;
327 * There may be cases where things do not work as expected for standard (continuous) Galerkin spaces.
333 void assembleSkeletonEntries(Matrix&& matrix, LocalAssembler&& localAssembler, LocalBoundaryAssembler&& localBoundaryAssembler) const
339 Dune::MultipleCodimMultipleGeomTypeMapper<GridView> faceMapper(testBasis_.gridView(), mcmgElementLayout());
349 using Field = std::decay_t<decltype(matrixBackend(insideTestLocalView.index(0), insideAnsatzLocalView.index(0)))>;
355 matrixContrainer[0][1].setSize(insideTestLocalView.maxSize(), outsideAnsatzLocalView.maxSize());
356 matrixContrainer[1][0].setSize(outsideTestLocalView.maxSize(), insideAnsatzLocalView.maxSize());
357 matrixContrainer[1][1].setSize(outsideTestLocalView.maxSize(), outsideAnsatzLocalView.maxSize());
382 /* Only handle every intersection once; we choose the case where the inner element has the lower index
384 * This should also work with grids where elements can have different geometries. TODO: Actually test this somewhere!*/
400 localAssembler(is, matrixContrainer, insideTestLocalView, insideAnsatzLocalView, outsideTestLocalView, outsideAnsatzLocalView);
402 distributeLocalEntries(insideTestLocalView, insideAnsatzLocalView, matrixContrainer[0][0], matrixBackend);
403 distributeLocalEntries(insideTestLocalView, outsideAnsatzLocalView, matrixContrainer[0][1], matrixBackend);
404 distributeLocalEntries(outsideTestLocalView, insideAnsatzLocalView, matrixContrainer[1][0], matrixBackend);
405 distributeLocalEntries(outsideTestLocalView, outsideAnsatzLocalView, matrixContrainer[1][1], matrixBackend);
469 void assembleBulk(Matrix&& matrix, LocalAssembler&& localAssembler, const ElementPartition& elementPartition, std::size_t threadCount) const
471 static_assert(Dune::Capabilities::viewThreadSafe<typename GridView::Grid>::v, "Trying to use thread parallel assembler but grid is not viewThreadSafe.");
481 assembleBulkEntries(matrixBackend, std::forward<LocalAssembler>(localAssembler), elementPartition, threadCount);
488TestLocalView& selectTestLocalView(AnsatzLocalView& ansatzLocalView, TestLocalView& testLocalView) const
527// [[deprecated("This function will be removed after 2.11. Use Dune::Assembler::Assembler together with Dune::Fufem::Forms based local assemblers instead.")]]
Col col
int size() const
#define DUNE_NO_DEPRECATED_END
#define DUNE_NO_DEPRECATED_BEGIN
MCMGLayout mcmgElementLayout()
Generic global assembler for operators on a gridview.
Definition dunefunctionsoperatorassembler.hh:51
void assembleBulkEntries(Matrix &&matrix, LocalAssembler &&localAssembler) const
Assemble bulk integrals.
Definition dunefunctionsoperatorassembler.hh:223
const TestBasis & testBasis_
Definition dunefunctionsoperatorassembler.hh:514
void assembleBulkEntries(Matrix &&matrix, LocalAssembler &&localAssembler, const ElementPartition &elementPartition, std::size_t threadCount) const
Thread parallel version of assembleBulkEntries.
Definition dunefunctionsoperatorassembler.hh:276
void assembleSkeletonPattern(PatternBuilder &patternBuilder) const
Definition dunefunctionsoperatorassembler.hh:174
DuneFunctionsOperatorAssembler(const TestBasis &tBasis, const AnsatzBasis &aBasis)
create assembler for grid
Definition dunefunctionsoperatorassembler.hh:116
void assembleBulkPattern(PatternBuilder &patternBuilder) const
Definition dunefunctionsoperatorassembler.hh:124
void assembleBulk(Matrix &&matrix, LocalAssembler &&localAssembler) const
Create matrix pattern and assemble bulk integrals.
Definition dunefunctionsoperatorassembler.hh:424
const AnsatzBasis & ansatzBasis_
Definition dunefunctionsoperatorassembler.hh:515
void assembleSkeletonEntries(Matrix &&matrix, LocalAssembler &&localAssembler, LocalBoundaryAssembler &&localBoundaryAssembler) const
Definition dunefunctionsoperatorassembler.hh:333
void assembleBulkPattern(PatternBuilder &patternBuilder, const ElementPartition &elementPartition, std::size_t threadCount) const
Thread parallel version of assembleBulkPattern.
Definition dunefunctionsoperatorassembler.hh:153
void assembleBulk(Matrix &&matrix, LocalAssembler &&localAssembler, const ElementPartition &elementPartition, std::size_t threadCount) const
Thread parallel version of assembleBulk.
Definition dunefunctionsoperatorassembler.hh:469
T forward(T... args)
void parallelAlgorithm(std::size_t threadCount, F &&threadImp)
Utility for implementing parallel algorithms based on colored entity partitions.
Definition parallelalgorithm.hh:147
auto duneFunctionsOperatorAssembler(const TestBasis &testBasis, const AnsatzBasis &ansatzBasis)
Create DuneFunctionsOperatorAssembler.
Definition dunefunctionsoperatorassembler.hh:528
