52 libmesh_assert_less (i, 8);
56 const Real eta = p(1);
57 const Real zeta = p(2);
60 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0};
61 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1};
62 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1};
73 libmesh_assert_less (i, 4);
76 const Real zeta1 = p(0);
77 const Real zeta2 = p(1);
78 const Real zeta3 = p(2);
79 const Real zeta0 = 1. - zeta1 - zeta2 - zeta3;
96 libmesh_error_msg(
"Invalid i = " << i);
105 libmesh_assert_less (i, 6);
110 Point p2d(p(0),p(1));
114 static const unsigned int i0[] = {0, 0, 0, 1, 1, 1};
115 static const unsigned int i1[] = {0, 1, 2, 0, 1, 2};
126 libmesh_assert_less (i, 5);
128 const Real xi = p(0);
129 const Real eta = p(1);
130 const Real zeta = p(2);
131 const Real eps = 1.e-35;
136 return .25*(zeta + xi - 1.)*(zeta + eta - 1.)/((1. - zeta) + eps);
139 return .25*(zeta - xi - 1.)*(zeta + eta - 1.)/((1. - zeta) + eps);
142 return .25*(zeta - xi - 1.)*(zeta - eta - 1.)/((1. - zeta) + eps);
145 return .25*(zeta + xi - 1.)*(zeta - eta - 1.)/((1. - zeta) + eps);
151 libmesh_error_msg(
"Invalid i = " << i);
157 libmesh_error_msg(
"ERROR: Unsupported 3D element type!: " << type);
171 libmesh_assert_less (i, 20);
173 const Real xi = p(0);
174 const Real eta = p(1);
175 const Real zeta = p(2);
179 const Real x = .5*(xi + 1.);
180 const Real y = .5*(eta + 1.);
181 const Real z = .5*(zeta + 1.);
186 return (1. - x)*(1. - y)*(1. - z)*(1. - 2.*x - 2.*y - 2.*z);
189 return x*(1. - y)*(1. - z)*(2.*x - 2.*y - 2.*z - 1.);
192 return x*y*(1. - z)*(2.*x + 2.*y - 2.*z - 3.);
195 return (1. - x)*y*(1. - z)*(2.*y - 2.*x - 2.*z - 1.);
198 return (1. - x)*(1. - y)*z*(2.*z - 2.*x - 2.*y - 1.);
201 return x*(1. - y)*z*(2.*x - 2.*y + 2.*z - 3.);
204 return x*y*z*(2.*x + 2.*y + 2.*z - 5.);
207 return (1. - x)*y*z*(2.*y - 2.*x + 2.*z - 3.);
210 return 4.*x*(1. - x)*(1. - y)*(1. - z);
213 return 4.*x*y*(1. - y)*(1. - z);
216 return 4.*x*(1. - x)*y*(1. - z);
219 return 4.*(1. - x)*y*(1. - y)*(1. - z);
222 return 4.*(1. - x)*(1. - y)*z*(1. - z);
225 return 4.*x*(1. - y)*z*(1. - z);
228 return 4.*x*y*z*(1. - z);
231 return 4.*(1. - x)*y*z*(1. - z);
234 return 4.*x*(1. - x)*(1. - y)*z;
237 return 4.*x*y*(1. - y)*z;
240 return 4.*x*(1. - x)*y*z;
243 return 4.*(1. - x)*y*(1. - y)*z;
246 libmesh_error_msg(
"Invalid i = " << i);
253 libmesh_assert_less (i, 27);
256 const Real xi = p(0);
257 const Real eta = p(1);
258 const Real zeta = p(2);
264 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 0, 2, 2, 1, 2, 0, 2, 2};
265 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 2, 0, 2, 1, 2, 2, 2};
266 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, 1, 2};
276 libmesh_assert_less (i, 10);
279 const Real zeta1 = p(0);
280 const Real zeta2 = p(1);
281 const Real zeta3 = p(2);
282 const Real zeta0 = 1. - zeta1 - zeta2 - zeta3;
287 return zeta0*(2.*zeta0 - 1.);
290 return zeta1*(2.*zeta1 - 1.);
293 return zeta2*(2.*zeta2 - 1.);
296 return zeta3*(2.*zeta3 - 1.);
299 return 4.*zeta0*zeta1;
302 return 4.*zeta1*zeta2;
305 return 4.*zeta2*zeta0;
308 return 4.*zeta0*zeta3;
311 return 4.*zeta1*zeta3;
314 return 4.*zeta2*zeta3;
317 libmesh_error_msg(
"Invalid i = " << i);
324 libmesh_assert_less (i, 15);
326 const Real xi = p(0);
327 const Real eta = p(1);
328 const Real zeta = p(2);
333 return (1. - zeta)*(xi + eta - 1.)*(xi + eta + 0.5*zeta);
336 return (1. - zeta)*xi*(xi - 1. - 0.5*zeta);
339 return (1. - zeta)*eta*(eta - 1. - 0.5*zeta);
342 return (1. + zeta)*(xi + eta - 1.)*(xi + eta - 0.5*zeta);
345 return (1. + zeta)*xi*(xi - 1. + 0.5*zeta);
348 return (1. + zeta)*eta*(eta - 1. + 0.5*zeta);
351 return 2.*(1. - zeta)*xi*(1. - xi - eta);
354 return 2.*(1. - zeta)*xi*eta;
357 return 2.*(1. - zeta)*eta*(1. - xi - eta);
360 return (1. - zeta)*(1. + zeta)*(1. - xi - eta);
363 return (1. - zeta)*(1. + zeta)*xi;
366 return (1. - zeta)*(1. + zeta)*eta;
369 return 2.*(1. + zeta)*xi*(1. - xi - eta);
372 return 2.*(1. + zeta)*xi*eta;
375 return 2.*(1. + zeta)*eta*(1. - xi - eta);
378 libmesh_error_msg(
"Invalid i = " << i);
385 libmesh_assert_less (i, 18);
390 Point p2d(p(0),p(1));
394 static const unsigned int i0[] = {0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2};
395 static const unsigned int i1[] = {0, 1, 2, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 3, 4, 5};
406 libmesh_assert_less (i, 13);
408 const Real xi = p(0);
409 const Real eta = p(1);
410 const Real zeta = p(2);
411 const Real eps = 1.e-35;
415 Real den = (1. - zeta + eps);
420 return 0.25*(-xi - eta - 1.)*((1. - xi)*(1. - eta) - zeta + xi*eta*zeta/den);
423 return 0.25*(-eta + xi - 1.)*((1. + xi)*(1. - eta) - zeta - xi*eta*zeta/den);
426 return 0.25*(xi + eta - 1.)*((1. + xi)*(1. + eta) - zeta + xi*eta*zeta/den);
429 return 0.25*(eta - xi - 1.)*((1. - xi)*(1. + eta) - zeta - xi*eta*zeta/den);
432 return zeta*(2.*zeta - 1.);
435 return 0.5*(1. + xi - zeta)*(1. - xi - zeta)*(1. - eta - zeta)/den;
438 return 0.5*(1. + eta - zeta)*(1. - eta - zeta)*(1. + xi - zeta)/den;
441 return 0.5*(1. + xi - zeta)*(1. - xi - zeta)*(1. + eta - zeta)/den;
444 return 0.5*(1. + eta - zeta)*(1. - eta - zeta)*(1. - xi - zeta)/den;
447 return zeta*(1. - xi - zeta)*(1. - eta - zeta)/den;
450 return zeta*(1. + xi - zeta)*(1. - eta - zeta)/den;
453 return zeta*(1. + eta - zeta)*(1. + xi - zeta)/den;
456 return zeta*(1. - xi - zeta)*(1. + eta - zeta)/den;
459 libmesh_error_msg(
"Invalid i = " << i);
468 libmesh_assert_less (i, 14);
470 const Real xi = p(0);
471 const Real eta = p(1);
472 const Real zeta = p(2);
473 const Real eps = 1.e-35;
478 p1 = 0.5*(1. - eta - zeta),
479 p2 = 0.5*(1. + xi - zeta),
480 p3 = 0.5*(1. + eta - zeta),
481 p4 = 0.5*(1. - xi - zeta);
486 den = (-1. + zeta + eps),
492 return p4*p1*(xi*eta - zeta + zeta*zeta)/den2;
495 return -p1*p2*(xi*eta + zeta - zeta*zeta)/den2;
498 return p2*p3*(xi*eta - zeta + zeta*zeta)/den2;
501 return -p3*p4*(xi*eta + zeta - zeta*zeta)/den2;
504 return zeta*(2.*zeta - 1.);
507 return -4.*p2*p1*p4*eta/den2;
510 return 4.*p1*p2*p3*xi/den2;
513 return 4.*p2*p3*p4*eta/den2;
516 return -4.*p3*p4*p1*xi/den2;
519 return -4.*p1*p4*zeta/den;
522 return -4.*p2*p1*zeta/den;
525 return -4.*p3*p2*zeta/den;
528 return -4.*p4*p3*zeta/den;
531 return 16.*p1*p2*p3*p4/den2;
534 libmesh_error_msg(
"Invalid i = " << i);
540 libmesh_error_msg(
"ERROR: Unsupported 3D element type!: " << type);
547 libmesh_error_msg(
"ERROR: Unsupported 3D FE order!: " << order);
560 const unsigned int i,
563 libmesh_assert(elem);
575 const unsigned int i,
576 const unsigned int j,
581 libmesh_assert_less (j, 3);
595 libmesh_assert_less (i, 8);
598 const Real xi = p(0);
599 const Real eta = p(1);
600 const Real zeta = p(2);
602 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0};
603 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1};
604 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1};
624 libmesh_error_msg(
"Invalid j = " << j);
632 libmesh_assert_less (i, 4);
635 const Real dzeta0dxi = -1.;
636 const Real dzeta1dxi = 1.;
637 const Real dzeta2dxi = 0.;
638 const Real dzeta3dxi = 0.;
640 const Real dzeta0deta = -1.;
641 const Real dzeta1deta = 0.;
642 const Real dzeta2deta = 1.;
643 const Real dzeta3deta = 0.;
645 const Real dzeta0dzeta = -1.;
646 const Real dzeta1dzeta = 0.;
647 const Real dzeta2dzeta = 0.;
648 const Real dzeta3dzeta = 1.;
670 libmesh_error_msg(
"Invalid i = " << i);
692 libmesh_error_msg(
"Invalid i = " << i);
714 libmesh_error_msg(
"Invalid i = " << i);
719 libmesh_error_msg(
"Invalid shape function derivative j = " << j);
728 libmesh_assert_less (i, 6);
733 Point p2d(p(0),p(1));
737 static const unsigned int i0[] = {0, 0, 0, 1, 1, 1};
738 static const unsigned int i1[] = {0, 1, 2, 0, 1, 2};
758 libmesh_error_msg(
"Invalid shape function derivative j = " << j);
767 libmesh_assert_less (i, 5);
769 const Real xi = p(0);
770 const Real eta = p(1);
771 const Real zeta = p(2);
772 const Real eps = 1.e-35;
781 return .25*(zeta + eta - 1.)/((1. - zeta) + eps);
784 return -.25*(zeta + eta - 1.)/((1. - zeta) + eps);
787 return -.25*(zeta - eta - 1.)/((1. - zeta) + eps);
790 return .25*(zeta - eta - 1.)/((1. - zeta) + eps);
796 libmesh_error_msg(
"Invalid i = " << i);
805 return .25*(zeta + xi - 1.)/((1. - zeta) + eps);
808 return .25*(zeta - xi - 1.)/((1. - zeta) + eps);
811 return -.25*(zeta - xi - 1.)/((1. - zeta) + eps);
814 return -.25*(zeta + xi - 1.)/((1. - zeta) + eps);
820 libmesh_error_msg(
"Invalid i = " << i);
830 num = zeta*(2. - zeta) - 1.,
831 den = (1. - zeta + eps)*(1. - zeta + eps);
837 return .25*(num + xi*eta)/den;
841 return .25*(num - xi*eta)/den;
847 libmesh_error_msg(
"Invalid i = " << i);
852 libmesh_error_msg(
"Invalid j = " << j);
858 libmesh_error_msg(
"ERROR: Unsupported 3D element type!: " << type);
872 libmesh_assert_less (i, 20);
874 const Real xi = p(0);
875 const Real eta = p(1);
876 const Real zeta = p(2);
880 const Real x = .5*(xi + 1.);
881 const Real y = .5*(eta + 1.);
882 const Real z = .5*(zeta + 1.);
894 return .5*(1. - y)*(1. - z)*((1. - x)*(-2.) +
895 (-1.)*(1. - 2.*x - 2.*y - 2.*z));
898 return .5*(1. - y)*(1. - z)*(x*(2.) +
899 (1.)*(2.*x - 2.*y - 2.*z - 1.));
902 return .5*y*(1. - z)*(x*(2.) +
903 (1.)*(2.*x + 2.*y - 2.*z - 3.));
906 return .5*y*(1. - z)*((1. - x)*(-2.) +
907 (-1.)*(2.*y - 2.*x - 2.*z - 1.));
910 return .5*(1. - y)*z*((1. - x)*(-2.) +
911 (-1.)*(2.*z - 2.*x - 2.*y - 1.));
914 return .5*(1. - y)*z*(x*(2.) +
915 (1.)*(2.*x - 2.*y + 2.*z - 3.));
918 return .5*y*z*(x*(2.) +
919 (1.)*(2.*x + 2.*y + 2.*z - 5.));
922 return .5*y*z*((1. - x)*(-2.) +
923 (-1.)*(2.*y - 2.*x + 2.*z - 3.));
926 return 2.*(1. - y)*(1. - z)*(1. - 2.*x);
929 return 2.*y*(1. - y)*(1. - z);
932 return 2.*y*(1. - z)*(1. - 2.*x);
935 return 2.*y*(1. - y)*(1. - z)*(-1.);
938 return 2.*(1. - y)*z*(1. - z)*(-1.);
941 return 2.*(1. - y)*z*(1. - z);
944 return 2.*y*z*(1. - z);
947 return 2.*y*z*(1. - z)*(-1.);
950 return 2.*(1. - y)*z*(1. - 2.*x);
953 return 2.*y*(1. - y)*z;
956 return 2.*y*z*(1. - 2.*x);
959 return 2.*y*(1. - y)*z*(-1.);
962 libmesh_error_msg(
"Invalid i = " << i);
971 return .5*(1. - x)*(1. - z)*((1. - y)*(-2.) +
972 (-1.)*(1. - 2.*x - 2.*y - 2.*z));
975 return .5*x*(1. - z)*((1. - y)*(-2.) +
976 (-1.)*(2.*x - 2.*y - 2.*z - 1.));
979 return .5*x*(1. - z)*(y*(2.) +
980 (1.)*(2.*x + 2.*y - 2.*z - 3.));
983 return .5*(1. - x)*(1. - z)*(y*(2.) +
984 (1.)*(2.*y - 2.*x - 2.*z - 1.));
987 return .5*(1. - x)*z*((1. - y)*(-2.) +
988 (-1.)*(2.*z - 2.*x - 2.*y - 1.));
991 return .5*x*z*((1. - y)*(-2.) +
992 (-1.)*(2.*x - 2.*y + 2.*z - 3.));
995 return .5*x*z*(y*(2.) +
996 (1.)*(2.*x + 2.*y + 2.*z - 5.));
999 return .5*(1. - x)*z*(y*(2.) +
1000 (1.)*(2.*y - 2.*x + 2.*z - 3.));
1003 return 2.*x*(1. - x)*(1. - z)*(-1.);
1006 return 2.*x*(1. - z)*(1. - 2.*y);
1009 return 2.*x*(1. - x)*(1. - z);
1012 return 2.*(1. - x)*(1. - z)*(1. - 2.*y);
1015 return 2.*(1. - x)*z*(1. - z)*(-1.);
1018 return 2.*x*z*(1. - z)*(-1.);
1021 return 2.*x*z*(1. - z);
1024 return 2.*(1. - x)*z*(1. - z);
1027 return 2.*x*(1. - x)*z*(-1.);
1030 return 2.*x*z*(1. - 2.*y);
1033 return 2.*x*(1. - x)*z;
1036 return 2.*(1. - x)*z*(1. - 2.*y);
1039 libmesh_error_msg(
"Invalid i = " << i);
1048 return .5*(1. - x)*(1. - y)*((1. - z)*(-2.) +
1049 (-1.)*(1. - 2.*x - 2.*y - 2.*z));
1052 return .5*x*(1. - y)*((1. - z)*(-2.) +
1053 (-1.)*(2.*x - 2.*y - 2.*z - 1.));
1056 return .5*x*y*((1. - z)*(-2.) +
1057 (-1.)*(2.*x + 2.*y - 2.*z - 3.));
1060 return .5*(1. - x)*y*((1. - z)*(-2.) +
1061 (-1.)*(2.*y - 2.*x - 2.*z - 1.));
1064 return .5*(1. - x)*(1. - y)*(z*(2.) +
1065 (1.)*(2.*z - 2.*x - 2.*y - 1.));
1068 return .5*x*(1. - y)*(z*(2.) +
1069 (1.)*(2.*x - 2.*y + 2.*z - 3.));
1072 return .5*x*y*(z*(2.) +
1073 (1.)*(2.*x + 2.*y + 2.*z - 5.));
1076 return .5*(1. - x)*y*(z*(2.) +
1077 (1.)*(2.*y - 2.*x + 2.*z - 3.));
1080 return 2.*x*(1. - x)*(1. - y)*(-1.);
1083 return 2.*x*y*(1. - y)*(-1.);
1086 return 2.*x*(1. - x)*y*(-1.);
1089 return 2.*(1. - x)*y*(1. - y)*(-1.);
1092 return 2.*(1. - x)*(1. - y)*(1. - 2.*z);
1095 return 2.*x*(1. - y)*(1. - 2.*z);
1098 return 2.*x*y*(1. - 2.*z);
1101 return 2.*(1. - x)*y*(1. - 2.*z);
1104 return 2.*x*(1. - x)*(1. - y);
1107 return 2.*x*y*(1. - y);
1110 return 2.*x*(1. - x)*y;
1113 return 2.*(1. - x)*y*(1. - y);
1116 libmesh_error_msg(
"Invalid i = " << i);
1120 libmesh_error_msg(
"Invalid shape function derivative j = " << j);
1127 libmesh_assert_less (i, 27);
1130 const Real xi = p(0);
1131 const Real eta = p(1);
1132 const Real zeta = p(2);
1138 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 0, 2, 2, 1, 2, 0, 2, 2};
1139 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 2, 0, 2, 1, 2, 2, 2};
1140 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, 1, 2};
1160 libmesh_error_msg(
"Invalid j = " << j);
1167 libmesh_assert_less (i, 10);
1170 const Real zeta1 = p(0);
1171 const Real zeta2 = p(1);
1172 const Real zeta3 = p(2);
1173 const Real zeta0 = 1. - zeta1 - zeta2 - zeta3;
1175 const Real dzeta0dxi = -1.;
1176 const Real dzeta1dxi = 1.;
1177 const Real dzeta2dxi = 0.;
1178 const Real dzeta3dxi = 0.;
1180 const Real dzeta0deta = -1.;
1181 const Real dzeta1deta = 0.;
1182 const Real dzeta2deta = 1.;
1183 const Real dzeta3deta = 0.;
1185 const Real dzeta0dzeta = -1.;
1186 const Real dzeta1dzeta = 0.;
1187 const Real dzeta2dzeta = 0.;
1188 const Real dzeta3dzeta = 1.;
1198 return (4.*zeta0 - 1.)*dzeta0dxi;
1201 return (4.*zeta1 - 1.)*dzeta1dxi;
1204 return (4.*zeta2 - 1.)*dzeta2dxi;
1207 return (4.*zeta3 - 1.)*dzeta3dxi;
1210 return 4.*(zeta0*dzeta1dxi + dzeta0dxi*zeta1);
1213 return 4.*(zeta1*dzeta2dxi + dzeta1dxi*zeta2);
1216 return 4.*(zeta0*dzeta2dxi + dzeta0dxi*zeta2);
1219 return 4.*(zeta0*dzeta3dxi + dzeta0dxi*zeta3);
1222 return 4.*(zeta1*dzeta3dxi + dzeta1dxi*zeta3);
1225 return 4.*(zeta2*dzeta3dxi + dzeta2dxi*zeta3);
1228 libmesh_error_msg(
"Invalid i = " << i);
1238 return (4.*zeta0 - 1.)*dzeta0deta;
1241 return (4.*zeta1 - 1.)*dzeta1deta;
1244 return (4.*zeta2 - 1.)*dzeta2deta;
1247 return (4.*zeta3 - 1.)*dzeta3deta;
1250 return 4.*(zeta0*dzeta1deta + dzeta0deta*zeta1);
1253 return 4.*(zeta1*dzeta2deta + dzeta1deta*zeta2);
1256 return 4.*(zeta0*dzeta2deta + dzeta0deta*zeta2);
1259 return 4.*(zeta0*dzeta3deta + dzeta0deta*zeta3);
1262 return 4.*(zeta1*dzeta3deta + dzeta1deta*zeta3);
1265 return 4.*(zeta2*dzeta3deta + dzeta2deta*zeta3);
1268 libmesh_error_msg(
"Invalid i = " << i);
1278 return (4.*zeta0 - 1.)*dzeta0dzeta;
1281 return (4.*zeta1 - 1.)*dzeta1dzeta;
1284 return (4.*zeta2 - 1.)*dzeta2dzeta;
1287 return (4.*zeta3 - 1.)*dzeta3dzeta;
1290 return 4.*(zeta0*dzeta1dzeta + dzeta0dzeta*zeta1);
1293 return 4.*(zeta1*dzeta2dzeta + dzeta1dzeta*zeta2);
1296 return 4.*(zeta0*dzeta2dzeta + dzeta0dzeta*zeta2);
1299 return 4.*(zeta0*dzeta3dzeta + dzeta0dzeta*zeta3);
1302 return 4.*(zeta1*dzeta3dzeta + dzeta1dzeta*zeta3);
1305 return 4.*(zeta2*dzeta3dzeta + dzeta2dzeta*zeta3);
1308 libmesh_error_msg(
"Invalid i = " << i);
1313 libmesh_error_msg(
"Invalid j = " << j);
1321 libmesh_assert_less (i, 15);
1323 const Real xi = p(0);
1324 const Real eta = p(1);
1325 const Real zeta = p(2);
1335 return (2.*xi + 2.*eta + 0.5*zeta - 1.)*(1. - zeta);
1337 return (2.*xi - 1. - 0.5*zeta)*(1. - zeta);
1341 return (2.*xi + 2.*eta - 0.5*zeta - 1.)*(1. + zeta);
1343 return (2.*xi - 1. + 0.5*zeta)*(1. + zeta);
1347 return (4.*xi + 2.*eta - 2.)*(zeta - 1.);
1349 return -2.*(zeta - 1.)*eta;
1351 return 2.*(zeta - 1.)*eta;
1353 return (zeta - 1.)*(1. + zeta);
1355 return (1. - zeta)*(1. + zeta);
1359 return (-4.*xi - 2.*eta + 2.)*(1. + zeta);
1361 return 2.*(1. + zeta)*eta;
1363 return -2.*(1. + zeta)*eta;
1365 libmesh_error_msg(
"Invalid i = " << i);
1375 return (2.*xi + 2.*eta + 0.5*zeta - 1.)*(1. - zeta);
1379 return (2.*eta - 1. - 0.5*zeta)*(1. - zeta);
1381 return (2.*xi + 2.*eta - 0.5*zeta - 1.)*(1. + zeta);
1385 return (2.*eta - 1. + 0.5*zeta)*(1. + zeta);
1387 return 2.*(zeta - 1.)*xi;
1389 return 2.*(1. - zeta)*xi;
1391 return (2.*xi + 4.*eta - 2.)*(zeta - 1.);
1393 return (zeta - 1.)*(1. + zeta);
1397 return (1. - zeta)*(1. + zeta);
1399 return -2.*(1. + zeta)*xi;
1401 return 2.*(1. + zeta)*xi;
1403 return (-2.*xi - 4.*eta + 2.)*(1. + zeta);
1406 libmesh_error_msg(
"Invalid i = " << i);
1416 return (-xi - eta - zeta + 0.5)*(xi + eta - 1.);
1418 return -0.5*xi*(2.*xi - 1. - 2.*zeta);
1420 return -0.5*eta*(2.*eta - 1. - 2.*zeta);
1422 return (xi + eta - zeta - 0.5)*(xi + eta - 1.);
1424 return 0.5*xi*(2.*xi - 1. + 2.*zeta);
1426 return 0.5*eta*(2.*eta - 1. + 2.*zeta);
1428 return 2.*xi*(xi + eta - 1.);
1432 return 2.*eta*(xi + eta - 1.);
1434 return 2.*zeta*(xi + eta - 1.);
1438 return -2.*eta*zeta;
1440 return 2.*xi*(1. - xi - eta);
1444 return 2.*eta*(1. - xi - eta);
1447 libmesh_error_msg(
"Invalid i = " << i);
1452 libmesh_error_msg(
"Invalid j = " << j);
1461 libmesh_assert_less (i, 18);
1466 Point p2d(p(0),p(1));
1470 static const unsigned int i0[] = {0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2};
1471 static const unsigned int i1[] = {0, 1, 2, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 3, 4, 5};
1491 libmesh_error_msg(
"Invalid shape function derivative j = " << j);
1500 libmesh_assert_less (i, 13);
1502 const Real xi = p(0);
1503 const Real eta = p(1);
1504 const Real zeta = p(2);
1505 const Real eps = 1.e-35;
1510 den = (-1. + zeta + eps),
1524 return 0.25*(-zeta - eta + 2.*eta*zeta - 2.*xi + 2.*zeta*xi + 2.*eta*xi + zeta2 + eta2)/den;
1527 return -0.25*(-zeta - eta + 2.*eta*zeta + 2.*xi - 2.*zeta*xi - 2.*eta*xi + zeta2 + eta2)/den;
1530 return -0.25*(-zeta + eta - 2.*eta*zeta + 2.*xi - 2.*zeta*xi + 2.*eta*xi + zeta2 + eta2)/den;
1533 return 0.25*(-zeta + eta - 2.*eta*zeta - 2.*xi + 2.*zeta*xi - 2.*eta*xi + zeta2 + eta2)/den;
1539 return -(-1. + eta + zeta)*xi/den;
1542 return 0.5*(-1. + eta + zeta)*(1. + eta - zeta)/den;
1545 return (1. + eta - zeta)*xi/den;
1548 return -0.5*(-1. + eta + zeta)*(1. + eta - zeta)/den;
1551 return -(-1. + eta + zeta)*zeta/den;
1554 return (-1. + eta + zeta)*zeta/den;
1557 return -(1. + eta - zeta)*zeta/den;
1560 return (1. + eta - zeta)*zeta/den;
1563 libmesh_error_msg(
"Invalid i = " << i);
1571 return 0.25*(-zeta - 2.*eta + 2.*eta*zeta - xi + 2.*zeta*xi + 2.*eta*xi + zeta2 + xi2)/den;
1574 return -0.25*(zeta + 2.*eta - 2.*eta*zeta - xi + 2.*zeta*xi + 2.*eta*xi - zeta2 - xi2)/den;
1577 return -0.25*(-zeta + 2.*eta - 2.*eta*zeta + xi - 2.*zeta*xi + 2.*eta*xi + zeta2 + xi2)/den;
1580 return 0.25*(zeta - 2.*eta + 2.*eta*zeta + xi - 2.*zeta*xi + 2.*eta*xi - zeta2 - xi2)/den;
1586 return -0.5*(-1. + xi + zeta)*(1. + xi - zeta)/den;
1589 return (1. + xi - zeta)*eta/den;
1592 return 0.5*(-1. + xi + zeta)*(1. + xi - zeta)/den;
1595 return -(-1. + xi + zeta)*eta/den;
1598 return -(-1. + xi + zeta)*zeta/den;
1601 return (1. + xi - zeta)*zeta/den;
1604 return -(1. + xi - zeta)*zeta/den;
1607 return (-1. + xi + zeta)*zeta/den;
1610 libmesh_error_msg(
"Invalid i = " << i);
1619 return -0.25*(xi + eta + 1.)*(-1. + 2.*zeta - zeta2 + eta*xi)/den2;
1622 return 0.25*(eta - xi + 1.)*(1. - 2.*zeta + zeta2 + eta*xi)/den2;
1625 return 0.25*(xi + eta - 1.)*(-1. + 2.*zeta - zeta2 + eta*xi)/den2;
1628 return -0.25*(eta - xi - 1.)*(1. - 2.*zeta + zeta2 + eta*xi)/den2;
1631 return 4.*zeta - 1.;
1634 return 0.5*(-2 + eta + 6.*zeta + eta*xi2 + eta*zeta2 - 6.*zeta2 + 2.*zeta3 - 2.*eta*zeta)/den2;
1637 return -0.5*(2 - 6.*zeta + xi + xi*zeta2 + eta2*xi + 6.*zeta2 - 2.*zeta3 - 2.*zeta*xi)/den2;
1640 return -0.5*(2 + eta - 6.*zeta + eta*xi2 + eta*zeta2 + 6.*zeta2 - 2.*zeta3 - 2.*eta*zeta)/den2;
1643 return 0.5*(-2 + 6.*zeta + xi + xi*zeta2 + eta2*xi - 6.*zeta2 + 2.*zeta3 - 2.*zeta*xi)/den2;
1646 return (1. - eta - 4.*zeta - xi - xi*zeta2 - eta*zeta2 + eta*xi + 5.*zeta2 - 2.*zeta3 + 2.*eta*zeta + 2.*zeta*xi)/den2;
1649 return -(-1. + eta + 4.*zeta - xi - xi*zeta2 + eta*zeta2 + eta*xi - 5.*zeta2 + 2.*zeta3 - 2.*eta*zeta + 2.*zeta*xi)/den2;
1652 return (1. + eta - 4.*zeta + xi + xi*zeta2 + eta*zeta2 + eta*xi + 5.*zeta2 - 2.*zeta3 - 2.*eta*zeta - 2.*zeta*xi)/den2;
1655 return -(-1. - eta + 4.*zeta + xi + xi*zeta2 - eta*zeta2 + eta*xi - 5.*zeta2 + 2.*zeta3 + 2.*eta*zeta - 2.*zeta*xi)/den2;
1658 libmesh_error_msg(
"Invalid i = " << i);
1663 libmesh_error_msg(
"Invalid j = " << j);
1672 libmesh_assert_less (i, 14);
1674 const Real xi = p(0);
1675 const Real eta = p(1);
1676 const Real zeta = p(2);
1677 const Real eps = 1.e-35;
1682 p1 = 0.5*(1. - eta - zeta),
1683 p2 = 0.5*(1. + xi - zeta),
1684 p3 = 0.5*(1. + eta - zeta),
1685 p4 = 0.5*(1. - xi - zeta);
1690 den = (-1. + zeta + eps),
1701 return 0.5*p1*(-xi*eta + zeta - zeta*zeta + 2.*p4*eta)/den2;
1704 return -0.5*p1*(xi*eta + zeta - zeta*zeta + 2.*p2*eta)/den2;
1707 return 0.5*p3*(xi*eta - zeta + zeta*zeta + 2.*p2*eta)/den2;
1710 return -0.5*p3*(-xi*eta - zeta + zeta*zeta + 2.*p4*eta)/den2;
1716 return 2.*p1*eta*xi/den2;
1719 return 2.*p1*p3*(xi + 2.*p2)/den2;
1722 return -2.*p3*eta*xi/den2;
1725 return -2.*p1*p3*(-xi + 2.*p4)/den2;
1728 return 2.*p1*zeta/den;
1731 return -2.*p1*zeta/den;
1734 return -2.*p3*zeta/den;
1737 return 2.*p3*zeta/den;
1740 return -8.*p1*p3*xi/den2;
1743 libmesh_error_msg(
"Invalid i = " << i);
1751 return -0.5*p4*(xi*eta - zeta + zeta*zeta - 2.*p1*xi)/den2;
1754 return 0.5*p2*(xi*eta + zeta - zeta*zeta - 2.*p1*xi)/den2;
1757 return 0.5*p2*(xi*eta - zeta + zeta*zeta + 2.*p3*xi)/den2;
1760 return -0.5*p4*(xi*eta + zeta - zeta*zeta + 2.*p3*xi)/den2;
1766 return 2.*p2*p4*(eta - 2.*p1)/den2;
1769 return -2.*p2*xi*eta/den2;
1772 return 2.*p2*p4*(eta + 2.*p3)/den2;
1775 return 2.*p4*xi*eta/den2;
1778 return 2.*p4*zeta/den;
1781 return 2.*p2*zeta/den;
1784 return -2.*p2*zeta/den;
1787 return -2.*p4*zeta/den;
1790 return -8.*p2*p4*eta/den2;
1793 libmesh_error_msg(
"Invalid i = " << i);
1803 return -0.5*p1*(xi*eta - zeta + zeta*zeta)/den2
1804 - 0.5*p4*(xi*eta - zeta + zeta*zeta)/den2
1805 + p4*p1*(2.*zeta - 1)/den2
1806 - 2.*p4*p1*(xi*eta - zeta + zeta*zeta)/den3;
1809 return 0.5*p2*(xi*eta + zeta - zeta*zeta)/den2
1810 + 0.5*p1*(xi*eta + zeta - zeta*zeta)/den2
1811 - p1*p2*(1 - 2.*zeta)/den2
1812 + 2.*p1*p2*(xi*eta + zeta - zeta*zeta)/den3;
1815 return -0.5*p3*(xi*eta - zeta + zeta*zeta)/den2
1816 - 0.5*p2*(xi*eta - zeta + zeta*zeta)/den2
1817 + p2*p3*(2.*zeta - 1)/den2
1818 - 2.*p2*p3*(xi*eta - zeta + zeta*zeta)/den3;
1821 return 0.5*p4*(xi*eta + zeta - zeta*zeta)/den2
1822 + 0.5*p3*(xi*eta + zeta - zeta*zeta)/den2
1823 - p3*p4*(1 - 2.*zeta)/den2
1824 + 2.*p3*p4*(xi*eta + zeta - zeta*zeta)/den3;
1827 return 4.*zeta - 1.;
1830 return 2.*p4*p1*eta/den2
1833 + 8.*p2*p1*p4*eta/den3;
1836 return -2.*p2*p3*xi/den2
1839 - 8.*p1*p2*p3*xi/den3;
1842 return -2.*p3*p4*eta/den2
1845 - 8.*p2*p3*p4*eta/den3;
1848 return 2.*p4*p1*xi/den2
1851 + 8.*p3*p4*p1*xi/den3;
1854 return 2.*p4*zeta/den
1857 + 4.*p1*p4*zeta/den2;
1860 return 2.*p1*zeta/den
1863 + 4.*p2*p1*zeta/den2;
1866 return 2.*p2*zeta/den
1869 + 4.*p3*p2*zeta/den2;
1872 return 2.*p3*zeta/den
1875 + 4.*p4*p3*zeta/den2;
1878 return -8.*p2*p3*p4/den2
1882 - 32.*p1*p2*p3*p4/den3;
1885 libmesh_error_msg(
"Invalid i = " << i);
1890 libmesh_error_msg(
"Invalid j = " << j);
1896 libmesh_error_msg(
"ERROR: Unsupported 3D element type!: " << type);
1903 libmesh_error_msg(
"ERROR: Unsupported 3D FE order!: " << order);
1916 const unsigned int i,
1917 const unsigned int j,
1920 libmesh_assert(elem);
1931 const unsigned int i,
1932 const unsigned int j,
1935 #if LIBMESH_DIM == 3 1937 libmesh_assert_less (j, 6);
1961 libmesh_assert_less (i, 6);
1966 Point p2d(p(0),p(1));
1970 static const unsigned int i0[] = {0, 0, 0, 1, 1, 1};
1971 static const unsigned int i1[] = {0, 1, 2, 0, 1, 2};
1993 libmesh_error_msg(
"Invalid j = " << j);
2001 libmesh_assert_less (i, 5);
2003 const Real xi = p(0);
2004 const Real eta = p(1);
2005 const Real zeta = p(2);
2006 const Real eps = 1.e-35;
2021 return 0.25/(1. - zeta + eps);
2024 return -0.25/(1. - zeta + eps);
2028 libmesh_error_msg(
"Invalid i = " << i);
2034 Real den = (1. - zeta + eps)*(1. - zeta + eps);
2040 return 0.25*eta/den;
2043 return -0.25*eta/den;
2047 libmesh_error_msg(
"Invalid i = " << i);
2053 Real den = (1. - zeta + eps)*(1. - zeta + eps);
2062 return -0.25*xi/den;
2066 libmesh_error_msg(
"Invalid i = " << i);
2072 Real den = (1. - zeta + eps)*(1. - zeta + eps)*(1. - zeta + eps);
2078 return 0.5*xi*eta/den;
2081 return -0.5*xi*eta/den;
2085 libmesh_error_msg(
"Invalid i = " << i);
2090 libmesh_error_msg(
"Invalid j = " << j);
2099 libmesh_assert_less (i, 8);
2102 const Real xi = p(0);
2103 const Real eta = p(1);
2104 const Real zeta = p(2);
2106 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0};
2107 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1};
2108 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1};
2136 libmesh_error_msg(
"Invalid j = " << j);
2141 libmesh_error_msg(
"ERROR: Unsupported 3D element type!: " << type);
2155 libmesh_assert_less (i, 20);
2157 const Real xi = p(0);
2158 const Real eta = p(1);
2159 const Real zeta = p(2);
2163 const Real x = .5*(xi + 1.);
2164 const Real y = .5*(eta + 1.);
2165 const Real z = .5*(zeta + 1.);
2175 return (1. - y) * (1. - z);
2178 return y * (1. - z);
2181 return (1. - y) * z;
2186 return -2. * (1. - y) * (1. - z);
2188 return -2. * y * (1. - z);
2190 return -2. * (1. - y) * z;
2203 libmesh_error_msg(
"Invalid i = " << i);
2211 return (1.25 - x - y - .5*z) * (1. - z);
2213 return (-x + y + .5*z - .25) * (1. - z);
2215 return (x + y - .5*z - .75) * (1. - z);
2217 return (-y + x + .5*z - .25) * (1. - z);
2219 return -.25*z * (4.*x + 4.*y - 2.*z - 3);
2221 return -.25*z * (-4.*y + 4.*x + 2.*z - 1.);
2223 return .25*z * (-5 + 4.*x + 4.*y + 2.*z);
2225 return .25*z * (4.*x - 4.*y - 2.*z + 1.);
2227 return (-1. + 2.*x) * (1. - z);
2229 return (1. - 2.*y) * (1. - z);
2231 return (1. - 2.*x) * (1. - z);
2233 return (-1. + 2.*y) * (1. - z);
2235 return z * (1. - z);
2237 return -z * (1. - z);
2239 return z * (1. - z);
2241 return -z * (1. - z);
2243 return (-1. + 2.*x) * z;
2245 return (1. - 2.*y) * z;
2247 return (1. - 2.*x) * z;
2249 return (-1. + 2.*y) * z;
2251 libmesh_error_msg(
"Invalid i = " << i);
2259 return (1. - x) * (1. - z);
2262 return x * (1. - z);
2265 return (1. - x) * z;
2270 return -2. * x * (1. - z);
2272 return -2. * (1. - x) * (1. - z);
2276 return -2. * (1. - x) * z;
2287 libmesh_error_msg(
"Invalid i = " << i);
2293 return (1.25 - x - .5*y - z) * (1. - y);
2295 return (-x + .5*y + z - .25) * (1. - y);
2297 return -.25*y * (2.*y + 4.*x - 4.*z - 1.);
2299 return -.25*y * (-2.*y + 4.*x + 4.*z - 3);
2301 return (-z + x + .5*y - .25) * (1. - y);
2303 return (x - .5*y + z - .75) * (1. - y);
2305 return .25*y * (2.*y + 4.*x + 4.*z - 5);
2307 return .25*y * (-2.*y + 4.*x - 4.*z + 1.);
2309 return (-1. + 2.*x) * (1. - y);
2311 return -y * (1. - y);
2313 return (-1. + 2.*x) * y;
2315 return y * (1. - y);
2317 return (-1. + 2.*z) * (1. - y);
2319 return (1. - 2.*z) * (1. - y);
2321 return (1. - 2.*z) * y;
2323 return (-1. + 2.*z) * y;
2325 return (1. - 2.*x) * (1. - y);
2327 return y * (1. - y);
2329 return (1. - 2.*x) * y;
2331 return -y * (1. - y);
2333 libmesh_error_msg(
"Invalid i = " << i);
2339 return (1.25 - .5*x - y - z) * (1. - x);
2341 return .25*x * (2.*x - 4.*y - 4.*z + 3.);
2343 return -.25*x * (2.*x + 4.*y - 4.*z - 1.);
2345 return (-y + .5*x + z - .25) * (1. - x);
2347 return (-z + .5*x + y - .25) * (1. - x);
2349 return -.25*x * (2.*x - 4.*y + 4.*z - 1.);
2351 return .25*x * (2.*x + 4.*y + 4.*z - 5);
2353 return (y - .5*x + z - .75) * (1. - x);
2355 return x * (1. - x);
2357 return (-1. + 2.*y) * x;
2359 return -x * (1. - x);
2361 return (-1. + 2.*y) * (1. - x);
2363 return (-1. + 2.*z) * (1. - x);
2365 return (-1. + 2.*z) * x;
2367 return (1. - 2.*z) * x;
2369 return (1. - 2.*z) * (1. - x);
2371 return -x * (1. - x);
2373 return (1. - 2.*y) * x;
2375 return x * (1. - x);
2377 return (1. - 2.*y) * (1. - x);
2379 libmesh_error_msg(
"Invalid i = " << i);
2386 return (1. - x) * (1. - y);
2389 return x * (1. - y);
2395 return (1. - x) * y;
2397 return -2. * (1. - x) * (1. - y);
2399 return -2. * x * (1. - y);
2403 return -2. * (1. - x) * y;
2414 libmesh_error_msg(
"Invalid i = " << i);
2417 libmesh_error_msg(
"Invalid j = " << j);
2424 libmesh_assert_less (i, 27);
2427 const Real xi = p(0);
2428 const Real eta = p(1);
2429 const Real zeta = p(2);
2435 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 0, 2, 2, 1, 2, 0, 2, 2};
2436 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 2, 0, 2, 1, 2, 2, 2};
2437 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, 1, 2};
2478 libmesh_error_msg(
"Invalid j = " << j);
2491 static const Real dzetadxi[4][3] =
2501 static const unsigned short int independent_var_indices[6][2] =
2515 static const unsigned short int zeta_indices[10][2] =
2530 const unsigned int my_j = independent_var_indices[j][0];
2531 const unsigned int my_k = independent_var_indices[j][1];
2535 return 4.*dzetadxi[i][my_j]*dzetadxi[i][my_k];
2540 const unsigned short int my_m = zeta_indices[i][0];
2541 const unsigned short int my_n = zeta_indices[i][1];
2543 return 4.*(dzetadxi[my_n][my_j]*dzetadxi[my_m][my_k] +
2544 dzetadxi[my_m][my_j]*dzetadxi[my_n][my_k] );
2547 libmesh_error_msg(
"Invalid shape function index " << i);
2555 libmesh_assert_less (i, 15);
2557 const Real xi = p(0);
2558 const Real eta = p(1);
2559 const Real zeta = p(2);
2570 return 2.*(1. - zeta);
2583 return 2.*(1. + zeta);
2585 return 4.*(zeta - 1);
2587 return -4.*(1. + zeta);
2589 libmesh_error_msg(
"Invalid i = " << i);
2600 return 2.*(1. - zeta);
2611 return 2.*(1. + zeta);
2614 return 2.*(zeta - 1.);
2617 return -2.*(1. + zeta);
2619 libmesh_error_msg(
"Invalid i = " << i);
2630 return 2.*(1. - zeta);
2643 return 2.*(1. + zeta);
2645 return 4.*(zeta - 1.);
2647 return -4.*(1. + zeta);
2649 libmesh_error_msg(
"Invalid i = " << i);
2659 return 1.5 - zeta - 2.*xi - 2.*eta;
2661 return 0.5 + zeta - 2.*xi;
2667 return -1.5 - zeta + 2.*xi + 2.*eta;
2669 return -0.5 + zeta + 2.*xi;
2671 return 4.*xi + 2.*eta - 2.;
2681 return -4.*xi - 2.*eta + 2.;
2687 libmesh_error_msg(
"Invalid i = " << i);
2697 return 1.5 - zeta - 2.*xi - 2.*eta;
2703 return .5 + zeta - 2.*eta;
2705 return -1.5 - zeta + 2.*xi + 2.*eta;
2707 return -.5 + zeta + 2.*eta;
2713 return 2.*xi + 4.*eta - 2.;
2723 return -2.*xi - 4.*eta + 2.;
2725 libmesh_error_msg(
"Invalid i = " << i);
2736 return 1. - xi - eta;
2751 return 2.*xi + 2.*eta - 2.;
2757 libmesh_error_msg(
"Invalid i = " << i);
2762 libmesh_error_msg(
"Invalid j = " << j);
2771 libmesh_assert_less (i, 18);
2776 Point p2d(p(0),p(1));
2780 static const unsigned int i0[] = {0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2};
2781 static const unsigned int i1[] = {0, 1, 2, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 3, 4, 5};
2816 libmesh_error_msg(
"Invalid shape function derivative j = " << j);
2826 libmesh_assert_less (i, 14);
2828 const Real xi = p(0);
2829 const Real eta = p(1);
2830 const Real zeta = p(2);
2831 const Real eps = 1.e-35;
2836 p1 = 0.5*(1. - eta - zeta),
2837 p2 = 0.5*(1. + xi - zeta),
2838 p3 = 0.5*(1. + eta - zeta),
2839 p4 = 0.5*(1. - xi - zeta);
2844 den = (-1. + zeta + eps),
2851 numer_mp = xi*eta - zeta + zeta*zeta,
2852 numer_pm = xi*eta + zeta - zeta*zeta;
2862 return -p1*eta/den2;
2873 return 2.*p1*eta/den2;
2876 return 4.*p1*p3/den2;
2878 return -2.*p3*eta/den2;
2880 return -8.*p1*p3/den2;
2882 libmesh_error_msg(
"Invalid i = " << i);
2891 return 0.25*numer_mp/den2
2897 return 0.25*numer_pm/den2
2903 return 0.25*numer_mp/den2
2909 return 0.25*numer_pm/den2
2950 return 4.*p4*p1/den2
2956 libmesh_error_msg(
"Invalid i = " << i);
2979 return 4.*p2*p4/den2;
2981 return -2.*p2*xi/den2;
2983 return 2.*p4*xi/den2;
2985 return -8.*p2*p4/den2;
2987 libmesh_error_msg(
"Invalid i = " << i);
2997 return 0.25*numer_mp/den2
2998 - 0.5*p1*(2.*zeta - 1.)/den2
3002 - 2.*p4*p1*eta/den3;
3005 return 0.25*numer_pm/den2
3006 - 0.5*p1*(1 - 2.*zeta)/den2
3010 + 2.*p1*p2*eta/den3;
3013 return -0.25*numer_mp/den2
3014 + 0.5*p3*(2.*zeta - 1.)/den2
3018 - 2.*p2*p3*eta/den3;
3021 return -0.25*numer_pm/den2
3022 + 0.5*p3*(1 - 2.*zeta)/den2
3026 + 2.*p3*p4*eta/den3;
3035 - 4.*p1*p2*eta/den3;
3050 + 4.*p2*p3*eta/den3;
3082 return -4.*p4*p1/den2
3087 + 16.*p1*p2*p3/den3;
3090 libmesh_error_msg(
"Invalid i = " << i);
3099 return 0.25*numer_mp/den2
3100 - 0.5*p4*(2.*zeta - 1.)/den2
3107 return -0.25*numer_pm/den2
3108 + 0.5*p2*(1. - 2.*zeta)/den2
3115 return -0.25*numer_mp/den2
3116 + 0.5*p2*(2.*zeta - 1.)/den2
3123 return 0.25*numer_pm/den2
3124 - 0.5*p4*(1. - 2.*zeta)/den2
3184 return 4.*p3*p4/den2
3189 - 16.*p2*p1*p4/den3;
3192 libmesh_error_msg(
"Invalid i = " << i);
3201 return 0.5*numer_mp/den2
3202 - p1*(2.*zeta - 1.)/den2
3203 + 2.*p1*numer_mp/den3
3204 - p4*(2.*zeta - 1.)/den2
3205 + 2.*p4*numer_mp/den3
3207 - 4.*p4*p1*(2.*zeta - 1.)/den3
3208 + 6.*p4*p1*numer_mp/den4;
3211 return -0.5*numer_pm/den2
3212 + p2*(1 - 2.*zeta)/den2
3213 - 2.*p2*numer_pm/den3
3214 + p1*(1 - 2.*zeta)/den2
3215 - 2.*p1*numer_pm/den3
3217 + 4.*p1*p2*(1 - 2.*zeta)/den3
3218 - 6.*p1*p2*numer_pm/den4;
3221 return 0.5*numer_mp/den2
3222 - p3*(2.*zeta - 1.)/den2
3223 + 2.*p3*numer_mp/den3
3224 - p2*(2.*zeta - 1.)/den2
3225 + 2.*p2*numer_mp/den3
3227 - 4.*p2*p3*(2.*zeta - 1.)/den3
3228 + 6.*p2*p3*numer_mp/den4;
3231 return -0.5*numer_pm/den2
3232 + p4*(1 - 2.*zeta)/den2
3233 - 2.*p4*numer_pm/den3
3234 + p3*(1 - 2.*zeta)/den2
3235 - 2.*p3*numer_pm/den3
3237 + 4.*p3*p4*(1 - 2.*zeta)/den3
3238 - 6.*p3*p4*numer_pm/den4;
3244 return -2.*p1*eta/den2
3250 - 24.*p2*p1*p4*eta/den4;
3253 return 2.*p3*xi/den2
3259 + 24.*p1*p2*p3*xi/den4;
3262 return 2.*p4*eta/den2
3268 + 24.*p2*p3*p4*eta/den4;
3271 return -2.*p1*xi/den2
3277 - 24.*p3*p4*p1*xi/den4;
3286 - 8.*p1*p4*zeta/den3;
3295 - 8.*p2*p1*zeta/den3;
3304 - 8.*p3*p2*zeta/den3;
3313 - 8.*p4*p3*zeta/den3;
3316 return 8.*p3*p4/den2
3326 + 96.*p1*p2*p3*p4/den4;
3329 libmesh_error_msg(
"Invalid i = " << i);
3334 libmesh_error_msg(
"Invalid j = " << j);
3343 libmesh_assert_less (i, 13);
3345 const Real xi = p(0);
3346 const Real eta = p(1);
3347 const Real zeta = p(2);
3348 const Real eps = 1.e-35;
3353 den = (-1. + zeta + eps),
3369 return 0.5*(-1. + zeta + eta)/den;
3373 return 0.5*(-1. + zeta - eta)/den;
3385 return (1. - eta - zeta)/den;
3388 return (1. + eta - zeta)/den;
3391 libmesh_error_msg(
"Invalid i = " << i);
3400 return 0.25*(-1. + 2.*zeta + 2.*xi + 2.*eta)/den;
3403 return -0.25*(-1. + 2.*zeta - 2.*xi + 2.*eta)/den;
3406 return -0.25*(1. - 2.*zeta + 2.*xi + 2.*eta)/den;
3409 return 0.25*(1. - 2.*zeta - 2.*xi + 2.*eta)/den;
3439 libmesh_error_msg(
"Invalid i = " << i);
3450 return 0.5*(-1. + zeta + xi)/den;
3454 return 0.5*(-1. + zeta - xi)/den;
3466 return (1. + xi - zeta)/den;
3469 return (1. - xi - zeta)/den;
3472 libmesh_error_msg(
"Invalid i = " << i);
3482 return -0.25*(-1. + 2.*zeta - zeta2 + eta + 2.*eta*xi + eta2)/den2;
3485 return 0.25*(-1. + 2.*zeta - zeta2 + eta - 2.*eta*xi + eta2)/den2;
3488 return 0.25*(-1. + 2.*zeta - zeta2 - eta + 2.*eta*xi + eta2)/den2;
3491 return -0.25*(-1. + 2.*zeta - zeta2 - eta - 2.*eta*xi + eta2)/den2;
3500 return -0.5*(1. + zeta2 + eta2 - 2.*zeta)/den2;
3503 return -eta*xi/den2;
3506 return 0.5*(1. + zeta2 + eta2 - 2.*zeta)/den2;
3509 return (-1. - zeta2 + eta + 2.*zeta)/den2;
3512 return -(-1. - zeta2 + eta + 2.*zeta)/den2;
3515 return (1. + zeta2 + eta - 2.*zeta)/den2;
3518 return -(1. + zeta2 + eta - 2.*zeta)/den2;
3521 libmesh_error_msg(
"Invalid i = " << i);
3530 return -0.25*(-1. + 2.*zeta - zeta2 + xi + 2.*eta*xi + xi2)/den2;
3533 return 0.25*(1. - 2.*zeta + zeta2 + xi + 2.*eta*xi - xi2)/den2;
3536 return 0.25*(-1. + 2.*zeta - zeta2 - xi + 2.*eta*xi + xi2)/den2;
3539 return -0.25*(1. - 2.*zeta + zeta2 - xi + 2.*eta*xi - xi2)/den2;
3545 return 0.5*(1. + xi2 + zeta2 - 2.*zeta)/den2;
3548 return -eta*xi/den2;
3551 return -0.5*(1. + xi2 + zeta2 - 2.*zeta)/den2;
3557 return (-1. - zeta2 + xi + 2.*zeta)/den2;
3560 return -(1. + zeta2 + xi - 2.*zeta)/den2;
3563 return (1. + zeta2 + xi - 2.*zeta)/den2;
3566 return -(-1. - zeta2 + xi + 2.*zeta)/den2;
3569 libmesh_error_msg(
"Invalid i = " << i);
3578 return 0.5*(xi + eta + 1.)*eta*xi/den3;
3581 return -0.5*(eta - xi + 1.)*eta*xi/den3;
3584 return -0.5*(xi + eta - 1.)*eta*xi/den3;
3587 return 0.5*(eta - xi - 1.)*eta*xi/den3;
3593 return -(1. - 3.*zeta + 3.*zeta2 - zeta3 + eta*xi2)/den3;
3596 return (-1. + 3.*zeta - 3.*zeta2 + zeta3 + eta2*xi)/den3;
3599 return (-1. + 3.*zeta - 3.*zeta2 + zeta3 + eta*xi2)/den3;
3602 return -(1. - 3.*zeta + 3.*zeta2 - zeta3 + eta2*xi)/den3;
3605 return -2.*(-1. + 3.*zeta - 3.*zeta2 + zeta3 + eta*xi)/den3;
3608 return 2.*(1. - 3.*zeta + 3.*zeta2 - zeta3 + eta*xi)/den3;
3611 return -2.*(-1. + 3.*zeta - 3.*zeta2 + zeta3 + eta*xi)/den3;
3614 return 2.*(1. - 3.*zeta + 3.*zeta2 - zeta3 + eta*xi)/den3;
3617 libmesh_error_msg(
"Invalid i = " << i);
3622 libmesh_error_msg(
"Invalid j = " << j);
3627 libmesh_error_msg(
"ERROR: Unsupported 3D element type!: " << type);
3634 libmesh_error_msg(
"ERROR: Unsupported 3D FE order!: " << order);
3647 const unsigned int i,
3648 const unsigned int j,
3651 libmesh_assert(elem);
static OutputShape shape(const ElemType t, const Order o, const unsigned int i, const Point &p)
The base class for all geometric element types.
static OutputShape shape_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
unsigned int p_level() const
Template class which generates the different FE families and orders.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual ElemType type() const =0
A geometric point in (x,y,z) space.
static OutputShape shape_second_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)