32 const bool add_p_level)
37 const Order totalorder = order + add_p_level*elem->
p_level();
38 libmesh_assert_less(i, n_dofs(elem->
type(), totalorder));
43 const Real eta = p(1);
44 const Real zeta = p(2);
59 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*
TOLERANCE );
60 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*
TOLERANCE );
61 libmesh_assert_less_equal ( std::fabs(zeta), 1.0+10*
TOLERANCE );
66 return sign *
RealGradient( -0.125*(1.0-eta-zeta+eta*zeta), 0.0, 0.0 );
68 return sign *
RealGradient( 0.0, -0.125*(1.0+xi-zeta-xi*zeta), 0.0 );
70 return sign *
RealGradient( 0.125*(1.0+eta-zeta-eta*zeta), 0.0, 0.0 );
72 return sign *
RealGradient( 0.0, -0.125*(1.0-xi-zeta+xi*zeta), 0.0 );
74 return sign *
RealGradient( 0.0, 0.0, -0.125*(1.0-xi-eta+xi*eta) );
76 return sign *
RealGradient( 0.0, 0.0, -0.125*(1.0+xi-eta-xi*eta) );
78 return sign *
RealGradient( 0.0, 0.0, -0.125*(1.0+xi+eta+xi*eta) );
80 return sign *
RealGradient( 0.0, 0.0, -0.125*(1.0-xi+eta-xi*eta) );
82 return sign *
RealGradient( -0.125*(1.0-eta+zeta-eta*zeta), 0.0, 0.0 );
84 return sign *
RealGradient( 0.0, -0.125*(1.0+xi+zeta+xi*zeta), 0.0 );
86 return sign *
RealGradient( 0.125*(1.0+eta+zeta+eta*zeta), 0.0, 0.0 );
88 return sign *
RealGradient( 0.0, -0.125*(1.0-xi+zeta-xi*zeta), 0.0 );
91 libmesh_error_msg(
"Invalid i = " << i);
107 return sign *
RealGradient( -zeta, -zeta, -1.0+xi+eta );
114 libmesh_error_msg(
"Invalid i = " << i);
125 libmesh_error_msg(
"ERROR: Unsupported 3D FE order!: " << totalorder);
130 libmesh_not_implemented();
160 const unsigned int i,
161 const unsigned int j,
163 const bool add_p_level)
167 libmesh_assert_less (j, 3);
169 const Order totalorder = order + add_p_level*elem->
p_level();
170 libmesh_assert_less(i, n_dofs(elem->
type(), totalorder));
174 const Real xi = p(0);
175 const Real eta = p(1);
176 const Real zeta = p(2);
183 switch (elem->
type())
191 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*
TOLERANCE );
192 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*
TOLERANCE );
193 libmesh_assert_less_equal ( std::fabs(zeta), 1.0+10*
TOLERANCE );
212 return sign *
RealGradient( 0.0, 0.0, -0.125*(-1.0+eta) );
214 return sign *
RealGradient( 0.0, 0.0, -0.125*(1.0-eta) );
216 return sign *
RealGradient( 0.0, 0.0, -0.125*(1.0+eta) );
218 return sign *
RealGradient( 0.0, 0.0, -0.125*(-1.0-eta) );
220 return sign *
RealGradient( 0.0, -0.125*(1.0+zeta), 0.0 );
222 return sign *
RealGradient( 0.0, -0.125*(-1.0-zeta), 0.0 );
225 libmesh_error_msg(
"Invalid i = " << i);
241 return sign *
RealGradient( -0.125*(-1.0+zeta), 0.0, 0.0 );
243 return sign *
RealGradient( 0.125*(1.0-zeta), 0.0, 0.0 );
245 return sign *
RealGradient( 0.0, 0.0, -0.125*(-1.0+xi) );
247 return sign *
RealGradient( 0.0, 0.0, -0.125*(-1.0-xi) );
249 return sign *
RealGradient( 0.0, 0.0, -0.125*(1.0+xi) );
251 return sign *
RealGradient( 0.0, 0.0, -0.125*(1.0-xi) );
253 return sign *
RealGradient( -0.125*(-1.0-zeta), 0.0, 0.0 );
255 return sign *
RealGradient( 0.125*(1.0+zeta), 0.0, 0.0 );
258 libmesh_error_msg(
"Invalid i = " << i);
274 return sign *
RealGradient( -0.125*(-1.0+eta), 0.0, 0.0 );
276 return sign *
RealGradient( 0.0, -0.125*(-1.0-xi), 0.0 );
278 return sign *
RealGradient( 0.125*(-1.0-eta), 0.0, 0.0 );
280 return sign *
RealGradient( 0.0, -0.125*(-1.0+xi), 0.0 );
282 return sign *
RealGradient( -0.125*(1.0-eta), 0.0, 0.0 );
284 return sign *
RealGradient( 0.0, -0.125*(1.0+xi), 0.0 );
286 return sign *
RealGradient( 0.125*(1.0+eta), 0.0, 0.0 );
288 return sign *
RealGradient( 0.0, -0.125*(1.0-xi), 0.0 );
291 libmesh_error_msg(
"Invalid i = " << i);
297 libmesh_error_msg(
"Invalid j = " << j);
325 libmesh_error_msg(
"Invalid i = " << i);
348 libmesh_error_msg(
"Invalid i = " << i);
371 libmesh_error_msg(
"Invalid i = " << i);
377 libmesh_error_msg(
"Invalid j = " << j);
387 libmesh_error_msg(
"ERROR: Unsupported 3D FE order!: " << totalorder);
392 libmesh_not_implemented();