dune-pdelab  2.5-dev
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 
7 namespace Dune{
8  namespace PDELab{
9 
17  template<typename OSLA>
19  : public OneStepLocalAssemblerEngineBase<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 
54  OneStepLocalPatternAssemblerEngine(const LocalAssembler & la_)
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 
76  void preAssembly()
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
void setLocalAssemblerEngineDT1(LocalAssemblerEngineDT1 &lae1_)
Definition: enginebase.hh:119
const LocalAssembler & la
Definition: enginebase.hh:454
The local assembler engine for UDG sub triangulations which assembles the residual vector...
Definition: enginebase.hh:15
OSLA::LocalAssemblerDT0 LocalAssemblerDT0
Definition: onestep/patternengine.hh:41
void postAssembly(const GFSU &gfsu, const GFSV &gfsv)
Definition: onestep/patternengine.hh:85
void preAssembly()
Definition: onestep/patternengine.hh:76
void setLocalAssemblerEngineDT0(LocalAssemblerEngineDT0 &lae0_)
Definition: enginebase.hh:114
void setPattern(Pattern &pattern_)
Definition: onestep/patternengine.hh:62
bool implicit
Definition: enginebase.hh:459
For backward compatibility – Do not use this!
Definition: adaptivity.hh:27
LocalAssembler::Traits::MatrixPattern Pattern
The type of the matrix pattern container.
Definition: onestep/patternengine.hh:45
LocalAssemblerEngineDT0 * lae0
Definition: enginebase.hh:456
LocalAssemblerEngineDT1 * lae1
Definition: enginebase.hh:457
OSLA::LocalAssemblerDT1 LocalAssemblerDT1
Definition: onestep/patternengine.hh:42
Dune::PDELab::LocalSparsityPattern LocalPattern
Definition: onestep/patternengine.hh:46
Layout description for a sparse linear operator.
Definition: assemblerutilities.hh:129
OneStepLocalPatternAssemblerEngine(const LocalAssembler &la_)
Constructor.
Definition: onestep/patternengine.hh:54
The local assembler engine for OneStep sub triangulations which creates the matrix pattern...
Definition: onestep/patternengine.hh:18
OSLA LocalAssembler
The type of the wrapping local assembler.
Definition: onestep/patternengine.hh:39