33 const Order libmesh_dbg_var(order),
40 const Real eta = p(1);
41 const Real zeta = p(2);
43 libmesh_assert_less (i, (static_cast<unsigned int>(order)+1)*
44 (static_cast<unsigned int>(order)+2)*
45 (static_cast<unsigned int>(order)+3)/6);
109 return eta*zeta*zeta;
112 return zeta*zeta*zeta;
122 return xi*xi*eta*eta;
125 return xi*eta*eta*eta;
128 return eta*eta*eta*eta;
131 return xi*xi*xi*zeta;
134 return xi*xi*eta*zeta;
137 return xi*eta*eta*zeta;
140 return eta*eta*eta*zeta;
143 return xi*xi*zeta*zeta;
146 return xi*eta*zeta*zeta;
149 return eta*eta*zeta*zeta;
152 return xi*zeta*zeta*zeta;
155 return eta*zeta*zeta*zeta;
158 return zeta*zeta*zeta*zeta;
162 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
163 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
164 unsigned int block=o, nz = 0;
165 for (; block < i2; block += (o-nz+1)) { nz++; }
166 const unsigned int nx = block - i2;
167 const unsigned int ny = o - nx - nz;
169 for (
unsigned int index=0; index != nx; index++)
171 for (
unsigned int index=0; index != ny; index++)
173 for (
unsigned int index=0; index != nz; index++)
188 const unsigned int i,
191 libmesh_assert(elem);
201 const Order libmesh_dbg_var(order),
202 const unsigned int i,
203 const unsigned int j,
208 libmesh_assert_less (j, 3);
210 libmesh_assert_less (i, (static_cast<unsigned int>(order)+1)*
211 (static_cast<unsigned int>(order)+2)*
212 (static_cast<unsigned int>(order)+3)/6);
215 const Real xi = p(0);
216 const Real eta = p(1);
217 const Real zeta = p(2);
299 return 2.*xi*eta*eta;
308 return 3.*xi*xi*zeta;
311 return 2.*xi*eta*zeta;
320 return 2.*xi*zeta*zeta;
323 return eta*zeta*zeta;
329 return zeta*zeta*zeta;
339 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
340 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
341 unsigned int block=o, nz = 0;
342 for (; block < i2; block += (o-nz+1)) { nz++; }
343 const unsigned int nx = block - i2;
344 const unsigned int ny = o - nx - nz;
346 for (
unsigned int index=1; index < nx; index++)
348 for (
unsigned int index=0; index != ny; index++)
350 for (
unsigned int index=0; index != nz; index++)
437 return 3.*xi*eta*eta;
440 return 4.*eta*eta*eta;
449 return 2.*xi*eta*zeta;
452 return 3.*eta*eta*zeta;
461 return 2.*eta*zeta*zeta;
467 return zeta*zeta*zeta;
474 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
475 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
476 unsigned int block=o, nz = 0;
477 for (; block < i2; block += (o-nz+1)) { nz++; }
478 const unsigned int nx = block - i2;
479 const unsigned int ny = o - nx - nz;
481 for (
unsigned int index=0; index != nx; index++)
483 for (
unsigned int index=1; index < ny; index++)
485 for (
unsigned int index=0; index != nz; index++)
590 return 2.*xi*xi*zeta;
593 return 2.*xi*eta*zeta;
596 return 2.*eta*eta*zeta;
599 return 3.*xi*zeta*zeta;
602 return 3.*eta*zeta*zeta;
605 return 4.*zeta*zeta*zeta;
609 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
610 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
611 unsigned int block=o, nz = 0;
612 for (; block < i2; block += (o-nz+1)) { nz++; }
613 const unsigned int nx = block - i2;
614 const unsigned int ny = o - nx - nz;
616 for (
unsigned int index=0; index != nx; index++)
618 for (
unsigned int index=0; index != ny; index++)
620 for (
unsigned int index=1; index < nz; index++)
627 libmesh_error_msg(
"Invalid shape function derivative j = " << j);
640 const unsigned int i,
641 const unsigned int j,
644 libmesh_assert(elem);
654 const Order libmesh_dbg_var(order),
655 const unsigned int i,
656 const unsigned int j,
661 libmesh_assert_less (j, 6);
663 libmesh_assert_less (i, (static_cast<unsigned int>(order)+1)*
664 (static_cast<unsigned int>(order)+2)*
665 (static_cast<unsigned int>(order)+3)/6);
667 const Real xi = p(0);
668 const Real eta = p(1);
669 const Real zeta = p(2);
756 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
757 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
758 unsigned int block=o, nz = 0;
759 for (; block < i2; block += (o-nz+1)) { nz++; }
760 const unsigned int nx = block - i2;
761 const unsigned int ny = o - nx - nz;
762 Real val = nx * (nx - 1);
763 for (
unsigned int index=2; index < nx; index++)
765 for (
unsigned int index=0; index != ny; index++)
767 for (
unsigned int index=0; index != nz; index++)
862 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
863 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
864 unsigned int block=o, nz = 0;
865 for (; block < i2; block += (o-nz+1)) { nz++; }
866 const unsigned int nx = block - i2;
867 const unsigned int ny = o - nx - nz;
869 for (
unsigned int index=1; index < nx; index++)
871 for (
unsigned int index=1; index < ny; index++)
873 for (
unsigned int index=0; index != nz; index++)
967 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
968 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
969 unsigned int block=o, nz = 0;
970 for (; block < i2; block += (o-nz+1)) { nz++; }
971 const unsigned int nx = block - i2;
972 const unsigned int ny = o - nx - nz;
973 Real val = ny * (ny - 1);
974 for (
unsigned int index=0; index != nx; index++)
976 for (
unsigned int index=2; index < ny; index++)
978 for (
unsigned int index=0; index != nz; index++)
1065 return 3.*zeta*zeta;
1073 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1074 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
1075 unsigned int block=o, nz = 0;
1076 for (; block < i2; block += (o-nz+1)) { nz++; }
1077 const unsigned int nx = block - i2;
1078 const unsigned int ny = o - nx - nz;
1080 for (
unsigned int index=1; index < nx; index++)
1082 for (
unsigned int index=0; index != ny; index++)
1084 for (
unsigned int index=1; index < nz; index++)
1171 return 3.*zeta*zeta;
1178 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1179 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
1180 unsigned int block=o, nz = 0;
1181 for (; block < i2; block += (o-nz+1)) { nz++; }
1182 const unsigned int nx = block - i2;
1183 const unsigned int ny = o - nx - nz;
1185 for (
unsigned int index=0; index != nx; index++)
1187 for (
unsigned int index=1; index < ny; index++)
1189 for (
unsigned int index=1; index < nz; index++)
1268 return 12.*zeta*zeta;
1272 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1273 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
1274 unsigned int block=o, nz = 0;
1275 for (; block < i2; block += (o-nz+1)) { nz++; }
1276 const unsigned int nx = block - i2;
1277 const unsigned int ny = o - nx - nz;
1278 Real val = nz * (nz - 1);
1279 for (
unsigned int index=0; index != nx; index++)
1281 for (
unsigned int index=0; index != ny; index++)
1283 for (
unsigned int index=2; index < nz; index++)
1290 libmesh_error_msg(
"Invalid j = " << j);
1303 const unsigned int i,
1304 const unsigned int j,
1307 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
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)