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