34 libmesh_error_msg(
"Nedelec elements require the element type \nbecause edge orientation is needed.");
61 libmesh_assert_less (i, 12);
64 const Real eta = p(1);
65 const Real zeta = p(2);
70 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*
TOLERANCE );
71 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*
TOLERANCE );
72 libmesh_assert_less_equal ( std::fabs(zeta), 1.0+10*
TOLERANCE );
79 return RealGradient( -0.125*(1.0-eta-zeta+eta*zeta), 0.0, 0.0 );
81 return RealGradient( 0.125*(1.0-eta-zeta+eta*zeta), 0.0, 0.0 );
86 return RealGradient( 0.0, -0.125*(1.0+xi-zeta-xi*zeta), 0.0 );
88 return RealGradient( 0.0, 0.125*(1.0+xi-zeta-xi*zeta), 0.0 );
93 return RealGradient( 0.125*(1.0+eta-zeta-eta*zeta), 0.0, 0.0 );
95 return RealGradient( -0.125*(1.0+eta-zeta-eta*zeta), 0.0, 0.0 );
100 return RealGradient( 0.0, 0.125*(1.0-xi-zeta+xi*zeta), 0.0 );
102 return RealGradient( 0.0, -0.125*(1.0-xi-zeta+xi*zeta), 0.0 );
107 return RealGradient( 0.0, 0.0, -0.125*(1.0-xi-eta+xi*eta) );
109 return RealGradient( 0.0, 0.0, 0.125*(1.0-xi-eta+xi*eta) );
114 return RealGradient( 0.0, 0.0, -0.125*(1.0+xi-eta-xi*eta) );
116 return RealGradient( 0.0, 0.0, 0.125*(1.0+xi-eta-xi*eta) );
121 return RealGradient( 0.0, 0.0, -0.125*(1.0+xi+eta+xi*eta) );
123 return RealGradient( 0.0, 0.0, 0.125*(1.0+xi+eta+xi*eta) );
128 return RealGradient( 0.0, 0.0, -0.125*(1.0-xi+eta-xi*eta) );
130 return RealGradient( 0.0, 0.0, 0.125*(1.0-xi+eta-xi*eta) );
135 return RealGradient( -0.125*(1.0-eta+zeta-eta*zeta), 0.0, 0.0 );
137 return RealGradient( 0.125*(1.0-eta+zeta-eta*zeta), 0.0, 0.0 );
142 return RealGradient( 0.0, -0.125*(1.0+xi+zeta+xi*zeta), 0.0 );
144 return RealGradient( 0.0, 0.125*(1.0+xi+zeta+xi*zeta), 0.0 );
149 return RealGradient( -0.125*(1.0+eta+zeta+eta*zeta), 0.0, 0.0 );
151 return RealGradient( 0.125*(1.0+eta+zeta+eta*zeta), 0.0, 0.0 );
156 return RealGradient( 0.0, -0.125*(1.0-xi+zeta-xi*zeta), 0.0 );
158 return RealGradient( 0.0, 0.125*(1.0-xi+zeta-xi*zeta), 0.0 );
162 libmesh_error_msg(
"Invalid i = " << i);
170 libmesh_assert_less (i, 6);
172 libmesh_not_implemented();
177 libmesh_error_msg(
"ERROR: Unsupported 3D element type!: " << elem->
type());
183 libmesh_error_msg(
"ERROR: Unsupported 3D FE order!: " << totalorder);
200 libmesh_error_msg(
"Nedelec elements require the element type \nbecause edge orientation is needed.");
207 const unsigned int i,
208 const unsigned int j,
212 libmesh_assert(elem);
213 libmesh_assert_less (j, 3);
221 switch (elem->
type())
226 libmesh_assert_less (i, 12);
228 const Real xi = p(0);
229 const Real eta = p(1);
230 const Real zeta = p(2);
235 libmesh_assert_less_equal ( std::fabs(xi), 1.0+
TOLERANCE );
236 libmesh_assert_less_equal ( std::fabs(eta), 1.0+
TOLERANCE );
237 libmesh_assert_less_equal ( std::fabs(zeta), 1.0+
TOLERANCE );
308 libmesh_error_msg(
"Invalid i = " << i);
380 libmesh_error_msg(
"Invalid i = " << i);
453 libmesh_error_msg(
"Invalid i = " << i);
459 libmesh_error_msg(
"Invalid j = " << j);
467 libmesh_assert_less (i, 6);
469 libmesh_not_implemented();
474 libmesh_error_msg(
"ERROR: Unsupported 3D element type!: " << elem->
type());
480 libmesh_error_msg(
"ERROR: Unsupported 3D FE order!: " << totalorder);
497 libmesh_error_msg(
"Nedelec elements require the element type \nbecause edge orientation is needed.");
506 const unsigned int i,
507 const unsigned int j,
508 const Point & libmesh_dbg_var(p))
512 libmesh_assert(elem);
520 libmesh_assert_less (j, 6);
529 switch (elem->
type())
534 libmesh_assert_less (i, 12);
537 const Real xi = p(0);
538 const Real eta = p(1);
539 const Real zeta = p(2);
542 libmesh_assert_less_equal ( std::fabs(xi), 1.0+
TOLERANCE );
543 libmesh_assert_less_equal ( std::fabs(eta), 1.0+
TOLERANCE );
544 libmesh_assert_less_equal ( std::fabs(zeta), 1.0+
TOLERANCE );
598 libmesh_error_msg(
"Invalid i = " << i);
654 libmesh_error_msg(
"Invalid i = " << i);
703 libmesh_error_msg(
"Invalid i = " << i);
716 libmesh_error_msg(
"Invalid j = " << j);
724 libmesh_assert_less (i, 6);
726 libmesh_not_implemented();
731 libmesh_error_msg(
"ERROR: Unsupported 3D element type!: " << elem->
type());
738 libmesh_error_msg(
"ERROR: Unsupported 3D FE order!: " << totalorder);
RealVectorValue RealGradient
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
static const Real TOLERANCE
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual ElemType type() const =0
A geometric point in (x,y,z) space.
const Point & point(const unsigned int i) const
static OutputShape shape_second_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)