220 const Order libmesh_dbg_var(order),
221 const unsigned int i,
222 const unsigned int j,
227 libmesh_assert_less (j, 3);
229 libmesh_assert_less (i, (
static_cast<unsigned int>(order)+1)*
230 (
static_cast<unsigned int>(order)+2)*
231 (
static_cast<unsigned int>(order)+3)/6);
234 const Real xi = p(0);
235 const Real eta = p(1);
236 const Real zeta = p(2);
318 return 2.*xi*eta*eta;
327 return 3.*xi*xi*zeta;
330 return 2.*xi*eta*zeta;
339 return 2.*xi*zeta*zeta;
342 return eta*zeta*zeta;
348 return zeta*zeta*zeta;
358 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
359 const int i2 = i - (o*(o+1)*(o+2)/6);
361 for (; block < i2; block += (o-nz+1)) { nz++; }
362 const int nx = block - i2;
363 const int ny = o - nx - nz;
365 for (
int index=1; index < nx; index++)
367 for (
int index=0; index != ny; index++)
369 for (
int index=0; index != nz; index++)
456 return 3.*xi*eta*eta;
459 return 4.*eta*eta*eta;
468 return 2.*xi*eta*zeta;
471 return 3.*eta*eta*zeta;
480 return 2.*eta*zeta*zeta;
486 return zeta*zeta*zeta;
493 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
494 const int i2 = i - (o*(o+1)*(o+2)/6);
496 for (; block < i2; block += (o-nz+1)) { nz++; }
497 const int nx = block - i2;
498 const int ny = o - nx - nz;
500 for (
int index=0; index != nx; index++)
502 for (
int index=1; index < ny; index++)
504 for (
int index=0; index != nz; index++)
609 return 2.*xi*xi*zeta;
612 return 2.*xi*eta*zeta;
615 return 2.*eta*eta*zeta;
618 return 3.*xi*zeta*zeta;
621 return 3.*eta*zeta*zeta;
624 return 4.*zeta*zeta*zeta;
628 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
629 const int i2 = i - (o*(o+1)*(o+2)/6);
631 for (; block < i2; block += (o-nz+1)) { nz++; }
632 const int nx = block - i2;
633 const int ny = o - nx - nz;
635 for (
int index=0; index != nx; index++)
637 for (
int index=0; index != ny; index++)
639 for (
int index=1; index < nz; index++)
646 libmesh_error_msg(
"Invalid shape function derivative j = " << j);
652 libmesh_not_implemented();
691 const Order libmesh_dbg_var(order),
692 const unsigned int i,
693 const unsigned int j,
698 libmesh_assert_less (j, 6);
700 libmesh_assert_less (i, (
static_cast<unsigned int>(order)+1)*
701 (
static_cast<unsigned int>(order)+2)*
702 (
static_cast<unsigned int>(order)+3)/6);
704 const Real xi = p(0);
705 const Real eta = p(1);
706 const Real zeta = p(2);
793 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
794 const int i2 = i - (o*(o+1)*(o+2)/6);
796 for (; block < i2; block += (o-nz+1)) { nz++; }
797 const int nx = block - i2;
798 const int ny = o - nx - nz;
799 Real val = nx * (nx - 1);
800 for (
int index=2; index < nx; index++)
802 for (
int index=0; index != ny; index++)
804 for (
int index=0; index != nz; index++)
899 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
900 const int i2 = i - (o*(o+1)*(o+2)/6);
902 for (; block < i2; block += (o-nz+1)) { nz++; }
903 const int nx = block - i2;
904 const int ny = o - nx - nz;
906 for (
int index=1; index < nx; index++)
908 for (
int index=1; index < ny; index++)
910 for (
int index=0; index != nz; index++)
1004 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1005 const int i2 = i - (o*(o+1)*(o+2)/6);
1006 int block=o, nz = 0;
1007 for (; block < i2; block += (o-nz+1)) { nz++; }
1008 const int nx = block - i2;
1009 const int ny = o - nx - nz;
1010 Real val = ny * (ny - 1);
1011 for (
int index=0; index != nx; index++)
1013 for (
int index=2; index < ny; index++)
1015 for (
int index=0; index != nz; index++)
1102 return 3.*zeta*zeta;
1110 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1111 const int i2 = i - (o*(o+1)*(o+2)/6);
1112 int block=o, nz = 0;
1113 for (; block < i2; block += (o-nz+1)) { nz++; }
1114 const int nx = block - i2;
1115 const int ny = o - nx - nz;
1117 for (
int index=1; index < nx; index++)
1119 for (
int index=0; index != ny; index++)
1121 for (
int index=1; index < nz; index++)
1208 return 3.*zeta*zeta;
1215 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1216 const int i2 = i - (o*(o+1)*(o+2)/6);
1217 int block=o, nz = 0;
1218 for (; block < i2; block += (o-nz+1)) { nz++; }
1219 const int nx = block - i2;
1220 const int ny = o - nx - nz;
1222 for (
int index=0; index != nx; index++)
1224 for (
int index=1; index < ny; index++)
1226 for (
int index=1; index < nz; index++)
1305 return 12.*zeta*zeta;
1309 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1310 const int i2 = i - (o*(o+1)*(o+2)/6);
1311 int block=o, nz = 0;
1312 for (; block < i2; block += (o-nz+1)) { nz++; }
1313 const int nx = block - i2;
1314 const int ny = o - nx - nz;
1315 Real val = nz * (nz - 1);
1316 for (
int index=0; index != nx; index++)
1318 for (
int index=0; index != ny; index++)
1320 for (
int index=2; index < nz; index++)
1327 libmesh_error_msg(
"Invalid j = " << j);
1333 libmesh_not_implemented();
static OutputShape shape_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)