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 
103 
106 
107  template<typename EG,
108  typename LFSU, typename LFSV>
109  void onBindLFSUV(const EG& eg,
110  const LFSU& lfsu, const LFSV& lfsv)
111  {
112  }
113 
114  template<typename EG,
115  typename LFSV>
116  void onBindLFSV(const EG& eg,
117  const LFSV& lfsv)
118  {
119  }
120 
121  template<typename EG,
122  typename LFSU, typename LFSV>
123  void onUnbindLFSUV(const EG& eg,
124  const LFSU& lfsu, const LFSV& lfsv)
125  {
126  }
127 
128  template<typename EG,
129  typename LFSV_S>
130  void onUnbindLFSV(const EG& eg,
131  const LFSV_S& lfsv_s)
132  {
133  }
134 
135 
136  template<typename IG,
137  typename LFSU, typename LFSV>
138  void onBindLFSUVInside(const IG& ig,
139  const LFSU& lfsu, const LFSV& lfsv)
140  {
141  }
142 
143  template<typename IG,
144  typename LFSV>
145  void onBindLFSVInside(const IG& ig,
146  const LFSV& lfsv)
147  {
148  }
149 
150  template<typename IG,
151  typename LFSU, typename LFSV>
152  void onUnbindLFSUVInside(const IG& ig,
153  const LFSU& lfsu, const LFSV& lfsv)
154  {
155  }
156 
157  template<typename IG,
158  typename LFSV_S>
159  void onUnbindLFSVInside(const IG& ig,
160  const LFSV_S& lfsv_s)
161  {
162  }
163 
164 
165  template<typename IG,
166  typename LFSU_S, typename LFSV_S,
167  typename LFSU_N, typename LFSV_N>
168  void onBindLFSUVOutside(const IG& ig,
169  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
170  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n)
171  {
172  }
173 
174  template<typename IG,
175  typename LFSV_S,
176  typename LFSV_N>
177  void onBindLFSVOutside(const IG& ig,
178  const LFSV_S& lfsv_s,
179  const LFSV_N& lfsv_n)
180  {
181  }
182 
183  template<typename IG,
184  typename LFSU_S, typename LFSV_S,
185  typename LFSU_N, typename LFSV_N>
186  void onUnbindLFSUVOutside(const IG& ig,
187  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
188  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n)
189  {
190  }
191 
192  template<typename IG,
193  typename LFSV_S,
194  typename LFSV_N>
195  void onUnbindLFSVOutside(const IG& ig,
196  const LFSV_S& lfsv_s,
197  const LFSV_N& lfsv_n)
198  {
199  }
200 
201 
202  template<typename IG,
203  typename LFSU_S, typename LFSV_S,
204  typename LFSU_N, typename LFSV_N,
205  typename LFSU_C, typename LFSV_C>
206  void onBindLFSUVCoupling(const IG& ig,
207  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
208  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n,
209  const LFSU_C& lfsu_c, const LFSV_C& lfsv_c)
210  {
211  }
212 
213  template<typename IG,
214  typename LFSV_S,
215  typename LFSV_N,
216  typename LFSV_C>
217  void onBindLFSVCoupling(const IG& ig,
218  const LFSV_S& lfsv_s,
219  const LFSV_N& lfsv_n,
220  const LFSV_C& lfsv_c)
221  {
222  }
223 
224  template<typename IG,
225  typename LFSU_S, typename LFSV_S,
226  typename LFSU_N, typename LFSV_N,
227  typename LFSU_C, typename LFSV_C>
228  void onUnbindLFSUVCoupling(const IG& ig,
229  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
230  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n,
231  const LFSU_C& lfsu_c, const LFSV_C& lfsv_c)
232  {
233  }
234 
235  template<typename IG,
236  typename LFSV_S,
237  typename LFSV_N,
238  typename LFSV_C>
239  void onUnbindLFSVCoupling(const IG& ig,
240  const LFSV_S& lfsv_s,
241  const LFSV_N& lfsv_n,
242  const LFSV_C& lfsv_c)
243  {
244  }
245 
246  template<typename LFSU>
247  void loadCoefficientsLFSUInside(const LFSU& lfsu_s)
248  {
249  }
250 
251  template<typename LFSU_N>
252  void loadCoefficientsLFSUOutside(const LFSU_N& lfsu_n)
253  {
254  }
255 
256  template<typename LFSU_C>
257  void loadCoefficientsLFSUCoupling(const LFSU_C& lfsu_c)
258  {
259  }
260 
262 
265 
268  template<typename EG>
269  bool assembleCell(const EG & eg)
270  {
271  return false;
272  }
273 
274  template<typename EG, typename LFSU, typename LFSV>
275  void assembleUVVolume(const EG& eg, const LFSU& lfsu, const LFSV& lfsv)
276  {
277  }
278 
279  template<typename EG, typename LFSV>
280  void assembleVVolume(const EG& eg, const LFSV& lfsv)
281  {
282  }
283 
284 
285  template<typename IG, typename LFSU_S, typename LFSV_S, typename LFSU_N, typename LFSV_N>
286  void assembleUVSkeleton(const IG& ig,
287  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
288  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n)
289  {
290  }
291 
292  template<typename IG, typename LFSV_S, typename LFSV_N>
293  void assembleVSkeleton(const IG& ig,
294  const LFSV_S& lfsv_s,
295  const LFSV_N& lfsv_n)
296  {
297  }
298 
299 
300  template<typename IG, typename LFSU, typename LFSV>
301  void assembleUVBoundary(const IG& ig, const LFSU& lfsu, const LFSV& lfsv)
302  {
303  }
304 
305  template<typename IG, typename LFSV>
306  void assembleVBoundary(const IG& ig, const LFSV& lfsv)
307  {
308  }
309 
310 
311  template<typename IG, typename LFSU, typename LFSV>
312  void assembleUVProcessor(const IG& ig, const LFSU& lfsu, const LFSV& lfsv)
313  {
314  }
315 
316  template<typename IG, typename LFSV>
317  void assembleVProcessor(const IG& ig, const LFSV& lfsv)
318  {
319  }
320 
321 
322  template<typename IG,
323  typename LFSU_S, typename LFSV_S,
324  typename LFSU_N, typename LFSV_N,
325  typename LFSU_C, typename LFSV_C>
327  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
328  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n,
329  const LFSU_C& lfsu_c, const LFSV_C& lfsv_c)
330  {
331  }
332 
333  template<typename IG,
334  typename LFSV_S,
335  typename LFSV_N,
336  typename LFSV_C>
338  const LFSV_S& lfsv_s,
339  const LFSV_N& lfsv_n,
340  const LFSV_C& lfsv_c)
341  {
342  }
343 
344 
345  template<typename EG, typename LFSU, typename LFSV>
346  void assembleUVVolumePostSkeleton(const EG& eg, const LFSU& lfsu, const LFSV& lfsv)
347  {
348  }
349 
350  template<typename EG, typename LFSV>
351  void assembleVVolumePostSkeleton(const EG& eg, const LFSV& lfsv)
352  {
353  }
354 
356 
359 
360  void preAssembly()
361  {
362  }
363 
364  template<typename GFSU, typename GFSV>
365  void postAssembly(const GFSU& gfsu, const GFSV& gfsv)
366  {
367  }
368 
370 
371  };
372 
373 
375 
376  } // namespace PDELab
377 } //namespace Dune
378 
379 #endif // DUNE_PDELAB_GRIDOPERATOR_COMMON_LOCALASSEMBLERENGINEBASE_HH
bool requireVBoundary() const
Definition: localassemblerenginebase.hh:67
void onUnbindLFSVCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: localassemblerenginebase.hh:239
const IG & ig
Definition: constraints.hh:148
void onUnbindLFSV(const EG &eg, const LFSV_S &lfsv_s)
Definition: localassemblerenginebase.hh:130
bool assembleCell(const EG &eg)
Definition: localassemblerenginebase.hh:269
bool requireSkeletonTwoSided() const
Definition: localassemblerenginebase.hh:37
void loadCoefficientsLFSUCoupling(const LFSU_C &lfsu_c)
Definition: localassemblerenginebase.hh:257
void onUnbindLFSVOutside(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: localassemblerenginebase.hh:195
bool requireVProcessor() const
Definition: localassemblerenginebase.hh:77
void onUnbindLFSUVInside(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:152
bool requireUVVolumePostSkeleton() const
Definition: localassemblerenginebase.hh:92
void preAssembly()
Definition: localassemblerenginebase.hh:360
void onUnbindLFSUV(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:123
void assembleVVolumePostSkeleton(const EG &eg, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:351
void onBindLFSVInside(const IG &ig, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:145
void onUnbindLFSVInside(const IG &ig, const LFSV_S &lfsv_s)
Definition: localassemblerenginebase.hh:159
void assembleUVVolumePostSkeleton(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:346
void loadCoefficientsLFSUInside(const LFSU &lfsu_s)
Definition: localassemblerenginebase.hh:247
void onBindLFSUV(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:109
bool requireVEnrichedCoupling() const
Definition: localassemblerenginebase.hh:87
bool requireSkeleton() const
Definition: localassemblerenginebase.hh:32
void assembleUVVolume(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:275
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:168
bool requireVSkeleton() const
Definition: localassemblerenginebase.hh:57
bool requireUVProcessor() const
Definition: localassemblerenginebase.hh:72
For backward compatibility – Do not use this!
Definition: adaptivity.hh:27
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:206
void assembleVBoundary(const IG &ig, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:306
void assembleVSkeleton(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: localassemblerenginebase.hh:293
bool requireUVSkeleton() const
Definition: localassemblerenginebase.hh:52
void loadCoefficientsLFSUOutside(const LFSU_N &lfsu_n)
Definition: localassemblerenginebase.hh:252
void assembleVEnrichedCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: localassemblerenginebase.hh:337
void assembleUVBoundary(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:301
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:186
void onBindLFSV(const EG &eg, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:116
void postAssembly(const GFSU &gfsu, const GFSV &gfsv)
Definition: localassemblerenginebase.hh:365
void assembleUVProcessor(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:312
bool requireUVBoundary() const
Definition: localassemblerenginebase.hh:62
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:286
Definition: localassemblerenginebase.hh:26
bool requireUVEnrichedCoupling() const
Definition: localassemblerenginebase.hh:82
bool requireUVVolume() const
Definition: localassemblerenginebase.hh:42
void onBindLFSVCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: localassemblerenginebase.hh:217
void assembleVProcessor(const IG &ig, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:317
Base class for LocalAssemblerEngine implementations to avoid boilerplate code.
Definition: localassemblerenginebase.hh:21
bool requireVVolumePostSkeleton() const
Definition: localassemblerenginebase.hh:97
bool requireVVolume() const
Definition: localassemblerenginebase.hh:47
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:326
void assembleVVolume(const EG &eg, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:280
void onBindLFSUVInside(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:138
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:228
void onBindLFSVOutside(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: localassemblerenginebase.hh:177