22#include "libmesh/fe.h"
23#include "libmesh/elem.h"
35 const Order libmesh_dbg_var(order),
41 libmesh_assert_less (i, (
static_cast<unsigned int>(order)+1)*
42 (
static_cast<unsigned int>(order)+2)/2);
45 const Real eta = p(1);
94 return xi*eta*eta*eta;
97 return eta*eta*eta*eta;
101 for (; i >= (o+1)*(o+2)/2; o++) { }
102 const int ny = i - (o*(o+1)/2);
103 const int nx = o - ny;
105 for (
int index=0; index != nx; index++)
107 for (
int index=0; index != ny; index++)
115 libmesh_not_implemented();
124 const unsigned int i,
126 const bool add_p_level)
138 const unsigned int i,
140 const bool add_p_level)
151 const Order libmesh_dbg_var(order),
152 const unsigned int i,
153 const unsigned int j,
159 libmesh_assert_less (j, 2);
161 libmesh_assert_less (i, (
static_cast<unsigned int>(order)+1)*
162 (
static_cast<unsigned int>(order)+2)/2);
164 const Real xi = p(0);
165 const Real eta = p(1);
218 return 2.*xi*eta*eta;
228 for (; i >= (o+1)*(o+2)/2; o++) { }
229 const int ny = i - (o*(o+1)/2);
230 const int nx = o - ny;
232 for (
int index=1; index < nx; index++)
234 for (
int index=0; index != ny; index++)
291 return 3.*xi*eta*eta;
294 return 4.*eta*eta*eta;
298 for (; i >= (o+1)*(o+2)/2; o++) { }
299 const int ny = i - (o*(o+1)/2);
300 const int nx = o - ny;
302 for (
int index=0; index != nx; index++)
304 for (
int index=1; index < ny; index++)
311 libmesh_error_msg(
"Invalid shape function derivative j = " << j);
317 libmesh_not_implemented();
326 const unsigned int i,
327 const unsigned int j,
329 const bool add_p_level)
342 const unsigned int i,
343 const unsigned int j,
345 const bool add_p_level)
353#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
357 const Order libmesh_dbg_var(order),
358 const unsigned int i,
359 const unsigned int j,
365 libmesh_assert_less_equal (j, 2);
367 libmesh_assert_less (i, (
static_cast<unsigned int>(order)+1)*
368 (
static_cast<unsigned int>(order)+2)/2);
370 const Real xi = p(0);
371 const Real eta = p(1);
424 for (; i >= (o+1)*(o+2)/2; o++) { }
425 const int ny = i - (o*(o+1)/2);
426 const int nx = o - ny;
427 Real val = nx * (nx - 1);
428 for (
int index=2; index < nx; index++)
430 for (
int index=0; index != ny; index++)
489 for (; i >= (o+1)*(o+2)/2; o++) { }
490 const int ny = i - (o*(o+1)/2);
491 const int nx = o - ny;
493 for (
int index=1; index < nx; index++)
495 for (
int index=1; index < ny; index++)
551 for (; i >= (o+1)*(o+2)/2; o++) { }
552 const int ny = i - (o*(o+1)/2);
553 const int nx = o - ny;
554 Real val = ny * (ny - 1);
555 for (
int index=0; index != nx; index++)
557 for (
int index=2; index < ny; index++)
564 libmesh_error_msg(
"Invalid shape function derivative j = " << j);
570 libmesh_not_implemented();
579 const unsigned int i,
580 const unsigned int j,
582 const bool add_p_level)
594 const unsigned int i,
595 const unsigned int j,
597 const bool add_p_level)
This is the base class from which all geometric element types are derived.
virtual ElemType type() const =0
unsigned int p_level() const
class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
OrderWrapper order
The approximation order of the element (at 0 p-refinement level).
static OutputShape shape(const ElemType t, const Order o, const unsigned int i, const Point &p)
static OutputShape shape_second_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
static OutputShape shape_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
A Point defines a location in LIBMESH_DIM dimensional Real space.
The libMesh namespace provides an interface to certain functionality in the library.
LIBMESH_DEFAULT_VECTORIZED_FE(template<>Real FE< 0, BERNSTEIN)
ElemType
Defines an enum for geometric element types.
void libmesh_ignore(const Args &...)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real