171 const unsigned int i,
172 const VectorType<T> & p)
191 libmesh_assert_less(i, 4);
194 static const unsigned int i0[] = {0, 1, 1, 0};
195 static const unsigned int i1[] = {0, 0, 1, 1};
205 const T zeta1 = p(0);
206 const T zeta2 = p(1);
207 const T zeta0 = 1. - zeta1 - zeta2;
209 libmesh_assert_less(i, 3);
223 mooseError(
"Invalid shape function index i = ", i);
228 mooseError(
"Unsupported element type:", type);
243 libmesh_assert_less(i, 8);
248 return .25 * (1. -
xi) * (1. -
eta) * (-1. -
xi -
eta);
250 return .25 * (1. +
xi) * (1. -
eta) * (-1. +
xi -
eta);
252 return .25 * (1. +
xi) * (
eta + 1.) * (-1. +
xi +
eta);
254 return .25 * (1. -
xi) * (
eta + 1.) * (-1. -
xi +
eta);
256 return .5 * (1. -
xi *
xi) * (1. -
eta);
258 return .5 * (1. +
xi) * (1. -
eta *
eta);
260 return .5 * (1. -
xi *
xi) * (1. +
eta);
262 return .5 * (1. -
xi) * (1. -
eta *
eta);
264 mooseError(
"Invalid shape function index i = ", i);
273 libmesh_assert_less(i, 9);
276 static const unsigned int i0[] = {0, 1, 1, 0, 2, 1, 2, 0, 2};
277 static const unsigned int i1[] = {0, 0, 1, 1, 0, 2, 1, 2, 2};
285 const T zeta1 = p(0);
286 const T zeta2 = p(1);
287 const T zeta0 = 1. - zeta1 - zeta2;
289 libmesh_assert_less(i, 6);
294 return 2. * zeta0 * (zeta0 - 0.5);
297 return 2. * zeta1 * (zeta1 - 0.5);
300 return 2. * zeta2 * (zeta2 - 0.5);
303 return 4. * zeta0 * zeta1;
306 return 4. * zeta1 * zeta2;
309 return 4. * zeta2 * zeta0;
312 mooseError(
"Invalid shape function index i = ", i);
328 const T zeta1 = p(0);
329 const T zeta2 = p(1);
330 const T zeta0 = 1. - zeta1 - zeta2;
331 const T bubble_27th = zeta0 * zeta1 * zeta2;
333 libmesh_assert_less(i, 7);
338 return 2. * zeta0 * (zeta0 - 0.5) + 3. * bubble_27th;
341 return 2. * zeta1 * (zeta1 - 0.5) + 3. * bubble_27th;
344 return 2. * zeta2 * (zeta2 - 0.5) + 3. * bubble_27th;
347 return 4. * zeta0 * zeta1 - 12. * bubble_27th;
350 return 4. * zeta1 * zeta2 - 12. * bubble_27th;
353 return 4. * zeta2 * zeta0 - 12. * bubble_27th;
356 return 27. * bubble_27th;
359 mooseError(
"Invalid shape function index i = ", i);
378 const unsigned int i,
379 const unsigned int j,
380 const VectorType<T> & p)
382 libmesh_assert_less(j, 2);
401 libmesh_assert_less(i, 4);
404 static const unsigned int i0[] = {0, 1, 1, 0};
405 static const unsigned int i1[] = {0, 0, 1, 1};
420 mooseError(
"Invalid derivative index j = ", j);
429 libmesh_assert_less(i, 3);
431 const T dzeta0dxi = -1.;
432 const T dzeta1dxi = 1.;
433 const T dzeta2dxi = 0.;
435 const T dzeta0deta = -1.;
436 const T dzeta1deta = 0.;
437 const T dzeta2deta = 1.;
456 mooseError(
"Invalid shape function index i = ", i);
474 mooseError(
"Invalid shape function index i = ", i);
478 mooseError(
"Invalid derivative index j = ", j);
498 libmesh_assert_less(i, 8);
507 return .25 * (1. -
eta) * ((1. -
xi) * (-1.) + (-1.) * (-1. -
xi -
eta));
510 return .25 * (1. -
eta) * ((1. +
xi) * (1.) + (1.) * (-1. +
xi -
eta));
513 return .25 * (1. +
eta) * ((1. +
xi) * (1.) + (1.) * (-1. +
xi +
eta));
516 return .25 * (1. +
eta) * ((1. -
xi) * (-1.) + (-1.) * (-1. -
xi +
eta));
519 return .5 * (-2. *
xi) * (1. -
eta);
522 return .5 * (1.) * (1. -
eta *
eta);
525 return .5 * (-2. *
xi) * (1. +
eta);
528 return .5 * (-1.) * (1. -
eta *
eta);
531 mooseError(
"Invalid shape function index i = ", i);
539 return .25 * (1. -
xi) * ((1. -
eta) * (-1.) + (-1.) * (-1. -
xi -
eta));
542 return .25 * (1. +
xi) * ((1. -
eta) * (-1.) + (-1.) * (-1. +
xi -
eta));
545 return .25 * (1. +
xi) * ((1. +
eta) * (1.) + (1.) * (-1. +
xi +
eta));
548 return .25 * (1. -
xi) * ((1. +
eta) * (1.) + (1.) * (-1. -
xi +
eta));
551 return .5 * (1. -
xi *
xi) * (-1.);
554 return .5 * (1. +
xi) * (-2. *
eta);
557 return .5 * (1. -
xi *
xi) * (1.);
560 return .5 * (1. -
xi) * (-2. *
eta);
563 mooseError(
"Invalid shape function index i = ", i);
567 mooseError(
"ERROR: Invalid derivative index j = ", j);
577 libmesh_assert_less(i, 9);
580 static const unsigned int i0[] = {0, 1, 1, 0, 2, 1, 2, 0, 2};
581 static const unsigned int i1[] = {0, 0, 1, 1, 0, 2, 1, 2, 2};
596 mooseError(
"Invalid derivative index j = ", j);
603 libmesh_assert_less(i, 6);
605 const T zeta1 = p(0);
606 const T zeta2 = p(1);
607 const T zeta0 = 1. - zeta1 - zeta2;
609 const T dzeta0dxi = -1.;
610 const T dzeta1dxi = 1.;
611 const T dzeta2dxi = 0.;
613 const T dzeta0deta = -1.;
614 const T dzeta1deta = 0.;
615 const T dzeta2deta = 1.;
624 return (4. * zeta0 - 1.) * dzeta0dxi;
627 return (4. * zeta1 - 1.) * dzeta1dxi;
630 return (4. * zeta2 - 1.) * dzeta2dxi;
633 return 4. * zeta1 * dzeta0dxi + 4. * zeta0 * dzeta1dxi;
636 return 4. * zeta2 * dzeta1dxi + 4. * zeta1 * dzeta2dxi;
639 return 4. * zeta2 * dzeta0dxi + 4 * zeta0 * dzeta2dxi;
642 mooseError(
"Invalid shape function index i = ", i);
651 return (4. * zeta0 - 1.) * dzeta0deta;
654 return (4. * zeta1 - 1.) * dzeta1deta;
657 return (4. * zeta2 - 1.) * dzeta2deta;
660 return 4. * zeta1 * dzeta0deta + 4. * zeta0 * dzeta1deta;
663 return 4. * zeta2 * dzeta1deta + 4. * zeta1 * dzeta2deta;
666 return 4. * zeta2 * dzeta0deta + 4 * zeta0 * dzeta2deta;
669 mooseError(
"Invalid shape function index i = ", i);
673 mooseError(
"ERROR: Invalid derivative index j = ", j);
678 mooseError(
"ERROR: Unsupported 2D element type");
689 libmesh_assert_less(i, 7);
691 const T zeta1 = p(0);
692 const T zeta2 = p(1);
693 const T zeta0 = 1. - zeta1 - zeta2;
695 const T dzeta0dxi = -1.;
696 const T dzeta1dxi = 1.;
697 const T dzeta2dxi = 0.;
698 const T dbubbledxi = zeta2 * (1. - 2. * zeta1 - zeta2);
700 const T dzeta0deta = -1.;
701 const T dzeta1deta = 0.;
702 const T dzeta2deta = 1.;
703 const T dbubbledeta = zeta1 * (1. - zeta1 - 2. * zeta2);
712 return (4. * zeta0 - 1.) * dzeta0dxi + 3. * dbubbledxi;
715 return (4. * zeta1 - 1.) * dzeta1dxi + 3. * dbubbledxi;
718 return (4. * zeta2 - 1.) * dzeta2dxi + 3. * dbubbledxi;
721 return 4. * zeta1 * dzeta0dxi + 4. * zeta0 * dzeta1dxi - 12. * dbubbledxi;
724 return 4. * zeta2 * dzeta1dxi + 4. * zeta1 * dzeta2dxi - 12. * dbubbledxi;
727 return 4. * zeta2 * dzeta0dxi + 4 * zeta0 * dzeta2dxi - 12. * dbubbledxi;
730 return 27. * dbubbledxi;
733 mooseError(
"Invalid shape function index i = ", i);
742 return (4. * zeta0 - 1.) * dzeta0deta + 3. * dbubbledeta;
745 return (4. * zeta1 - 1.) * dzeta1deta + 3. * dbubbledeta;
748 return (4. * zeta2 - 1.) * dzeta2deta + 3. * dbubbledeta;
751 return 4. * zeta1 * dzeta0deta + 4. * zeta0 * dzeta1deta - 12. * dbubbledeta;
754 return 4. * zeta2 * dzeta1deta + 4. * zeta1 * dzeta2deta - 12. * dbubbledeta;
757 return 4. * zeta2 * dzeta0deta + 4 * zeta0 * dzeta2deta - 12. * dbubbledeta;
760 return 27. * dbubbledeta;
763 mooseError(
"Invalid shape function index i = ", i);
767 mooseError(
"ERROR: Invalid derivative index j = ", j);
772 mooseError(
"ERROR: Unsupported 2D element type");