dune-pdelab  2.5-dev
localassemblerenginebase.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 
4 #ifndef DUNE_PDELAB_GRIDOPERATOR_COMMON_LOCALASSEMBLERENGINEBASE_HH
5 #define DUNE_PDELAB_GRIDOPERATOR_COMMON_LOCALASSEMBLERENGINEBASE_HH
6 
7 namespace Dune {
8  namespace PDELab {
9 
14 
22  {
23 
24  public:
25 
26  struct Traits
27  {};
28 
31 
32  bool requireSkeleton() const
33  {
34  return false;
35  }
36 
38  {
39  return false;
40  }
41 
42  bool requireUVVolume() const
43  {
44  return false;
45  }
46 
47  bool requireVVolume() const
48  {
49  return false;
50  }
51 
52  bool requireUVSkeleton() const
53  {
54  return false;
55  }
56 
57  bool requireVSkeleton() const
58  {
59  return false;
60  }
61 
62  bool requireUVBoundary() const
63  {
64  return false;
65  }
66 
67  bool requireVBoundary() const
68  {
69  return false;
70  }
71 
72  bool requireUVProcessor() const
73  {
74  return false;
75  }
76 
77  bool requireVProcessor() const
78  {
79  return false;
80  }
81 
83  {
84  return false;
85  }
86 
88  {
89  return false;
90  }
91 
93  {
94  return false;
95  }
96 
98  {
99  return false;
100  }
101 
102  auto partition() const
103  {
104  return Partitions::interiorBorder;
105  }
106 
108 
111 
112  template<typename EG,
113  typename LFSU, typename LFSV>
114  void onBindLFSUV(const EG& eg,
115  const LFSU& lfsu, const LFSV& lfsv)
116  {
117  }
118 
119  template<typename EG,
120  typename LFSV>
121  void onBindLFSV(const EG& eg,
122  const LFSV& lfsv)
123  {
124  }
125 
126  template<typename EG,
127  typename LFSU, typename LFSV>
128  void onUnbindLFSUV(const EG& eg,
129  const LFSU& lfsu, const LFSV& lfsv)
130  {
131  }
132 
133  template<typename EG,
134  typename LFSV_S>
135  void onUnbindLFSV(const EG& eg,
136  const LFSV_S& lfsv_s)
137  {
138  }
139 
140 
141  template<typename IG,
142  typename LFSU, typename LFSV>
143  void onBindLFSUVInside(const IG& ig,
144  const LFSU& lfsu, const LFSV& lfsv)
145  {
146  }
147 
148  template<typename IG,
149  typename LFSV>
150  void onBindLFSVInside(const IG& ig,
151  const LFSV& lfsv)
152  {
153  }
154 
155  template<typename IG,
156  typename LFSU, typename LFSV>
157  void onUnbindLFSUVInside(const IG& ig,
158  const LFSU& lfsu, const LFSV& lfsv)
159  {
160  }
161 
162  template<typename IG,
163  typename LFSV_S>
164  void onUnbindLFSVInside(const IG& ig,
165  const LFSV_S& lfsv_s)
166  {
167  }
168 
169 
170  template<typename IG,
171  typename LFSU_S, typename LFSV_S,
172  typename LFSU_N, typename LFSV_N>
173  void onBindLFSUVOutside(const IG& ig,
174  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
175  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n)
176  {
177  }
178 
179  template<typename IG,
180  typename LFSV_S,
181  typename LFSV_N>
182  void onBindLFSVOutside(const IG& ig,
183  const LFSV_S& lfsv_s,
184  const LFSV_N& lfsv_n)
185  {
186  }
187 
188  template<typename IG,
189  typename LFSU_S, typename LFSV_S,
190  typename LFSU_N, typename LFSV_N>
191  void onUnbindLFSUVOutside(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  {
195  }
196 
197  template<typename IG,
198  typename LFSV_S,
199  typename LFSV_N>
200  void onUnbindLFSVOutside(const IG& ig,
201  const LFSV_S& lfsv_s,
202  const LFSV_N& lfsv_n)
203  {
204  }
205 
206 
207  template<typename IG,
208  typename LFSU_S, typename LFSV_S,
209  typename LFSU_N, typename LFSV_N,
210  typename LFSU_C, typename LFSV_C>
211  void onBindLFSUVCoupling(const IG& ig,
212  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
213  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n,
214  const LFSU_C& lfsu_c, const LFSV_C& lfsv_c)
215  {
216  }
217 
218  template<typename IG,
219  typename LFSV_S,
220  typename LFSV_N,
221  typename LFSV_C>
222  void onBindLFSVCoupling(const IG& ig,
223  const LFSV_S& lfsv_s,
224  const LFSV_N& lfsv_n,
225  const LFSV_C& lfsv_c)
226  {
227  }
228 
229  template<typename IG,
230  typename LFSU_S, typename LFSV_S,
231  typename LFSU_N, typename LFSV_N,
232  typename LFSU_C, typename LFSV_C>
233  void onUnbindLFSUVCoupling(const IG& ig,
234  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
235  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n,
236  const LFSU_C& lfsu_c, const LFSV_C& lfsv_c)
237  {
238  }
239 
240  template<typename IG,
241  typename LFSV_S,
242  typename LFSV_N,
243  typename LFSV_C>
244  void onUnbindLFSVCoupling(const IG& ig,
245  const LFSV_S& lfsv_s,
246  const LFSV_N& lfsv_n,
247  const LFSV_C& lfsv_c)
248  {
249  }
250 
251  template<typename LFSU>
252  void loadCoefficientsLFSUInside(const LFSU& lfsu_s)
253  {
254  }
255 
256  template<typename LFSU_N>
257  void loadCoefficientsLFSUOutside(const LFSU_N& lfsu_n)
258  {
259  }
260 
261  template<typename LFSU_C>
262  void loadCoefficientsLFSUCoupling(const LFSU_C& lfsu_c)
263  {
264  }
265 
267 
270 
273  template<typename EG>
274  bool assembleCell(const EG & eg)
275  {
276  return false;
277  }
278 
279  template<typename EG, typename LFSU, typename LFSV>
280  void assembleUVVolume(const EG& eg, const LFSU& lfsu, const LFSV& lfsv)
281  {
282  }
283 
284  template<typename EG, typename LFSV>
285  void assembleVVolume(const EG& eg, const LFSV& lfsv)
286  {
287  }
288 
289 
290  template<typename IG, typename LFSU_S, typename LFSV_S, typename LFSU_N, typename LFSV_N>
291  void assembleUVSkeleton(const IG& ig,
292  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
293  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n)
294  {
295  }
296 
297  template<typename IG, typename LFSV_S, typename LFSV_N>
298  void assembleVSkeleton(const IG& ig,
299  const LFSV_S& lfsv_s,
300  const LFSV_N& lfsv_n)
301  {
302  }
303 
304 
305  template<typename IG, typename LFSU, typename LFSV>
306  void assembleUVBoundary(const IG& ig, const LFSU& lfsu, const LFSV& lfsv)
307  {
308  }
309 
310  template<typename IG, typename LFSV>
311  void assembleVBoundary(const IG& ig, const LFSV& lfsv)
312  {
313  }
314 
315 
316  template<typename IG, typename LFSU, typename LFSV>
317  void assembleUVProcessor(const IG& ig, const LFSU& lfsu, const LFSV& lfsv)
318  {
319  }
320 
321  template<typename IG, typename LFSV>
322  void assembleVProcessor(const IG& ig, const LFSV& lfsv)
323  {
324  }
325 
326 
327  template<typename IG,
328  typename LFSU_S, typename LFSV_S,
329  typename LFSU_N, typename LFSV_N,
330  typename LFSU_C, typename LFSV_C>
332  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
333  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n,
334  const LFSU_C& lfsu_c, const LFSV_C& lfsv_c)
335  {
336  }
337 
338  template<typename IG,
339  typename LFSV_S,
340  typename LFSV_N,
341  typename LFSV_C>
343  const LFSV_S& lfsv_s,
344  const LFSV_N& lfsv_n,
345  const LFSV_C& lfsv_c)
346  {
347  }
348 
349 
350  template<typename EG, typename LFSU, typename LFSV>
351  void assembleUVVolumePostSkeleton(const EG& eg, const LFSU& lfsu, const LFSV& lfsv)
352  {
353  }
354 
355  template<typename EG, typename LFSV>
356  void assembleVVolumePostSkeleton(const EG& eg, const LFSV& lfsv)
357  {
358  }
359 
361 
364 
365  void preAssembly()
366  {
367  }
368 
369  template<typename GFSU, typename GFSV>
370  void postAssembly(const GFSU& gfsu, const GFSV& gfsv)
371  {
372  }
373 
375 
376  };
377 
378 
380 
381  } // namespace PDELab
382 } //namespace Dune
383 
384 #endif // DUNE_PDELAB_GRIDOPERATOR_COMMON_LOCALASSEMBLERENGINEBASE_HH
void onUnbindLFSVInside(const IG &ig, const LFSV_S &lfsv_s)
Definition: localassemblerenginebase.hh:164
void assembleVEnrichedCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: localassemblerenginebase.hh:342
void onUnbindLFSUV(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:128
bool requireVVolumePostSkeleton() const
Definition: localassemblerenginebase.hh:97
bool requireUVBoundary() const
Definition: localassemblerenginebase.hh:62
void onBindLFSVInside(const IG &ig, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:150
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: localassemblerenginebase.hh:331
void assembleVVolume(const EG &eg, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:285
void preAssembly()
Definition: localassemblerenginebase.hh:365
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: localassemblerenginebase.hh:211
void assembleUVVolume(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:280
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: localassemblerenginebase.hh:191
void onBindLFSV(const EG &eg, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:121
bool requireSkeleton() const
Definition: localassemblerenginebase.hh:32
void assembleUVProcessor(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:317
Base class for LocalAssemblerEngine implementations to avoid boilerplate code.
Definition: localassemblerenginebase.hh:21
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: localassemblerenginebase.hh:233
bool requireSkeletonTwoSided() const
Definition: localassemblerenginebase.hh:37
void onUnbindLFSUVInside(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:157
void assembleUVVolumePostSkeleton(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:351
void assembleVSkeleton(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: localassemblerenginebase.hh:298
void assembleVVolumePostSkeleton(const EG &eg, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:356
bool requireUVSkeleton() const
Definition: localassemblerenginebase.hh:52
void assembleVBoundary(const IG &ig, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:311
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
void onUnbindLFSV(const EG &eg, const LFSV_S &lfsv_s)
Definition: localassemblerenginebase.hh:135
bool requireVVolume() const
Definition: localassemblerenginebase.hh:47
void loadCoefficientsLFSUCoupling(const LFSU_C &lfsu_c)
Definition: localassemblerenginebase.hh:262
void onUnbindLFSVOutside(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: localassemblerenginebase.hh:200
bool requireUVVolume() const
Definition: localassemblerenginebase.hh:42
Definition: localassemblerenginebase.hh:26
const IG & ig
Definition: constraints.hh:148
bool requireUVVolumePostSkeleton() const
Definition: localassemblerenginebase.hh:92
void loadCoefficientsLFSUInside(const LFSU &lfsu_s)
Definition: localassemblerenginebase.hh:252
void onBindLFSUV(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:114
bool requireVBoundary() const
Definition: localassemblerenginebase.hh:67
bool requireVSkeleton() const
Definition: localassemblerenginebase.hh:57
void onUnbindLFSVCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: localassemblerenginebase.hh:244
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: localassemblerenginebase.hh:173
bool assembleCell(const EG &eg)
Definition: localassemblerenginebase.hh:274
auto partition() const
Definition: localassemblerenginebase.hh:102
bool requireVProcessor() const
Definition: localassemblerenginebase.hh:77
void assembleUVBoundary(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:306
void loadCoefficientsLFSUOutside(const LFSU_N &lfsu_n)
Definition: localassemblerenginebase.hh:257
bool requireUVEnrichedCoupling() const
Definition: localassemblerenginebase.hh:82
void onBindLFSUVInside(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:143
void onBindLFSVCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: localassemblerenginebase.hh:222
void postAssembly(const GFSU &gfsu, const GFSV &gfsv)
Definition: localassemblerenginebase.hh:370
void assembleVProcessor(const IG &ig, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:322
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: localassemblerenginebase.hh:291
bool requireVEnrichedCoupling() const
Definition: localassemblerenginebase.hh:87
void onBindLFSVOutside(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: localassemblerenginebase.hh:182
bool requireUVProcessor() const
Definition: localassemblerenginebase.hh:72