DUNE PDELab (2.8)

localassemblerenginebase.hh
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
7namespace 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
37 bool requireSkeletonTwoSided() const
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
82 bool requireUVEnrichedCoupling() const
83 {
84 return false;
85 }
86
87 bool requireVEnrichedCoupling() const
88 {
89 return false;
90 }
91
92 bool requireUVVolumePostSkeleton() const
93 {
94 return false;
95 }
96
97 bool requireVVolumePostSkeleton() const
98 {
99 return false;
100 }
101
102 auto partition() const
103 {
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>
345 void assembleUVEnrichedCoupling(const IG& ig,
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>
356 void assembleVEnrichedCoupling(const IG& ig,
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
Base class for LocalAssemblerEngine implementations to avoid boilerplate code.
Definition: localassemblerenginebase.hh:22
bool skipEntity(const EG &eg)
Definition: localassemblerenginebase.hh:281
bool assembleCell(const EG &eg)
Deprecated. Use skipEntity insted.
Definition: localassemblerenginebase.hh:273
bool skipIntersection(const IG &ig)
Definition: localassemblerenginebase.hh:288
constexpr InteriorBorder interiorBorder
PartitionSet for the interior and border partitions.
Definition: partitionset.hh:285
Dune namespace.
Definition: alignedallocator.hh:11
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Dec 22, 23:30, 2024)