dune-pdelab 2.7-git
Loading...
Searching...
No Matches
onestep/patternengine.hh
Go to the documentation of this file.
1#ifndef DUNE_PDELAB_GRIDOPERATOR_ONESTEP_PATTERNENGINE_HH
2#define DUNE_PDELAB_GRIDOPERATOR_ONESTEP_PATTERNENGINE_HH
3
6
7namespace Dune{
8 namespace PDELab{
9
17 template<typename OSLA>
20 typename OSLA::LocalAssemblerDT0::LocalPatternAssemblerEngine,
21 typename OSLA::LocalAssemblerDT1::LocalPatternAssemblerEngine
22 >
23 {
24
26 typename OSLA::LocalAssemblerDT0::LocalPatternAssemblerEngine,
27 typename OSLA::LocalAssemblerDT1::LocalPatternAssemblerEngine
28 > BaseT;
29
30 using BaseT::la;
31 using BaseT::lae0;
32 using BaseT::lae1;
33 using BaseT::implicit;
36
37 public:
39 typedef OSLA LocalAssembler;
40
41 typedef typename OSLA::LocalAssemblerDT0 LocalAssemblerDT0;
42 typedef typename OSLA::LocalAssemblerDT1 LocalAssemblerDT1;
43
45 typedef typename LocalAssembler::Traits::MatrixPattern Pattern;
47
55 : BaseT(la_)
56 , invalid_pattern(nullptr)
57 , pattern(invalid_pattern)
58 {}
59
62 void setPattern(Pattern & pattern_)
63 {
64
65 // Set pointer to global pattern
66 pattern = &pattern_;
67
68 // Initialize the engines of the two wrapped local assemblers
69 setLocalAssemblerEngineDT0(la.la0.localPatternAssemblerEngine(pattern_));
70 setLocalAssemblerEngineDT1(la.la1.localPatternAssemblerEngine(pattern_));
71 }
72
73
77 {
78 implicit = la.osp_method->implicit();
79
80 lae0->preAssembly();
81 lae1->preAssembly();
82 }
83
84 template<typename GFSU, typename GFSV>
85 void postAssembly(const GFSU& gfsu, const GFSV& gfsv)
86 {
87 lae0->postAssembly(gfsu,gfsv);
88 lae1->postAssembly(gfsu,gfsv);
89 }
91
92 private:
93
95 Pattern * const invalid_pattern;
96
98 Pattern * pattern;
99
100 }; // End of class OneStepLocalPatternAssemblerEngine
101
102 }
103}
104
105#endif // DUNE_PDELAB_GRIDOPERATOR_ONESTEP_PATTERNENGINE_HH
For backward compatibility – Do not use this!
Definition adaptivity.hh:28
Layout description for a sparse linear operator.
Definition assemblerutilities.hh:137
The local assembler engine for UDG sub triangulations which assembles the residual vector.
Definition enginebase.hh:16
const LocalAssembler & la
Definition enginebase.hh:459
void setLocalAssemblerEngineDT0(LocalAssemblerEngineDT0 &lae0_)
Definition enginebase.hh:119
LocalAssemblerEngineDT1 * lae1
Definition enginebase.hh:462
void setLocalAssemblerEngineDT1(LocalAssemblerEngineDT1 &lae1_)
Definition enginebase.hh:124
LocalAssemblerEngineDT0 * lae0
Definition enginebase.hh:461
bool implicit
Definition enginebase.hh:464
The local assembler engine for OneStep sub triangulations which creates the matrix pattern.
Definition onestep/patternengine.hh:23
void postAssembly(const GFSU &gfsu, const GFSV &gfsv)
Definition onestep/patternengine.hh:85
LocalAssembler::Traits::MatrixPattern Pattern
The type of the matrix pattern container.
Definition onestep/patternengine.hh:45
void preAssembly()
Definition onestep/patternengine.hh:76
void setPattern(Pattern &pattern_)
Definition onestep/patternengine.hh:62
OSLA::LocalAssemblerDT1 LocalAssemblerDT1
Definition onestep/patternengine.hh:42
OSLA LocalAssembler
The type of the wrapping local assembler.
Definition onestep/patternengine.hh:39
OneStepLocalPatternAssemblerEngine(const LocalAssembler &la_)
Constructor.
Definition onestep/patternengine.hh:54
OSLA::LocalAssemblerDT0 LocalAssemblerDT0
Definition onestep/patternengine.hh:41
Dune::PDELab::LocalSparsityPattern LocalPattern
Definition onestep/patternengine.hh:46