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(static_cast<Pattern*>(0)), pattern(invalid_pattern)
57  {}
58 
61  void setPattern(Pattern & pattern_){
62 
63  // Set pointer to global pattern
64  pattern = &pattern_;
65 
66  // Initialize the engines of the two wrapped local assemblers
67  setLocalAssemblerEngineDT0(la.la0.localPatternAssemblerEngine(pattern_));
68  setLocalAssemblerEngineDT1(la.la1.localPatternAssemblerEngine(pattern_));
69  }
70 
71 
74  void preAssembly(){
75  implicit = la.osp_method->implicit();
76 
77  lae0->preAssembly();
78  lae1->preAssembly();
79  }
80 
81  template<typename GFSU, typename GFSV>
82  void postAssembly(const GFSU& gfsu, const GFSV& gfsv){
83  lae0->postAssembly(gfsu,gfsv);
84  lae1->postAssembly(gfsu,gfsv);
85  }
87 
88  private:
89 
91  Pattern * const invalid_pattern;
92 
94  Pattern * pattern;
95 
96  }; // End of class OneStepLocalPatternAssemblerEngine
97 
98  }
99 }
100 
101 #endif // DUNE_PDELAB_GRIDOPERATOR_ONESTEP_PATTERNENGINE_HH
void preAssembly()
Definition: onestep/patternengine.hh:74
LocalAssembler::Traits::MatrixPattern Pattern
The type of the matrix pattern container.
Definition: onestep/patternengine.hh:45
For backward compatibility – Do not use this!
Definition: adaptivity.hh:27
The local assembler engine for UDG sub triangulations which assembles the residual vector...
Definition: enginebase.hh:15
Layout description for a sparse linear operator.
Definition: assemblerutilities.hh:129
void setLocalAssemblerEngineDT1(LocalAssemblerEngineDT1 &lae1_)
Definition: enginebase.hh:121
void setPattern(Pattern &pattern_)
Definition: onestep/patternengine.hh:61
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::LocalAssemblerDT1 LocalAssemblerDT1
Definition: onestep/patternengine.hh:42
bool implicit
Definition: enginebase.hh:442
void setLocalAssemblerEngineDT0(LocalAssemblerEngineDT0 &lae0_)
Definition: enginebase.hh:116
const LocalAssembler & la
Definition: enginebase.hh:437
LocalAssemblerEngineDT1 * lae1
Definition: enginebase.hh:440
LocalAssemblerEngineDT0 * lae0
Definition: enginebase.hh:439
OSLA::LocalAssemblerDT0 LocalAssemblerDT0
Definition: onestep/patternengine.hh:41
The local assembler engine for OneStep sub triangulations which creates the matrix pattern...
Definition: onestep/patternengine.hh:18
void postAssembly(const GFSU &gfsu, const GFSV &gfsv)
Definition: onestep/patternengine.hh:82
Dune::PDELab::LocalSparsityPattern LocalPattern
Definition: onestep/patternengine.hh:46