1 #ifndef INTREPID_HGRAD_WEDGE_C2_FEMDEF_HPP 2 #define INTREPID_HGRAD_WEDGE_C2_FEMDEF_HPP 53 template<
class Scalar,
class ArrayScalar>
56 this -> basisCardinality_ = 18;
57 this -> basisDegree_ = 2;
58 this -> basisCellTopology_ = shards::CellTopology(shards::getCellTopologyData<shards::Wedge<6> >() );
59 this -> basisType_ = BASIS_FEM_DEFAULT;
60 this -> basisCoordinates_ = COORDINATES_CARTESIAN;
61 this -> basisTagsAreSet_ =
false;
65 template<
class Scalar,
class ArrayScalar>
75 int tags[] = { 0, 0, 0, 1,
97 this -> ordinalToTag_,
99 this -> basisCardinality_,
108 template<
class Scalar,
class ArrayScalar>
110 const ArrayScalar & inputPoints,
114 #ifdef HAVE_INTREPID_DEBUG 115 Intrepid::getValues_HGRAD_Args<Scalar, ArrayScalar>(outputValues,
118 this -> getBaseCellTopology(),
119 this -> getCardinality() );
123 int dim0 = inputPoints.dimension(0);
130 switch (operatorType) {
133 for (
int i0 = 0; i0 < dim0; i0++) {
134 x = inputPoints(i0, 0);
135 y = inputPoints(i0, 1);
136 z = inputPoints(i0, 2);
139 outputValues(0, i0) = ((-1. + x + y)*(-1. + 2.*x + 2.*y)*(-1. + z)*z)/2.;
140 outputValues(1, i0) = (x*(-1. + 2.*x)*(-1. + z)*z)/2.;
141 outputValues(2, i0) = (y*(-1. + 2.*y)*(-1. + z)*z)/2.;
142 outputValues(3, i0) = ((-1. + x + y)*(-1. + 2.*x + 2.*y)*z*(1. + z))/2.;
143 outputValues(4, i0) = (x*(-1. + 2.*x)*z*(1. + z))/2.;
144 outputValues(5, i0) = (y*(-1. + 2.*y)*z*(1. + z))/2.;
146 outputValues(6, i0) = -2.*x*(-1. + x + y)*(-1. + z)*z;
147 outputValues(7, i0) = 2.*x*y*(-1. + z)*z;
148 outputValues(8, i0) = -2.*y*(-1. + x + y)*(-1. + z)*z;
149 outputValues(9, i0) = -((-1. + x + y)*(-1. + 2.*x + 2.*y)*(-1. + z)*(1. + z));
150 outputValues(10,i0) = -(x*(-1. + 2.*x)*(-1. + z)*(1. + z));
151 outputValues(11,i0) = -(y*(-1. + 2.*y)*(-1. + z)*(1. + z));
152 outputValues(12,i0) = -2.*x*(-1. + x + y)*z*(1. + z);
153 outputValues(13,i0) = 2.*x*y*z*(1. + z);
154 outputValues(14,i0) = -2.*y*(-1. + x + y)*z*(1. + z);
155 outputValues(15,i0) = 4.*x*(-1. + x + y)*(-1. + z)*(1. + z);
156 outputValues(16,i0) = -4.*x*y*(-1. + z)*(1. + z);
157 outputValues(17,i0) = 4.*y*(-1. + x + y)*(-1. + z)*(1. + z);
163 for (
int i0 = 0; i0 < dim0; i0++) {
164 x = inputPoints(i0,0);
165 y = inputPoints(i0,1);
166 z = inputPoints(i0,2);
169 outputValues(0, i0, 0) = ((-3 + 4*x + 4*y)*(-1 + z)*z)/2.;
170 outputValues(0, i0, 1) = ((-3 + 4*x + 4*y)*(-1 + z)*z)/2.;
171 outputValues(0, i0, 2) = ((-1 + x + y)*(-1 + 2*x + 2*y)*(-1 + 2*z))/2.;
173 outputValues(1, i0, 0) = ((-1 + 4*x)*(-1 + z)*z)/2.;
174 outputValues(1, i0, 1) = 0.;
175 outputValues(1, i0, 2) = (x*(-1 + 2*x)*(-1 + 2*z))/2.;
177 outputValues(2, i0, 0) = 0.;
178 outputValues(2, i0, 1) = ((-1 + 4*y)*(-1 + z)*z)/2.;
179 outputValues(2, i0, 2) = (y*(-1 + 2*y)*(-1 + 2*z))/2.;
181 outputValues(3, i0, 0) = ((-3 + 4*x + 4*y)*z*(1 + z))/2.;
182 outputValues(3, i0, 1) = ((-3 + 4*x + 4*y)*z*(1 + z))/2.;
183 outputValues(3, i0, 2) = ((-1 + x + y)*(-1 + 2*x + 2*y)*(1 + 2*z))/2.;
185 outputValues(4, i0, 0) = ((-1 + 4*x)*z*(1 + z))/2.;
186 outputValues(4, i0, 1) = 0.;
187 outputValues(4, i0, 2) = (x*(-1 + 2*x)*(1 + 2*z))/2.;
189 outputValues(5, i0, 0) = 0.;
190 outputValues(5, i0, 1) = ((-1 + 4*y)*z*(1 + z))/2.;
191 outputValues(5, i0, 2) = (y*(-1 + 2*y)*(1 + 2*z))/2.;
193 outputValues(6, i0, 0) = -2*(-1 + 2*x + y)*(-1 + z)*z;
194 outputValues(6, i0, 1) = -2*x*(-1 + z)*z;
195 outputValues(6, i0, 2) = 2*x*(-1 + x + y)*(1 - 2*z);
197 outputValues(7, i0, 0) = 2*y*(-1 + z)*z;
198 outputValues(7, i0, 1) = 2*x*(-1 + z)*z;
199 outputValues(7, i0, 2) = 2*x*y*(-1 + 2*z);
201 outputValues(8, i0, 0) = -2*y*(-1 + z)*z;
202 outputValues(8, i0, 1) = -2*(-1 + x + 2*y)*(-1 + z)*z;
203 outputValues(8, i0, 2) = 2*y*(-1 + x + y)*(1 - 2*z);
205 outputValues(9, i0, 0) = -(-3 + 4*x + 4*y)*(-1 + z*z);
206 outputValues(9, i0, 1) = -(-3 + 4*x + 4*y)*(-1 + z*z);
207 outputValues(9, i0, 2) = -2*(1 + 2*x*x - 3*y + 2*y*y + x*(-3 + 4*y))*z;
209 outputValues(10,i0, 0) = -(-1 + 4*x)*(-1 + z*z);
210 outputValues(10,i0, 1) = 0;
211 outputValues(10,i0, 2) = 2*(1 - 2*x)*x*z;
213 outputValues(11,i0, 0) = 0;
214 outputValues(11,i0, 1) = -(-1 + 4*y)*(-1 + z*z);
215 outputValues(11,i0, 2) = 2*(1 - 2*y)*y*z;
217 outputValues(12,i0, 0) = -2*(-1 + 2*x + y)*z*(1 + z);
218 outputValues(12,i0, 1) = -2*x*z*(1 + z);
219 outputValues(12,i0, 2) = -2*x*(-1 + x + y)*(1 + 2*z);
221 outputValues(13,i0, 0) = 2*y*z*(1 + z);
222 outputValues(13,i0, 1) = 2*x*z*(1 + z);
223 outputValues(13,i0, 2) = 2*x*y*(1 + 2*z);
225 outputValues(14,i0, 0) = -2*y*z*(1 + z);
226 outputValues(14,i0, 1) = -2*(-1 + x + 2*y)*z*(1 + z);
227 outputValues(14,i0, 2) = -2*y*(-1 + x + y)*(1 + 2*z);
229 outputValues(15,i0, 0) = 4*(-1 + 2*x + y)*(-1 + z*z);
230 outputValues(15,i0, 1) = 4*x*(-1 + z)*(1 + z);
231 outputValues(15,i0, 2) = 8*x*(-1 + x + y)*z;
233 outputValues(16,i0, 0) = -4*y*(-1 + z)*(1 + z);
234 outputValues(16,i0, 1) = -4*x*(-1 + z)*(1 + z);
235 outputValues(16,i0, 2) = -8*x*y*z;
237 outputValues(17,i0, 0) = 4*y*(-1 + z)*(1 + z);
238 outputValues(17,i0, 1) = 4*(-1 + x + 2*y)*(-1 + z*z);
239 outputValues(17,i0, 2) = 8*y*(-1 + x + y)*z;
245 TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_CURL), std::invalid_argument,
246 ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): CURL is invalid operator for rank-0 (scalar) functions in 3D");
250 TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_DIV), std::invalid_argument,
251 ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): DIV is invalid operator for rank-0 (scalar) functions in 3D");
255 for (
int i0 = 0; i0 < dim0; i0++) {
256 x = inputPoints(i0,0);
257 y = inputPoints(i0,1);
258 z = inputPoints(i0,2);
260 outputValues(0, i0, 0) = 2.*(-1. + z)*z;
261 outputValues(0, i0, 1) = 2.*(-1. + z)*z;
262 outputValues(0, i0, 2) = ((-3. + 4.*x + 4.*y)*(-1. + 2.*z))/2.;
263 outputValues(0, i0, 3) = 2.*(-1. + z)*z;
264 outputValues(0, i0, 4) = ((-3. + 4.*x + 4.*y)*(-1. + 2.*z))/2.;
265 outputValues(0, i0, 5) = (-1. + x + y)*(-1. + 2.*x + 2.*y);
267 outputValues(1, i0, 0) = 2.*(-1. + z)*z;
268 outputValues(1, i0, 1) = 0.;
269 outputValues(1, i0, 2) = ((-1. + 4.*x)*(-1. + 2.*z))/2.;
270 outputValues(1, i0, 3) = 0.;
271 outputValues(1, i0, 4) = 0.;
272 outputValues(1, i0, 5) = x*(-1. + 2.*x);
274 outputValues(2, i0, 0) = 0.;
275 outputValues(2, i0, 1) = 0.;
276 outputValues(2, i0, 2) = 0.;
277 outputValues(2, i0, 3) = 2.*(-1. + z)*z;
278 outputValues(2, i0, 4) = ((-1. + 4.*y)*(-1. + 2.*z))/2.;
279 outputValues(2, i0, 5) = y*(-1. + 2.*y);
281 outputValues(3, i0, 0) = 2.*z*(1. + z);
282 outputValues(3, i0, 1) = 2.*z*(1. + z);
283 outputValues(3, i0, 2) = ((-3. + 4.*x + 4.*y)*(1. + 2.*z))/2.;
284 outputValues(3, i0, 3) = 2.*z*(1. + z);
285 outputValues(3, i0, 4) = ((-3. + 4.*x + 4.*y)*(1. + 2.*z))/2.;
286 outputValues(3, i0, 5) = (-1. + x + y)*(-1. + 2.*x + 2.*y);
288 outputValues(4, i0, 0) = 2.*z*(1. + z);
289 outputValues(4, i0, 1) = 0.;
290 outputValues(4, i0, 2) = ((-1. + 4.*x)*(1. + 2.*z))/2.;;
291 outputValues(4, i0, 3) = 0.;
292 outputValues(4, i0, 4) = 0.;
293 outputValues(4, i0, 5) = x*(-1. + 2.*x);
295 outputValues(5, i0, 0) = 0.;
296 outputValues(5, i0, 1) = 0.;
297 outputValues(5, i0, 2) = 0.;
298 outputValues(5, i0, 3) = 2.*z*(1. + z);
299 outputValues(5, i0, 4) = ((-1. + 4.*y)*(1. + 2.*z))/2.;
300 outputValues(5, i0, 5) = y*(-1. + 2.*y);
302 outputValues(6, i0, 0) = -4.*(-1. + z)*z;
303 outputValues(6, i0, 1) = -2.*(-1. + z)*z;
304 outputValues(6, i0, 2) = -2.*(-1. + 2.*x + y)*(-1. + 2.*z);
305 outputValues(6, i0, 3) = 0.;
306 outputValues(6, i0, 4) = x*(2. - 4.*z);
307 outputValues(6, i0, 5) = -4.*x*(-1. + x + y);
309 outputValues(7, i0, 0) = 0.;
310 outputValues(7, i0, 1) = 2.*(-1. + z)*z;
311 outputValues(7, i0, 2) = 2.*y*(-1. + 2.*z);
312 outputValues(7, i0, 3) = 0.;
313 outputValues(7, i0, 4) = 2.*x*(-1. + 2.*z);
314 outputValues(7, i0, 5) = 4.*x*y;
316 outputValues(8, i0, 0) = 0.;
317 outputValues(8, i0, 1) = -2.*(-1. + z)*z;
318 outputValues(8, i0, 2) = y*(2. - 4.*z);
319 outputValues(8, i0, 3) = -4.*(-1. + z)*z;
320 outputValues(8, i0, 4) = -2.*(-1. + x + 2.*y)*(-1. + 2.*z);
321 outputValues(8, i0, 5) = -4.*y*(-1. + x + y);
323 outputValues(9, i0, 0) = 4. - 4.*z*z;
324 outputValues(9, i0, 1) = 4. - 4.*z*z;
325 outputValues(9, i0, 2) = -2.*(-3. + 4.*x + 4.*y)*z;
326 outputValues(9, i0, 3) = 4. - 4.*z*z;
327 outputValues(9, i0, 4) = -2.*(-3. + 4.*x + 4.*y)*z;
328 outputValues(9, i0, 5) = -2.*(-1. + x + y)*(-1. + 2.*x + 2.*y);
330 outputValues(10,i0, 0) = 4. - 4.*z*z;
331 outputValues(10,i0, 1) = 0.;
332 outputValues(10,i0, 2) = (2. - 8.*x)*z;
333 outputValues(10,i0, 3) = 0.;
334 outputValues(10,i0, 4) = 0.;
335 outputValues(10,i0, 5) = -2.*x*(-1. + 2.*x);
337 outputValues(11,i0, 0) = 0.;
338 outputValues(11,i0, 1) = 0.;
339 outputValues(11,i0, 2) = 0.;
340 outputValues(11,i0, 3) = 4. - 4.*z*z;
341 outputValues(11,i0, 4) = (2. - 8.*y)*z;
342 outputValues(11,i0, 5) = -2.*y*(-1. + 2.*y);
344 outputValues(12,i0, 0) = -4.*z*(1. + z);
345 outputValues(12,i0, 1) = -2.*z*(1. + z);
346 outputValues(12,i0, 2) = -2.*(-1. + 2.*x + y)*(1. + 2.*z);
347 outputValues(12,i0, 3) = 0.;
348 outputValues(12,i0, 4) = -2.*(x + 2.*x*z);
349 outputValues(12,i0, 5) = -4.*x*(-1. + x + y);
351 outputValues(13,i0, 0) = 0.;
352 outputValues(13,i0, 1) = 2.*z*(1. + z);
353 outputValues(13,i0, 2) = 2.*(y + 2.*y*z);
354 outputValues(13,i0, 3) = 0.;
355 outputValues(13,i0, 4) = 2.*(x + 2.*x*z);
356 outputValues(13,i0, 5) = 4.*x*y;
358 outputValues(14,i0, 0) = 0.;
359 outputValues(14,i0, 1) = -2.*z*(1. + z);
360 outputValues(14,i0, 2) = -2.*(y + 2.*y*z);
361 outputValues(14,i0, 3) = -4.*z*(1. + z);
362 outputValues(14,i0, 4) = -2.*(-1. + x + 2.*y)*(1. + 2.*z);
363 outputValues(14,i0, 5) = -4.*y*(-1. + x + y);
365 outputValues(15,i0, 0) = 8.*(-1. + z*z);
366 outputValues(15,i0, 1) = 4.*(-1. + z*z);
367 outputValues(15,i0, 2) = 8.*(-1. + 2.*x + y)*z;
368 outputValues(15,i0, 3) = 0.;
369 outputValues(15,i0, 4) = 8.*x*z;
370 outputValues(15,i0, 5) = 8.*x*(-1. + x + y);
372 outputValues(16,i0, 0) = 0.;
373 outputValues(16,i0, 1) = 4. - 4.*z*z;
374 outputValues(16,i0, 2) = -8.*y*z;
375 outputValues(16,i0, 3) = 0.;
376 outputValues(16,i0, 4) = -8.*x*z;
377 outputValues(16,i0, 5) = -8.*x*y;
380 outputValues(17,i0, 0) = 0.;
381 outputValues(17,i0, 1) = 4.*(-1. + z*z);
382 outputValues(17,i0, 2) = 8.*y*z;
383 outputValues(17,i0, 3) = 8.*(-1. + z*z);
384 outputValues(17,i0, 4) = 8.*(-1. + x + 2.*y)*z;
385 outputValues(17,i0, 5) = 8.*y*(-1. + x + y);
390 for (
int i0 = 0; i0 < dim0; i0++) {
391 x = inputPoints(i0,0);
392 y = inputPoints(i0,1);
393 z = inputPoints(i0,2);
395 outputValues(0, i0, 0) = 0.;
396 outputValues(0, i0, 1) = 0.;
397 outputValues(0, i0, 2) = -2. + 4.*z;
398 outputValues(0, i0, 3) = 0.;
399 outputValues(0, i0, 4) = -2. + 4.*z;
400 outputValues(0, i0, 5) = -3. + 4.*x + 4.*y;
401 outputValues(0, i0, 6) = 0.;
402 outputValues(0, i0, 7) = -2. + 4.*z;
403 outputValues(0, i0, 8) = -3. + 4.*x + 4.*y;
404 outputValues(0, i0, 9) = 0.;
406 outputValues(1, i0, 0) = 0.;
407 outputValues(1, i0, 1) = 0.;
408 outputValues(1, i0, 2) = -2. + 4.*z;
409 outputValues(1, i0, 3) = 0.;
410 outputValues(1, i0, 4) = 0.;
411 outputValues(1, i0, 5) = -1 + 4.*x;
412 outputValues(1, i0, 6) = 0.;
413 outputValues(1, i0, 7) = 0.;
414 outputValues(1, i0, 8) = 0.;
415 outputValues(1, i0, 9) = 0.;
417 outputValues(2, i0, 0) = 0.;
418 outputValues(2, i0, 1) = 0.;
419 outputValues(2, i0, 2) = 0.;
420 outputValues(2, i0, 3) = 0.;
421 outputValues(2, i0, 4) = 0.;
422 outputValues(2, i0, 5) = 0.;
423 outputValues(2, i0, 6) = 0.;
424 outputValues(2, i0, 7) = -2. + 4.*z;
425 outputValues(2, i0, 8) = -1 + 4.*y;
426 outputValues(2, i0, 9) = 0.;
428 outputValues(3, i0, 0) = 0.;
429 outputValues(3, i0, 1) = 0.;
430 outputValues(3, i0, 2) = 2. + 4.*z;
431 outputValues(3, i0, 3) = 0.;
432 outputValues(3, i0, 4) = 2. + 4.*z;
433 outputValues(3, i0, 5) = -3. + 4.*x + 4.*y;
434 outputValues(3, i0, 6) = 0.;
435 outputValues(3, i0, 7) = 2. + 4.*z;
436 outputValues(3, i0, 8) = -3. + 4.*x + 4.*y;
437 outputValues(3, i0, 9) = 0.;
439 outputValues(4, i0, 0) = 0.;
440 outputValues(4, i0, 1) = 0.;
441 outputValues(4, i0, 2) = 2. + 4.*z;
442 outputValues(4, i0, 3) = 0.;
443 outputValues(4, i0, 4) = 0.;
444 outputValues(4, i0, 5) = -1 + 4.*x;
445 outputValues(4, i0, 6) = 0.;
446 outputValues(4, i0, 7) = 0.;
447 outputValues(4, i0, 8) = 0.;
448 outputValues(4, i0, 9) = 0.;
450 outputValues(5, i0, 0) = 0.;
451 outputValues(5, i0, 1) = 0.;
452 outputValues(5, i0, 2) = 0.;
453 outputValues(5, i0, 3) = 0.;
454 outputValues(5, i0, 4) = 0.;
455 outputValues(5, i0, 5) = 0.;
456 outputValues(5, i0, 6) = 0.;
457 outputValues(5, i0, 7) = 2. + 4.*z;
458 outputValues(5, i0, 8) = -1 + 4.*y;
459 outputValues(5, i0, 9) = 0.;
461 outputValues(6, i0, 0) = 0.;
462 outputValues(6, i0, 1) = 0.;
463 outputValues(6, i0, 2) = 4. - 8.*z;
464 outputValues(6, i0, 3) = 0.;
465 outputValues(6, i0, 4) = 2. - 4.*z;
466 outputValues(6, i0, 5) = -4.*(-1 + 2*x + y);
467 outputValues(6, i0, 6) = 0.;
468 outputValues(6, i0, 7) = 0.;
469 outputValues(6, i0, 8) = -4.*x;
470 outputValues(6, i0, 9) = 0.;
472 outputValues(7, i0, 0) = 0.;
473 outputValues(7, i0, 1) = 0.;
474 outputValues(7, i0, 2) = 0.;
475 outputValues(7, i0, 3) = 0.;
476 outputValues(7, i0, 4) = -2. + 4.*z;
477 outputValues(7, i0, 5) = 4.*y;
478 outputValues(7, i0, 6) = 0.;
479 outputValues(7, i0, 7) = 0.;
480 outputValues(7, i0, 8) = 4.*x;
481 outputValues(7, i0, 9) = 0.;
483 outputValues(8, i0, 0) = 0.;
484 outputValues(8, i0, 1) = 0.;
485 outputValues(8, i0, 2) = 0.;
486 outputValues(8, i0, 3) = 0.;
487 outputValues(8, i0, 4) = 2. - 4.*z;
488 outputValues(8, i0, 5) = -4.*y;
489 outputValues(8, i0, 6) = 0.;
490 outputValues(8, i0, 7) = 4. - 8.*z;
491 outputValues(8, i0, 8) = -4.*(-1 + x + 2*y);
492 outputValues(8, i0, 9) = 0.;
494 outputValues(9, i0, 0) = 0.;
495 outputValues(9, i0, 1) = 0.;
496 outputValues(9, i0, 2) = -8.*z;
497 outputValues(9, i0, 3) = 0.;
498 outputValues(9, i0, 4) = -8.*z;
499 outputValues(9, i0, 5) = 6. - 8.*x - 8.*y;
500 outputValues(9, i0, 6) = 0.;
501 outputValues(9, i0, 7) = -8.*z;
502 outputValues(9, i0, 8) = 6. - 8.*x - 8.*y;
503 outputValues(9, i0, 9) = 0.;
505 outputValues(10,i0, 0) = 0.;
506 outputValues(10,i0, 1) = 0.;
507 outputValues(10,i0, 2) = -8.*z;
508 outputValues(10,i0, 3) = 0.;
509 outputValues(10,i0, 4) = 0.;
510 outputValues(10,i0, 5) = 2. - 8.*x;
511 outputValues(10,i0, 6) = 0.;
512 outputValues(10,i0, 7) = 0.;
513 outputValues(10,i0, 8) = 0.;
514 outputValues(10,i0, 9) = 0.;
516 outputValues(11,i0, 0) = 0.;
517 outputValues(11,i0, 1) = 0.;
518 outputValues(11,i0, 2) = 0.;
519 outputValues(11,i0, 3) = 0.;
520 outputValues(11,i0, 4) = 0.;
521 outputValues(11,i0, 5) = 0.;
522 outputValues(11,i0, 6) = 0.;
523 outputValues(11,i0, 7) = -8.*z;
524 outputValues(11,i0, 8) = 2. - 8.*y;
525 outputValues(11,i0, 9) = 0.;
527 outputValues(12,i0, 0) = 0.;
528 outputValues(12,i0, 1) = 0.;
529 outputValues(12,i0, 2) = -4. - 8.*z;
530 outputValues(12,i0, 3) = 0.;
531 outputValues(12,i0, 4) = -2. - 4.*z;
532 outputValues(12,i0, 5) = -4.*(-1 + 2*x + y);
533 outputValues(12,i0, 6) = 0.;
534 outputValues(12,i0, 7) = 0.;
535 outputValues(12,i0, 8) = -4.*x;
536 outputValues(12,i0, 9) = 0.;
538 outputValues(13,i0, 0) = 0.;
539 outputValues(13,i0, 1) = 0.;
540 outputValues(13,i0, 2) = 0.;
541 outputValues(13,i0, 3) = 0.;
542 outputValues(13,i0, 4) = 2. + 4.*z;
543 outputValues(13,i0, 5) = 4.*y;
544 outputValues(13,i0, 6) = 0.;
545 outputValues(13,i0, 7) = 0.;
546 outputValues(13,i0, 8) = 4.*x;
547 outputValues(13,i0, 9) = 0.;
549 outputValues(14,i0, 0) = 0.;
550 outputValues(14,i0, 1) = 0.;
551 outputValues(14,i0, 2) = 0.;
552 outputValues(14,i0, 3) = 0.;
553 outputValues(14,i0, 4) = -2. - 4.*z;
554 outputValues(14,i0, 5) = -4.*y;
555 outputValues(14,i0, 6) = 0.;
556 outputValues(14,i0, 7) = -4. - 8.*z;
557 outputValues(14,i0, 8) = -4.*(-1 + x + 2*y);
558 outputValues(14,i0, 9) = 0.;
560 outputValues(15,i0, 0) = 0.;
561 outputValues(15,i0, 1) = 0.;
562 outputValues(15,i0, 2) = 16.*z;
563 outputValues(15,i0, 3) = 0.;
564 outputValues(15,i0, 4) = 8.*z;
565 outputValues(15,i0, 5) = 8.*(-1 + 2*x + y);
566 outputValues(15,i0, 6) = 0.;
567 outputValues(15,i0, 7) = 0.;
568 outputValues(15,i0, 8) = 8.*x;
569 outputValues(15,i0, 9) = 0.;
571 outputValues(16,i0, 0) = 0.;
572 outputValues(16,i0, 1) = 0.;
573 outputValues(16,i0, 2) = 0.;
574 outputValues(16,i0, 3) = 0.;
575 outputValues(16,i0, 4) = -8.*z;
576 outputValues(16,i0, 5) = -8.*y;
577 outputValues(16,i0, 6) = 0.;
578 outputValues(16,i0, 7) = 0.;
579 outputValues(16,i0, 8) = -8.*x;
580 outputValues(16,i0, 9) = 0.;
582 outputValues(17,i0, 0) = 0.;
583 outputValues(17,i0, 1) = 0.;
584 outputValues(17,i0, 2) = 0.;
585 outputValues(17,i0, 3) = 0.;
586 outputValues(17,i0, 4) = 8.*z;
587 outputValues(17,i0, 5) = 8.*y;
588 outputValues(17,i0, 6) = 0.;
589 outputValues(17,i0, 7) = 16.*z;
590 outputValues(17,i0, 8) = 8.*(-1 + x + 2*y);
591 outputValues(17,i0, 9) = 0.;
600 for(
int dofOrd = 0; dofOrd <
this -> basisCardinality_; dofOrd++) {
601 for (
int i0 = 0; i0 < dim0; i0++) {
602 for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
603 outputValues(dofOrd, i0, dkOrd) = 0.0;
608 for (
int i0 = 0; i0 < dim0; i0++) {
610 outputValues(0, i0, 5) = 4.;
611 outputValues(0, i0, 8) = 4.;
612 outputValues(0, i0,12) = 4.;
614 outputValues(1, i0, 5) = 4.;
616 outputValues(2, i0,12) = 4.;
618 outputValues(3, i0, 5) = 4.;
619 outputValues(3, i0, 8) = 4.;
620 outputValues(3, i0,12) = 4.;
622 outputValues(4, i0, 5) = 4.0;
624 outputValues(5, i0,12) = 4.0;
626 outputValues(6, i0, 5) =-8.;
627 outputValues(6, i0, 8) =-4.;
629 outputValues(7, i0, 8) = 4.;
631 outputValues(8, i0, 8) =-4.;
632 outputValues(8, i0,12) =-8.;
634 outputValues(9, i0, 5) =-8.;
635 outputValues(9, i0, 8) =-8.;
636 outputValues(9, i0,12) =-8.;
638 outputValues(10,i0, 5) =-8.;
640 outputValues(11,i0,12) =-8.;
642 outputValues(12,i0, 5) =-8.;
643 outputValues(12,i0, 8) =-4.;
645 outputValues(13,i0, 8) = 4.;
647 outputValues(14,i0, 8) =-4;
648 outputValues(14,i0,12) =-8.;
650 outputValues(15,i0, 5) =16.;
651 outputValues(15,i0, 8) = 8.;
653 outputValues(16,i0, 8) =-8.;
656 outputValues(17,i0, 8) = 8.;
657 outputValues(17,i0,12) =16.;
671 this -> basisCellTopology_.getDimension() );
672 for(
int dofOrd = 0; dofOrd <
this -> basisCardinality_; dofOrd++) {
673 for (
int i0 = 0; i0 < dim0; i0++) {
674 for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
675 outputValues(dofOrd, i0, dkOrd) = 0.0;
684 ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): Invalid operator type");
690 template<
class Scalar,
class ArrayScalar>
692 const ArrayScalar & inputPoints,
693 const ArrayScalar & cellVertices,
695 TEUCHOS_TEST_FOR_EXCEPTION( (
true), std::logic_error,
696 ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): FEM Basis calling an FVD member function");
void setOrdinalTagData(std::vector< std::vector< std::vector< int > > > &tagToOrdinal, std::vector< std::vector< int > > &ordinalToTag, const int *tags, const int basisCard, const int tagSize, const int posScDim, const int posScOrd, const int posDfOrd)
Fills ordinalToTag_ and tagToOrdinal_ by basis-specific tag data.
EOperator
Enumeration of primitive operators available in Intrepid. Primitive operators act on reconstructed fu...
void initializeTags()
Initializes tagToOrdinal_ and ordinalToTag_ lookup arrays.
void getValues(ArrayScalar &outputValues, const ArrayScalar &inputPoints, const EOperator operatorType) const
FEM basis evaluation on a reference Wedge cell.
int getDkCardinality(const EOperator operatorType, const int spaceDim)
Returns cardinality of Dk, i.e., the number of all derivatives of order k.
int isValidOperator(const EOperator operatorType)
Verifies validity of an operator enum.
Basis_HGRAD_WEDGE_C2_FEM()
Constructor.