Line data Source code
1 : // The libMesh Finite Element Library.
2 : // Copyright (C) 2002-2025 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 :
4 : // This library is free software; you can redistribute it and/or
5 : // modify it under the terms of the GNU Lesser General Public
6 : // License as published by the Free Software Foundation; either
7 : // version 2.1 of the License, or (at your option) any later version.
8 :
9 : // This library is distributed in the hope that it will be useful,
10 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 : // Lesser General Public License for more details.
13 :
14 : // You should have received a copy of the GNU Lesser General Public
15 : // License along with this library; if not, write to the Free Software
16 : // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 :
18 :
19 : // Local includes
20 : #include "libmesh/fe.h"
21 : #include "libmesh/elem.h"
22 :
23 :
24 : namespace libMesh
25 : {
26 :
27 :
28 0 : LIBMESH_DEFAULT_VECTORIZED_FE(0,HIERARCHIC)
29 0 : LIBMESH_DEFAULT_VECTORIZED_FE(0,L2_HIERARCHIC)
30 0 : LIBMESH_DEFAULT_VECTORIZED_FE(0,SIDE_HIERARCHIC)
31 :
32 :
33 :
34 : template <>
35 0 : Real FE<0,HIERARCHIC>::shape(const ElemType,
36 : const Order,
37 : const unsigned int libmesh_dbg_var(i),
38 : const Point &)
39 : {
40 0 : libmesh_assert_less (i, 1);
41 0 : return 1.;
42 : }
43 :
44 :
45 :
46 : template <>
47 0 : Real FE<0,L2_HIERARCHIC>::shape(const ElemType,
48 : const Order,
49 : const unsigned int libmesh_dbg_var(i),
50 : const Point &)
51 : {
52 0 : libmesh_assert_less (i, 1);
53 0 : return 1.;
54 : }
55 :
56 :
57 :
58 : template <>
59 0 : Real FE<0,SIDE_HIERARCHIC>::shape(const ElemType,
60 : const Order,
61 : const unsigned int,
62 : const Point &)
63 : {
64 0 : libmesh_error_msg("No side variables in 0D!");
65 : return 1.;
66 : }
67 :
68 :
69 :
70 : template <>
71 0 : Real FE<0,HIERARCHIC>::shape(const Elem *,
72 : const Order,
73 : const unsigned int libmesh_dbg_var(i),
74 : const Point &,
75 : const bool)
76 : {
77 0 : libmesh_assert_less (i, 1);
78 0 : return 1.;
79 : }
80 :
81 :
82 :
83 : template <>
84 0 : Real FE<0,L2_HIERARCHIC>::shape(const Elem *,
85 : const Order,
86 : const unsigned int libmesh_dbg_var(i),
87 : const Point &,
88 : const bool)
89 : {
90 0 : libmesh_assert_less (i, 1);
91 0 : return 1.;
92 : }
93 :
94 :
95 :
96 : template <>
97 0 : Real FE<0,SIDE_HIERARCHIC>::shape(const Elem *,
98 : const Order,
99 : const unsigned int,
100 : const Point &,
101 : const bool)
102 : {
103 0 : libmesh_error_msg("No side variables in 0D!");
104 : return 1.;
105 : }
106 :
107 :
108 :
109 : template <>
110 0 : Real FE<0,HIERARCHIC>::shape(const FEType,
111 : const Elem *,
112 : const unsigned int libmesh_dbg_var(i),
113 : const Point &,
114 : const bool)
115 : {
116 0 : libmesh_assert_less (i, 1);
117 0 : return 1.;
118 : }
119 :
120 :
121 :
122 : template <>
123 0 : Real FE<0,L2_HIERARCHIC>::shape(const FEType,
124 : const Elem *,
125 : const unsigned int libmesh_dbg_var(i),
126 : const Point &,
127 : const bool)
128 : {
129 0 : libmesh_assert_less (i, 1);
130 0 : return 1.;
131 : }
132 :
133 :
134 :
135 : template <>
136 0 : Real FE<0,SIDE_HIERARCHIC>::shape(const FEType,
137 : const Elem *,
138 : const unsigned int,
139 : const Point &,
140 : const bool)
141 : {
142 0 : libmesh_error_msg("No side variables in 0D!");
143 : return 1.;
144 : }
145 :
146 :
147 :
148 : template <>
149 0 : Real FE<0,HIERARCHIC>::shape_deriv(const ElemType,
150 : const Order,
151 : const unsigned int,
152 : const unsigned int,
153 : const Point &)
154 : {
155 0 : libmesh_error_msg("No spatial derivatives in 0D!");
156 : return 0.;
157 : }
158 :
159 :
160 :
161 : template <>
162 0 : Real FE<0,HIERARCHIC>::shape_deriv(const Elem *,
163 : const Order,
164 : const unsigned int,
165 : const unsigned int,
166 : const Point &,
167 : const bool)
168 : {
169 0 : libmesh_error_msg("No spatial derivatives in 0D!");
170 : return 0.;
171 : }
172 :
173 :
174 :
175 : template <>
176 0 : Real FE<0,HIERARCHIC>::shape_deriv(const FEType,
177 : const Elem *,
178 : const unsigned int,
179 : const unsigned int,
180 : const Point &,
181 : const bool)
182 : {
183 0 : libmesh_error_msg("No spatial derivatives in 0D!");
184 : return 0.;
185 : }
186 :
187 :
188 :
189 : template <>
190 0 : Real FE<0,L2_HIERARCHIC>::shape_deriv(const ElemType,
191 : const Order,
192 : const unsigned int,
193 : const unsigned int,
194 : const Point &)
195 : {
196 0 : libmesh_error_msg("No spatial derivatives in 0D!");
197 : return 0.;
198 : }
199 :
200 :
201 :
202 : template <>
203 0 : Real FE<0,L2_HIERARCHIC>::shape_deriv(const Elem *,
204 : const Order,
205 : const unsigned int,
206 : const unsigned int,
207 : const Point &,
208 : const bool)
209 : {
210 0 : libmesh_error_msg("No spatial derivatives in 0D!");
211 : return 0.;
212 : }
213 :
214 :
215 : template <>
216 0 : Real FE<0,L2_HIERARCHIC>::shape_deriv(const FEType,
217 : const Elem *,
218 : const unsigned int,
219 : const unsigned int,
220 : const Point &,
221 : const bool)
222 : {
223 0 : libmesh_error_msg("No spatial derivatives in 0D!");
224 : return 0.;
225 : }
226 :
227 :
228 :
229 : template <>
230 0 : Real FE<0,SIDE_HIERARCHIC>::shape_deriv(const ElemType,
231 : const Order,
232 : const unsigned int,
233 : const unsigned int,
234 : const Point &)
235 : {
236 0 : libmesh_error_msg("No spatial derivatives in 0D!");
237 : return 0.;
238 : }
239 :
240 :
241 :
242 : template <>
243 0 : Real FE<0,SIDE_HIERARCHIC>::shape_deriv(const Elem *,
244 : const Order,
245 : const unsigned int,
246 : const unsigned int,
247 : const Point &,
248 : const bool)
249 : {
250 0 : libmesh_error_msg("No spatial derivatives in 0D!");
251 : return 0.;
252 : }
253 :
254 :
255 : template <>
256 0 : Real FE<0,SIDE_HIERARCHIC>::shape_deriv(const FEType,
257 : const Elem *,
258 : const unsigned int,
259 : const unsigned int,
260 : const Point &,
261 : const bool)
262 : {
263 0 : libmesh_error_msg("No spatial derivatives in 0D!");
264 : return 0.;
265 : }
266 :
267 :
268 : #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
269 :
270 : template <>
271 0 : Real FE<0,HIERARCHIC>::shape_second_deriv(const ElemType,
272 : const Order,
273 : const unsigned int,
274 : const unsigned int,
275 : const Point &)
276 : {
277 0 : libmesh_error_msg("No spatial derivatives in 0D!");
278 : return 0.;
279 : }
280 :
281 :
282 :
283 : template <>
284 0 : Real FE<0,HIERARCHIC>::shape_second_deriv(const Elem *,
285 : const Order,
286 : const unsigned int,
287 : const unsigned int,
288 : const Point &,
289 : const bool)
290 : {
291 0 : libmesh_error_msg("No spatial derivatives in 0D!");
292 : return 0.;
293 : }
294 :
295 :
296 : template <>
297 0 : Real FE<0,HIERARCHIC>::shape_second_deriv(const FEType,
298 : const Elem *,
299 : const unsigned int,
300 : const unsigned int,
301 : const Point &,
302 : const bool)
303 : {
304 0 : libmesh_error_msg("No spatial derivatives in 0D!");
305 : return 0.;
306 : }
307 :
308 :
309 : template <>
310 0 : Real FE<0,L2_HIERARCHIC>::shape_second_deriv(const ElemType,
311 : const Order,
312 : const unsigned int,
313 : const unsigned int,
314 : const Point &)
315 : {
316 0 : libmesh_error_msg("No spatial derivatives in 0D!");
317 : return 0.;
318 : }
319 :
320 :
321 :
322 : template <>
323 0 : Real FE<0,L2_HIERARCHIC>::shape_second_deriv(const Elem *,
324 : const Order,
325 : const unsigned int,
326 : const unsigned int,
327 : const Point &,
328 : const bool)
329 : {
330 0 : libmesh_error_msg("No spatial derivatives in 0D!");
331 : return 0.;
332 : }
333 :
334 :
335 : template <>
336 0 : Real FE<0,L2_HIERARCHIC>::shape_second_deriv(const FEType,
337 : const Elem *,
338 : const unsigned int,
339 : const unsigned int,
340 : const Point &,
341 : const bool)
342 : {
343 0 : libmesh_error_msg("No spatial derivatives in 0D!");
344 : return 0.;
345 : }
346 :
347 :
348 :
349 : template <>
350 0 : Real FE<0,SIDE_HIERARCHIC>::shape_second_deriv(const ElemType,
351 : const Order,
352 : const unsigned int,
353 : const unsigned int,
354 : const Point &)
355 : {
356 0 : libmesh_error_msg("No spatial derivatives in 0D!");
357 : return 0.;
358 : }
359 :
360 :
361 :
362 : template <>
363 0 : Real FE<0,SIDE_HIERARCHIC>::shape_second_deriv(const Elem *,
364 : const Order,
365 : const unsigned int,
366 : const unsigned int,
367 : const Point &,
368 : const bool)
369 : {
370 0 : libmesh_error_msg("No spatial derivatives in 0D!");
371 : return 0.;
372 : }
373 :
374 :
375 :
376 : template <>
377 0 : Real FE<0,SIDE_HIERARCHIC>::shape_second_deriv(const FEType,
378 : const Elem *,
379 : const unsigned int,
380 : const unsigned int,
381 : const Point &,
382 : const bool)
383 : {
384 0 : libmesh_error_msg("No spatial derivatives in 0D!");
385 : return 0.;
386 : }
387 :
388 : #endif // LIBMESH_ENABLE_SECOND_DERIVATIVES
389 :
390 : } // namespace libMesh
|