dune-pdelab  2.5-dev
enginebase.hh
Go to the documentation of this file.
1 #ifndef DUNE_PDELAB_GRIDOPERATOR_ONESTEP_ENGINEBASE_HH
2 #define DUNE_PDELAB_GRIDOPERATOR_ONESTEP_ENGINEBASE_HH
3 
4 namespace Dune{
5  namespace PDELab{
6 
14  template<typename OSLA, typename LAE0, typename LAE1>
16  {
17  public:
19  typedef OSLA OneStepLocalAssembler;
20 
21  typedef typename LAE0::Traits Traits;
22 
23  template<typename TrialConstraintsContainer, typename TestConstraintsContainer>
24  bool needsConstraintsCaching(const TrialConstraintsContainer& cu, const TestConstraintsContainer& cv) const
25  {
26  return
27  lae0->needsConstraintsCaching(cu,cv) ||
28  lae1->needsConstraintsCaching(cu,cv);
29  }
30 
31 
34  typedef typename OSLA::LocalAssemblerDT0 LocalAssemblerDT0;
35  typedef typename OSLA::LocalAssemblerDT1 LocalAssemblerDT1;
36 
40 
42  typedef typename OSLA::Real Real;
43 
44  typedef OSLA LocalAssembler;
45 
52  OneStepLocalAssemblerEngineBase(const LocalAssembler & local_assembler_)
53  : invalid_lae0(static_cast<LocalAssemblerEngineDT0*>(0)),
54  invalid_lae1(static_cast<LocalAssemblerEngineDT1*>(0)),
55  la(local_assembler_),
56  lae0(invalid_lae0), lae1(invalid_lae1),
57  implicit(true)
58  {}
59 
62  bool requireSkeleton() const
63  { return implicit && (lae0->requireSkeleton() || lae1->requireSkeleton()); }
65  { return lae0->requireSkeletonTwoSided() || lae1->requireSkeletonTwoSided(); }
66  bool requireUVVolume() const
67  { return lae0->requireUVVolume() || lae1->requireUVVolume(); }
68  bool requireVVolume() const
69  { return lae0->requireVVolume() || lae1->requireVVolume(); }
70  bool requireUVSkeleton() const
71  { return lae0->requireUVSkeleton() || lae1->requireUVSkeleton(); }
72  bool requireVSkeleton() const
73  { return lae0->requireVSkeleton() || lae1->requireVSkeleton(); }
74  bool requireUVBoundary() const
75  { return lae0->requireUVBoundary() || lae1->requireUVBoundary(); }
76  bool requireVBoundary() const
77  { return lae0->requireVBoundary() || lae1->requireVBoundary(); }
78  bool requireUVProcessor() const
79  { return lae0->requireUVProcessor() || lae1->requireUVProcessor(); }
80  bool requireVProcessor() const
81  { return lae0->requireVProcessor() || lae1->requireVProcessor(); }
83  { return lae0->requireUVEnrichedCoupling() || lae1->requireUVEnrichedCoupling(); }
85  { return lae0->requireVEnrichedCoupling() || lae1->requireVEnrichedCoupling(); }
87  { return lae0->requireUVVolumePostSkeleton() || lae1->requireUVVolumePostSkeleton();}
89  { return lae0->requireVVolumePostSkeleton() || lae1->requireVVolumePostSkeleton(); }
91 
92 
94  const LocalAssembler & localAssembler(){ return la; }
95 
96  LocalAssemblerEngineDT0& localAssemblerEngineDT0()
97  {
98  return *lae0;
99  }
100 
101  const LocalAssemblerEngineDT0& localAssemblerEngineDT0() const
102  {
103  return *lae0;
104  }
105 
106  LocalAssemblerEngineDT1& localAssemblerEngineDT1()
107  {
108  return *lae1;
109  }
110 
111  const LocalAssemblerEngineDT1& localAssemblerEngineDT1() const
112  {
113  return *lae1;
114  }
115 
116  void setLocalAssemblerEngineDT0(LocalAssemblerEngineDT0& lae0_)
117  {
118  lae0 = &lae0_;
119  }
120 
121  void setLocalAssemblerEngineDT1(LocalAssemblerEngineDT1& lae1_)
122  {
123  lae1 = &lae1_;
124  }
125 
127  {
128  return localAssemblerEngineDT0().trialConstraints();
129  }
130 
132  {
133  return localAssemblerEngineDT0().testConstraints();
134  }
135 
139  template<typename EG, typename LFSU, typename LFSV>
140  void onBindLFSUV(const EG & eg, const LFSU & lfsu, const LFSV & lfsv){
141  lae0->onBindLFSUV(eg,lfsu,lfsv);
142  lae1->onBindLFSUV(eg,lfsu,lfsv);
143  }
144 
145  template<typename EG, typename LFSV>
146  void onBindLFSV(const EG & eg, const LFSV & lfsv){
147  lae0->onBindLFSV(eg,lfsv);
148  lae1->onBindLFSV(eg,lfsv);
149  }
150 
151  template<typename IG, typename LFSU, typename LFSV>
152  void onBindLFSUVInside(const IG & ig, const LFSU & lfsu, const LFSV & lfsv){
153  lae0->onBindLFSUVInside(ig,lfsu,lfsv);
154  lae1->onBindLFSUVInside(ig,lfsu,lfsv);
155  }
156 
157  template<typename IG,
158  typename LFSU_S, typename LFSV_S,
159  typename LFSU_N, typename LFSV_N>
160  void onBindLFSUVOutside(const IG & ig,
161  const LFSU_S & lfsu_s, const LFSV_S & lfsv_s,
162  const LFSU_N & lfsu_n, const LFSV_N & lfsv_n){
163  lae0->onBindLFSUVOutside(ig,lfsu_s,lfsv_s,lfsu_n,lfsv_n);
164  lae1->onBindLFSUVOutside(ig,lfsu_s,lfsv_s,lfsu_n,lfsv_n);
165  }
166 
167  template<typename IG, typename LFSV>
168  void onBindLFSVInside(const IG & ig, const LFSV & lfsv){
169  lae0->onBindLFSVInside(ig,lfsv);
170  lae1->onBindLFSVInside(ig,lfsv);
171  }
172 
173  template<typename IG,
174  typename LFSV_S,
175  typename LFSV_N>
176  void onBindLFSVOutside(const IG & ig,
177  const LFSV_S & lfsv_s,
178  const LFSV_N & lfsv_n){
179  lae0->onBindLFSVOutside(ig,lfsv_s,lfsv_n);
180  lae1->onBindLFSVOutside(ig,lfsv_s,lfsv_n);
181  }
182 
183  template<typename IG,
184  typename LFSU_S, typename LFSV_S,
185  typename LFSU_N, typename LFSV_N,
186  typename LFSU_C, typename LFSV_C>
187  void onBindLFSUVCoupling(const IG & ig,
188  const LFSU_S & lfsu_s, const LFSV_S & lfsv_s,
189  const LFSU_N & lfsu_n, const LFSV_N & lfsv_n,
190  const LFSU_C & lfsu_c, const LFSV_C & lfsv_c){
191  lae0->onBindLFSUVCoupling(ig,
192  lfsu_s,lfsv_s,
193  lfsu_n,lfsv_n,
194  lfsu_c,lfsv_c);
195  lae1->onBindLFSUVCoupling(ig,
196  lfsu_s,lfsv_s,
197  lfsu_n,lfsv_n,
198  lfsu_c,lfsv_c);
199  }
200 
201  template<typename IG,
202  typename LFSV_S,
203  typename LFSV_N,
204  typename LFSV_C>
205  void onBindLFSVCoupling(const IG & ig,
206  const LFSV_S & lfsv_s,
207  const LFSV_N & lfsv_n,
208  const LFSV_C & lfsv_c){
209  lae0->onBindLFSVCoupling(ig,lfsv_s,lfsv_n,lfsv_c);
210  lae1->onBindLFSVCoupling(ig,lfsv_s,lfsv_n,lfsv_c);
211  }
212 
214 
218  template<typename EG, typename LFSU, typename LFSV>
219  void onUnbindLFSUV(const EG & eg, const LFSU & lfsu, const LFSV & lfsv){
220  lae0->onUnbindLFSUV(eg,lfsu, lfsv);
221  lae1->onUnbindLFSUV(eg,lfsu, lfsv);
222  }
223 
224  template<typename EG, typename LFSV>
225  void onUnbindLFSV(const EG & eg, const LFSV & lfsv){
226  lae0->onUnbindLFSV(eg,lfsv);
227  lae1->onUnbindLFSV(eg,lfsv);
228  }
229 
230  template<typename IG, typename LFSU, typename LFSV>
231  void onUnbindLFSUVInside(const IG & ig, const LFSU & lfsu, const LFSV & lfsv){
232  lae0->onUnbindLFSUVInside(ig,lfsu, lfsv);
233  lae1->onUnbindLFSUVInside(ig,lfsu, lfsv);
234  }
235 
236  template<typename IG,
237  typename LFSU_S, typename LFSV_S,
238  typename LFSU_N, typename LFSV_N>
239  void onUnbindLFSUVOutside(const IG & ig,
240  const LFSU_S & lfsu_s, const LFSV_S & lfsv_s,
241  const LFSU_N & lfsu_n, const LFSV_N & lfsv_n){
242  lae0->onUnbindLFSUVOutside(ig,lfsu_s,lfsv_s,lfsu_n,lfsv_n);
243  lae1->onUnbindLFSUVOutside(ig,lfsu_s,lfsv_s,lfsu_n,lfsv_n);
244  }
245 
246  template<typename IG, typename LFSV>
247  void onUnbindLFSVInside(const IG & ig, const LFSV & lfsv){
248  lae0->onUnbindLFSVInside(ig,lfsv);
249  lae1->onUnbindLFSVInside(ig,lfsv);
250  }
251 
252  template<typename IG,
253  typename LFSV_S,
254  typename LFSV_N>
255  void onUnbindLFSVOutside(const IG & ig,
256  const LFSV_S & lfsv_s,
257  const LFSV_N & lfsv_n){
258  lae0->onUnbindLFSVOutside(ig,lfsv_s,lfsv_n);
259  lae1->onUnbindLFSVOutside(ig,lfsv_s,lfsv_n);
260  }
261 
262  template<typename IG,
263  typename LFSU_S, typename LFSV_S,
264  typename LFSU_N, typename LFSV_N,
265  typename LFSU_C, typename LFSV_C>
266  void onUnbindLFSUVCoupling(const IG & ig,
267  const LFSU_S & lfsu_s, const LFSV_S & lfsv_s,
268  const LFSU_N & lfsu_n, const LFSV_N & lfsv_n,
269  const LFSU_C & lfsu_c, const LFSV_C & lfsv_c){
270  lae0->onUnbindLFSUVCoupling(ig,
271  lfsu_s,lfsv_s,
272  lfsu_n,lfsv_n,
273  lfsu_c,lfsv_c);
274  lae1->onUnbindLFSUVCoupling(ig,
275  lfsu_s,lfsv_s,
276  lfsu_n,lfsv_n,
277  lfsu_c,lfsv_c);
278  }
279 
280  template<typename IG,
281  typename LFSV_S,
282  typename LFSV_N,
283  typename LFSV_C>
284  void onUnbindLFSVCoupling(const IG & ig,
285  const LFSV_S & lfsv_s,
286  const LFSV_N & lfsv_n,
287  const LFSV_C & lfsv_c){
288  lae0->onUnbindLFSVCoupling(ig,lfsv_s,lfsv_n,lfsv_c);
289  lae1->onUnbindLFSVCoupling(ig,lfsv_s,lfsv_n,lfsv_c);
290  }
291 
293 
297  template<typename LFSU>
298  void loadCoefficientsLFSUInside(const LFSU & lfsu_s){
299  lae0->loadCoefficientsLFSUInside(lfsu_s);
300  lae1->loadCoefficientsLFSUInside(lfsu_s);
301  }
302  template<typename LFSU>
303  void loadCoefficientsLFSUOutside(const LFSU & lfsu_n){
304  lae0->loadCoefficientsLFSUOutside(lfsu_n);
305  lae1->loadCoefficientsLFSUOutside(lfsu_n);
306  }
307  template<typename LFSU>
308  void loadCoefficientsLFSUCoupling(const LFSU & lfsu_c){
309  lae0->loadCoefficientsLFSUCoupling(lfsu_c);
310  lae1->loadCoefficientsLFSUCoupling(lfsu_c);
311  }
313 
316 
317  template<typename EG>
318  bool assembleCell(const EG & eg)
319  {
320  bool rv = true;
321  rv &= lae0->assembleCell(eg);
322  rv &= lae1->assembleCell(eg);
323  return rv;
324  }
325 
326  template<typename EG, typename LFSU, typename LFSV>
327  void assembleUVVolume(const EG & eg, const LFSU & lfsu, const LFSV & lfsv)
328  {
329  if(implicit)
330  lae0->assembleUVVolume(eg,lfsu,lfsv);
331  lae1->assembleUVVolume(eg,lfsu,lfsv);
332  }
333 
334  template<typename EG, typename LFSV>
335  void assembleVVolume(const EG & eg, const LFSV & lfsv)
336  {
337  if(implicit)
338  lae0->assembleVVolume(eg,lfsv);
339  lae1->assembleVVolume(eg,lfsv);
340  }
341 
342  template<typename IG, typename LFSU_S, typename LFSV_S, typename LFSU_N, typename LFSV_N>
343  void assembleUVSkeleton(const IG & ig, const LFSU_S & lfsu_s, const LFSV_S & lfsv_s,
344  const LFSU_N & lfsu_n, const LFSV_N & lfsv_n)
345  {
346  if(implicit)
347  lae0->assembleUVSkeleton(ig,lfsu_s,lfsv_s,lfsu_n,lfsv_n);
348  lae1->assembleUVSkeleton(ig,lfsu_s,lfsv_s,lfsu_n,lfsv_n);
349  }
350 
351  template<typename IG, typename LFSV_S, typename LFSV_N>
352  void assembleVSkeleton(const IG & ig, const LFSV_S & lfsv_s, const LFSV_N & lfsv_n)
353  {
354  if(implicit)
355  lae0->assembleVSkeleton(ig,lfsv_s,lfsv_n);
356  lae1->assembleVSkeleton(ig,lfsv_s,lfsv_n);
357  }
358 
359  template<typename IG, typename LFSU_S, typename LFSV_S>
360  void assembleUVBoundary(const IG & ig, const LFSU_S & lfsu_s, const LFSV_S & lfsv_s)
361  {
362  if(implicit)
363  lae0->assembleUVBoundary(ig,lfsu_s,lfsv_s);
364  lae1->assembleUVBoundary(ig,lfsu_s,lfsv_s);
365  }
366 
367  template<typename IG, typename LFSV_S>
368  void assembleVBoundary(const IG & ig, const LFSV_S & lfsv_s)
369  {
370  if(implicit)
371  lae0->assembleVBoundary(ig,lfsv_s);
372  lae1->assembleVBoundary(ig,lfsv_s);
373  }
374 
375  template<typename IG, typename LFSU_S, typename LFSV_S>
376  void assembleUVProcessor(const IG & ig, const LFSU_S & lfsu_s, const LFSV_S & lfsv_s)
377  {
378  if(implicit)
379  lae0->assembleUVProcessor(ig,lfsu_s,lfsv_s);
380  lae1->assembleUVProcessor(ig,lfsu_s,lfsv_s);
381  }
382 
383  template<typename IG, typename LFSV_S>
384  void assembleVProcessor(const IG & ig, const LFSV_S & lfsv_s)
385  {
386  if(implicit)
387  lae0->assembleVProcessor(ig,lfsv_s);
388  lae1->assembleVProcessor(ig,lfsv_s);
389  }
390 
391  template<typename IG, typename LFSU_S, typename LFSV_S, typename LFSU_N, typename LFSV_N,
392  typename LFSU_C, typename LFSV_C>
394  const LFSU_S & lfsu_s, const LFSV_S & lfsv_s,
395  const LFSU_N & lfsu_n, const LFSV_N & lfsv_n,
396  const LFSU_C & lfsu_c, const LFSV_C & lfsv_c)
397  {
398  if(implicit)
399  lae0->assembleUVEnrichedCoupling(ig,lfsu_s,lfsv_s,lfsu_n,lfsv_n,lfsu_c,lfsv_c);
400  lae1->assembleUVEnrichedCoupling(ig,lfsu_s,lfsv_s,lfsu_n,lfsv_n,lfsu_c,lfsv_c);
401  }
402 
403  template<typename IG, typename LFSV_S, typename LFSV_N, typename LFSV_C>
404  void assembleVEnrichedCoupling(const IG & ig,
405  const LFSV_S & lfsv_s,
406  const LFSV_N & lfsv_n,
407  const LFSV_C & lfsv_c)
408  {
409  if(implicit)
410  lae0->assembleVEnrichedCoupling(ig,lfsv_s,lfsv_n,lfsv_c);
411  }
412 
413  template<typename EG, typename LFSU, typename LFSV>
414  void assembleUVVolumePostSkeleton(const EG & eg, const LFSU & lfsu, const LFSV & lfsv)
415  {
416  if(implicit)
417  lae0->assembleUVVolumePostSkeleton(eg,lfsu,lfsv);
418  }
419 
420  template<typename EG, typename LFSV>
421  void assembleVVolumePostSkeleton(const EG & eg, const LFSV & lfsv)
422  {
423  if(implicit)
424  lae0->assembleVVolumePostSkeleton(eg,lfsv);
425  }
427 
428  private:
429 
430  LocalAssemblerEngineDT0 * const invalid_lae0;
431  LocalAssemblerEngineDT1 * const invalid_lae1;
432 
433  protected:
434 
437  const LocalAssembler & la;
438 
439  LocalAssemblerEngineDT0 * lae0;
440  LocalAssemblerEngineDT1 * lae1;
441 
442  bool implicit;
443 
444  }; // End of class OneStepLocalAssemblerEngineBase
445 
446  }
447 }
448 
449 #endif // DUNE_PDELAB_GRIDOPERATOR_ONESTEP_ENGINEBASE_HH
const IG & ig
Definition: constraints.hh:148
void onUnbindLFSUVOutside(const IG &ig, const LFSU_S &lfsu_s, const LFSV_S &lfsv_s, const LFSU_N &lfsu_n, const LFSV_N &lfsv_n)
Definition: enginebase.hh:239
bool assembleCell(const EG &eg)
Definition: enginebase.hh:318
bool requireUVBoundary() const
Definition: enginebase.hh:74
const OneStepLocalAssembler::Traits::TestGridFunctionSpaceConstraints & testConstraints() const
Definition: enginebase.hh:131
LAE0 LocalAssemblerEngineDT0
Definition: enginebase.hh:37
bool requireVVolume() const
Definition: enginebase.hh:68
void onBindLFSUVOutside(const IG &ig, const LFSU_S &lfsu_s, const LFSV_S &lfsv_s, const LFSU_N &lfsu_n, const LFSV_N &lfsv_n)
Definition: enginebase.hh:160
LocalAssemblerEngineDT0 & localAssemblerEngineDT0()
Definition: enginebase.hh:96
const LocalAssembler & la
Definition: enginebase.hh:437
bool requireVSkeleton() const
Definition: enginebase.hh:72
bool needsConstraintsCaching(const TrialConstraintsContainer &cu, const TestConstraintsContainer &cv) const
Definition: enginebase.hh:24
LocalAssemblerEngineDT1 * lae1
Definition: enginebase.hh:440
void assembleUVSkeleton(const IG &ig, const LFSU_S &lfsu_s, const LFSV_S &lfsv_s, const LFSU_N &lfsu_n, const LFSV_N &lfsv_n)
Definition: enginebase.hh:343
const LocalAssembler & localAssembler()
Public access to the wrapping local assembler.
Definition: enginebase.hh:94
void onBindLFSUVInside(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: enginebase.hh:152
void assembleVVolume(const EG &eg, const LFSV &lfsv)
Definition: enginebase.hh:335
void loadCoefficientsLFSUInside(const LFSU &lfsu_s)
Definition: enginebase.hh:298
bool requireVProcessor() const
Definition: enginebase.hh:80
void loadCoefficientsLFSUOutside(const LFSU &lfsu_n)
Definition: enginebase.hh:303
LAE1 LocalAssemblerEngineDT1
Definition: enginebase.hh:38
void onUnbindLFSV(const EG &eg, const LFSV &lfsv)
Definition: enginebase.hh:225
The local assembler engine for UDG sub triangulations which assembles the residual vector...
Definition: enginebase.hh:15
bool requireUVVolume() const
Definition: enginebase.hh:66
void assembleUVBoundary(const IG &ig, const LFSU_S &lfsu_s, const LFSV_S &lfsv_s)
Definition: enginebase.hh:360
void onBindLFSVInside(const IG &ig, const LFSV &lfsv)
Definition: enginebase.hh:168
void onBindLFSVOutside(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: enginebase.hh:176
bool requireSkeleton() const
Definition: enginebase.hh:62
void onUnbindLFSUVInside(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: enginebase.hh:231
bool requireVBoundary() const
Definition: enginebase.hh:76
void setLocalAssemblerEngineDT1(LocalAssemblerEngineDT1 &lae1_)
Definition: enginebase.hh:121
bool requireVVolumePostSkeleton() const
Definition: enginebase.hh:88
const LocalAssemblerEngineDT0 & localAssemblerEngineDT0() const
Definition: enginebase.hh:101
GO::Traits::TrialGridFunctionSpaceConstraints TrialGridFunctionSpaceConstraints
The type of the trial grid function space constraints.
Definition: assemblerutilities.hh:33
void assembleVVolumePostSkeleton(const EG &eg, const LFSV &lfsv)
Definition: enginebase.hh:421
bool implicit
Definition: enginebase.hh:442
bool requireUVProcessor() const
Definition: enginebase.hh:78
LocalAssemblerEngineDT1 & localAssemblerEngineDT1()
Definition: enginebase.hh:106
GO::Traits::TestGridFunctionSpaceConstraints TestGridFunctionSpaceConstraints
The type of the test grid function space constraints.
Definition: assemblerutilities.hh:36
bool requireUVVolumePostSkeleton() const
Definition: enginebase.hh:86
bool requireUVEnrichedCoupling() const
Definition: enginebase.hh:82
void assembleUVProcessor(const IG &ig, const LFSU_S &lfsu_s, const LFSV_S &lfsv_s)
Definition: enginebase.hh:376
bool requireSkeletonTwoSided() const
Definition: enginebase.hh:64
void onBindLFSV(const EG &eg, const LFSV &lfsv)
Definition: enginebase.hh:146
OneStepLocalAssemblerEngineBase(const LocalAssembler &local_assembler_)
Constructor.
Definition: enginebase.hh:52
For backward compatibility – Do not use this!
Definition: adaptivity.hh:27
void setLocalAssemblerEngineDT0(LocalAssemblerEngineDT0 &lae0_)
Definition: enginebase.hh:116
void assembleUVVolumePostSkeleton(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: enginebase.hh:414
void onBindLFSVCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: enginebase.hh:205
void assembleVProcessor(const IG &ig, const LFSV_S &lfsv_s)
Definition: enginebase.hh:384
void assembleVSkeleton(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: enginebase.hh:352
void assembleVBoundary(const IG &ig, const LFSV_S &lfsv_s)
Definition: enginebase.hh:368
bool requireVEnrichedCoupling() const
Definition: enginebase.hh:84
void assembleUVEnrichedCoupling(const IG &ig, const LFSU_S &lfsu_s, const LFSV_S &lfsv_s, const LFSU_N &lfsu_n, const LFSV_N &lfsv_n, const LFSU_C &lfsu_c, const LFSV_C &lfsv_c)
Definition: enginebase.hh:393
LAE0::Traits Traits
Definition: enginebase.hh:21
void loadCoefficientsLFSUCoupling(const LFSU &lfsu_c)
Definition: enginebase.hh:308
OSLA::LocalAssemblerDT1 LocalAssemblerDT1
Definition: enginebase.hh:35
const OneStepLocalAssembler::Traits::TrialGridFunctionSpaceConstraints & trialConstraints() const
Definition: enginebase.hh:126
void onBindLFSUVCoupling(const IG &ig, const LFSU_S &lfsu_s, const LFSV_S &lfsv_s, const LFSU_N &lfsu_n, const LFSV_N &lfsv_n, const LFSU_C &lfsu_c, const LFSV_C &lfsv_c)
Definition: enginebase.hh:187
OSLA::LocalAssemblerDT0 LocalAssemblerDT0
Definition: enginebase.hh:34
void onUnbindLFSUV(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: enginebase.hh:219
OSLA OneStepLocalAssembler
The type of the wrapping local assembler.
Definition: enginebase.hh:19
void onUnbindLFSVInside(const IG &ig, const LFSV &lfsv)
Definition: enginebase.hh:247
OSLA::Real Real
The type for real numbers.
Definition: enginebase.hh:42
OSLA LocalAssembler
Definition: enginebase.hh:44
void onBindLFSUV(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: enginebase.hh:140
void onUnbindLFSVCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: enginebase.hh:284
LocalAssemblerEngineDT0 * lae0
Definition: enginebase.hh:439
void onUnbindLFSUVCoupling(const IG &ig, const LFSU_S &lfsu_s, const LFSV_S &lfsv_s, const LFSU_N &lfsu_n, const LFSV_N &lfsv_n, const LFSU_C &lfsu_c, const LFSV_C &lfsv_c)
Definition: enginebase.hh:266
void assembleUVVolume(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: enginebase.hh:327
void assembleVEnrichedCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: enginebase.hh:404
void onUnbindLFSVOutside(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: enginebase.hh:255
const LocalAssemblerEngineDT1 & localAssemblerEngineDT1() const
Definition: enginebase.hh:111
bool requireUVSkeleton() const
Definition: enginebase.hh:70