dune-pdelab  2.7-git
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 
15 
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 
272  template<typename EG>
273  [[deprecated]] bool assembleCell(const EG & eg)
274  {
275  return skipEntity(eg);
276  }
277 
280  template<typename EG>
281  bool skipEntity(const EG & eg)
282  {
283  return false;
284  }
285 
287  template<typename IG>
288  bool skipIntersection(const IG & ig)
289  {
290  return false;
291  }
292 
293  template<typename EG, typename LFSU, typename LFSV>
294  void assembleUVVolume(const EG& eg, const LFSU& lfsu, const LFSV& lfsv)
295  {
296  }
297 
298  template<typename EG, typename LFSV>
299  void assembleVVolume(const EG& eg, const LFSV& lfsv)
300  {
301  }
302 
303 
304  template<typename IG, typename LFSU_S, typename LFSV_S, typename LFSU_N, typename LFSV_N>
305  void assembleUVSkeleton(const IG& ig,
306  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
307  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n)
308  {
309  }
310 
311  template<typename IG, typename LFSV_S, typename LFSV_N>
312  void assembleVSkeleton(const IG& ig,
313  const LFSV_S& lfsv_s,
314  const LFSV_N& lfsv_n)
315  {
316  }
317 
318 
319  template<typename IG, typename LFSU, typename LFSV>
320  void assembleUVBoundary(const IG& ig, const LFSU& lfsu, const LFSV& lfsv)
321  {
322  }
323 
324  template<typename IG, typename LFSV>
325  void assembleVBoundary(const IG& ig, const LFSV& lfsv)
326  {
327  }
328 
329 
330  template<typename IG, typename LFSU, typename LFSV>
331  void assembleUVProcessor(const IG& ig, const LFSU& lfsu, const LFSV& lfsv)
332  {
333  }
334 
335  template<typename IG, typename LFSV>
336  void assembleVProcessor(const IG& ig, const LFSV& lfsv)
337  {
338  }
339 
340 
341  template<typename IG,
342  typename LFSU_S, typename LFSV_S,
343  typename LFSU_N, typename LFSV_N,
344  typename LFSU_C, typename LFSV_C>
346  const LFSU_S& lfsu_s, const LFSV_S& lfsv_s,
347  const LFSU_N& lfsu_n, const LFSV_N& lfsv_n,
348  const LFSU_C& lfsu_c, const LFSV_C& lfsv_c)
349  {
350  }
351 
352  template<typename IG,
353  typename LFSV_S,
354  typename LFSV_N,
355  typename LFSV_C>
357  const LFSV_S& lfsv_s,
358  const LFSV_N& lfsv_n,
359  const LFSV_C& lfsv_c)
360  {
361  }
362 
363 
364  template<typename EG, typename LFSU, typename LFSV>
365  void assembleUVVolumePostSkeleton(const EG& eg, const LFSU& lfsu, const LFSV& lfsv)
366  {
367  }
368 
369  template<typename EG, typename LFSV>
370  void assembleVVolumePostSkeleton(const EG& eg, const LFSV& lfsv)
371  {
372  }
373 
375 
378 
379  void preAssembly()
380  {
381  }
382 
383  template<typename GFSU, typename GFSV>
384  void postAssembly(const GFSU& gfsu, const GFSV& gfsv)
385  {
386  }
387 
389 
390  };
391 
392 
394 
395  } // namespace PDELab
396 } //namespace Dune
397 
398 #endif // DUNE_PDELAB_GRIDOPERATOR_COMMON_LOCALASSEMBLERENGINEBASE_HH
const IG & ig
Definition: constraints.hh:149
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
Base class for LocalAssemblerEngine implementations to avoid boilerplate code.
Definition: localassemblerenginebase.hh:22
void assembleVProcessor(const IG &ig, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:336
void onBindLFSUV(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:114
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 onUnbindLFSUV(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:128
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:345
bool requireUVVolume() const
Definition: localassemblerenginebase.hh:42
bool requireUVBoundary() const
Definition: localassemblerenginebase.hh:62
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
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:305
bool requireUVProcessor() const
Definition: localassemblerenginebase.hh:72
void onBindLFSVOutside(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: localassemblerenginebase.hh:182
bool requireSkeletonTwoSided() const
Definition: localassemblerenginebase.hh:37
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 assembleUVProcessor(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:331
bool skipEntity(const EG &eg)
Definition: localassemblerenginebase.hh:281
bool requireVBoundary() const
Definition: localassemblerenginebase.hh:67
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)
Deprecated. Use skipEntity insted.
Definition: localassemblerenginebase.hh:273
bool requireUVSkeleton() const
Definition: localassemblerenginebase.hh:52
void loadCoefficientsLFSUInside(const LFSU &lfsu_s)
Definition: localassemblerenginebase.hh:252
void assembleVBoundary(const IG &ig, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:325
void loadCoefficientsLFSUOutside(const LFSU_N &lfsu_n)
Definition: localassemblerenginebase.hh:257
void assembleUVBoundary(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:320
void assembleVEnrichedCoupling(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n, const LFSV_C &lfsv_c)
Definition: localassemblerenginebase.hh:356
bool requireUVVolumePostSkeleton() const
Definition: localassemblerenginebase.hh:92
void loadCoefficientsLFSUCoupling(const LFSU_C &lfsu_c)
Definition: localassemblerenginebase.hh:262
void assembleVSkeleton(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: localassemblerenginebase.hh:312
void onBindLFSUVInside(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:143
bool requireUVEnrichedCoupling() const
Definition: localassemblerenginebase.hh:82
auto partition() const
Definition: localassemblerenginebase.hh:102
bool requireVVolume() const
Definition: localassemblerenginebase.hh:47
void postAssembly(const GFSU &gfsu, const GFSV &gfsv)
Definition: localassemblerenginebase.hh:384
void preAssembly()
Definition: localassemblerenginebase.hh:379
void onBindLFSVInside(const IG &ig, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:150
void onUnbindLFSV(const EG &eg, const LFSV_S &lfsv_s)
Definition: localassemblerenginebase.hh:135
void onUnbindLFSVInside(const IG &ig, const LFSV_S &lfsv_s)
Definition: localassemblerenginebase.hh:164
bool requireVSkeleton() const
Definition: localassemblerenginebase.hh:57
void assembleVVolume(const EG &eg, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:299
void onUnbindLFSVOutside(const IG &ig, const LFSV_S &lfsv_s, const LFSV_N &lfsv_n)
Definition: localassemblerenginebase.hh:200
void assembleUVVolume(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:294
bool requireVVolumePostSkeleton() const
Definition: localassemblerenginebase.hh:97
bool requireVProcessor() const
Definition: localassemblerenginebase.hh:77
void onBindLFSV(const EG &eg, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:121
void assembleUVVolumePostSkeleton(const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:365
bool requireVEnrichedCoupling() const
Definition: localassemblerenginebase.hh:87
void onUnbindLFSUVInside(const IG &ig, const LFSU &lfsu, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:157
bool skipIntersection(const IG &ig)
Definition: localassemblerenginebase.hh:288
void assembleVVolumePostSkeleton(const EG &eg, const LFSV &lfsv)
Definition: localassemblerenginebase.hh:370
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
bool requireSkeleton() const
Definition: localassemblerenginebase.hh:32
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
Definition: localassemblerenginebase.hh:27