16 #ifndef GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_ELEMENTFORMULATIONS_LAGRANGEBASIS4GL_HPP_
17 #define GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_ELEMENTFORMULATIONS_LAGRANGEBASIS4GL_HPP_
84 switch( supportPointIndex )
158 return (1.0/8.0)*(-1.0+xi)*xi*(-3.0+7.0*xi*xi);
170 return (49.0/24.0)*(
sqrt3_7-xi)*xi*(-1.0+xi*xi);
182 return (1.0/3.0)*(3.0-10.0*xi*xi+7.0*xi*xi*xi*xi);
194 return -(49.0/24.0)*(
sqrt3_7+xi)*xi*(-1.0+xi*xi);
206 return (1.0/8.0)*(1.0+xi)*xi*(-3.0+7.0*xi*xi);
258 return (1.0/8.0)*(3.0+xi*(-6.0+7.0*xi*(-3.0+4.0*xi)));
284 return (4.0/3.0)*xi*(-5.0+7.0*xi*xi);
310 return (1.0/8.0)*(-3.0+xi*(-6.0+7.0*xi*(3.0+4.0*xi)));
330 case 0:
return -5.0000000000000000000;
331 case 1:
return -1.2409902530309828578;
332 case 2:
return 0.37500000000000000000;
338 case 0:
return 6.7565024887242400038;
340 case 2:
return -1.3365845776954533353;
346 case 0:
return -2.6666666666666666667;
347 case 1:
return 1.7457431218879390501;
354 case 0:
return 1.4101641779424266628;
355 case 1:
return -0.7637626158259733344;
356 case 2:
return 1.3365845776954533353;
362 case 0:
return -0.50000000000000000000;
363 case 1:
return 0.25900974696901714215;
364 case 2:
return -0.37500000000000000000;
451 for(
int a=0; a<5; ++a )
453 for(
int b=0; b<5; ++b )
517 return i + 5 * j + 25 * k;
559 for(
int a=0; a<5; ++a )
561 for(
int b=0; b<5; ++b )
563 for(
int c=0; c<5; ++c )
#define GEOS_HOST_DEVICE
Marks a host-device function.
#define GEOS_FORCE_INLINE
Marks a function or lambda for inlining.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 parentSupportCoord(const localIndex supportPointIndex)
Calculate the parent coordinates for the xi0 direction, given the linear index of a support point.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 gradient0(const real64 xi)
The gradient of the basis function for support point 0 evaluated at a point along the axes.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 gradientAt(const int q, const int p)
The gradient of the basis function for a support point evaluated at a given support point....
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 value4(const real64 xi)
The value of the basis function for support point 4.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 weight(const int q)
The value of the weight for the given support point.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 value0(const real64 xi)
The value of the basis function for support point 0.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 value1(const real64 xi)
The value of the basis function for support point 1.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 value2(const real64 xi)
The value of the basis function for support point 2.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 gradient(const int index, const real64 xi)
The gradient of the basis function for a support point evaluated at a point along the axes.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 value3(const real64 xi)
The value of the basis function for support point 3.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 value(const int index, const real64 xi)
The value of the basis function for a support point evaluated at a point along the axes.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 gradient1(const real64 xi)
The gradient of the basis function for support point 1 evaluated at a point along the axes.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 gradient2(const real64 xi)
The gradient of the basis function for support point 1 evaluated at a point along the axes.
constexpr static real64 sqrt3_7
sqrt(3/7)
constexpr static localIndex numSupportPoints
The number of support points for the basis.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 gradient4(const real64 xi)
The gradient of the basis function for support point 4 evaluated at a point along the axes.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE real64 gradient3(const real64 xi)
The gradient of the basis function for support point 3 evaluated at a point along the axes.
double real64
64-bit floating point type.
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
constexpr static localIndex numSupportPoints
The number of support points in the 2D tensor product.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE void multiIndex(int const linearIndex, int &i0, int &i1)
Calculate the Cartesian/TensorProduct index given the linear index of a support point.
GEOS_HOST_DEVICE static GEOS_FORCE_INLINE void value(const real64(&coords)[2], real64(&N)[numSupportPoints])
The value of the basis function for a support point evaluated at a point along the axes.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE int linearIndex(const int i, const int j)
Calculates the linear index for support/quadrature points from ij coordinates.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE void multiIndex(int const linearIndex, int &i0, int &i1, int &i2)
Calculate the Cartesian/TensorProduct index given the linear index of a support point.
GEOS_HOST_DEVICE constexpr static GEOS_FORCE_INLINE int linearIndex(const int i, const int j, const int k)
Calculates the linear index for support/quadrature points from ijk coordinates.
GEOS_HOST_DEVICE static GEOS_FORCE_INLINE void value(const real64(&coords)[3], real64(&N)[numSupportPoints])
The value of the basis function for a support point evaluated at a point along the axes.
constexpr static localIndex numSupportPoints
The number of support points in the 3D tensor product.