Skip to content

shape_functions

gripyth.elements.shape_functions

Shape function (N) and its derivative (dN).

The shape function depends on the element type, i.e. its order (linear, quadratic), dimensionality, and geometric shape. It is expressed in natural coordinates.

FUNCTION DESCRIPTION
N_dN

Returns shape function and its derivative for given element type.

N_dN_1d

Returns 1d shape function and its derivative for given element type.

N_dN_2d

Returns 2d shape function and its derivative for given element type.

N_dN_3d

Returns 3d shape function and its derivative for given element type.

N_dN

N_dN(
    element_type: ElementType,
    dim: int,
    gauss_points: NDArray[float64],
) -> tuple[NDArray[float64], NDArray[float64]]

Returns shape function and its derivative for given element type.

Supported element types are:

  • LINE2: linear 1d element, Gaussian quadrature
  • LINE3: quadratic 1d element, Gaussian quadrature
  • QUAD4: linear 2d quadrilateral element, 4 nodes, Gaussian quadrature
  • TRIA3: linear 2d triangular element, 3 nodes, simplex quadrature
  • TRIA6: quadratic 2d triangular element, 6 nodes, simplex quadrature
  • HEXA8: linear 3d prismatic element, 8 nodes, Gaussian quadrature
  • TETR4: linear 3d tetrahedral element, 4 nodes, simplex quadrature

The following elements are not yet implemented:

  • QUAD9: quadratic 2d element, 9 nodes (lagrangian), Gaussian quadrature
  • QUAD8: quadratic 2d element, 8 nodes (serendipity), Gaussian quadrature
  • HEXA20: quadratic 3d prismatic element with 20 nodes (serendipity), Gaussian quadrature
  • HEXA27: quadratic 3d prismatic element with 27 nodes (lagrangian), Gaussian quadrature
  • TETR10: quadratic 3d tetrahedral element with 10 nodes, simplex quadrature

N_dN_1d

N_dN_1d(
    element_type: ElementType,
    gauss_points: NDArray[float64],
) -> tuple[NDArray[float64], NDArray[float64]]

Returns 1d shape function and its derivative for given element type.

Supported element types are:

  • LINE2: linear 1d element with Gaussian quadrature
      1 =========== 2
     ξ=-1          ξ=1
    
  • LINE3: quadratic 1d element with Gaussian quadrature
      1 ==== 3 ==== 2
     ξ=-1   ξ=0    ξ=1
    

N_dN_2d

N_dN_2d(
    element_type: ElementType,
    gauss_points: NDArray[float64],
) -> tuple[NDArray[float64], NDArray[float64]]

Returns 2d shape function and its derivative for given element type.

Supported element types:

  • QUAD4: linear 2d quadrilateral element, 4 nodes, Gaussian quadrature
    (-1, 1) 4 ===== 3 (1, 1)
            |       |
            |       |
    (-1,-1) 1 ===== 2 (1,-1)
    
  • TRIA3: linear 2d triangular element, 3 nodes, simplex quadrature
     (0, 1) 3
            | \
            |  \
     (0, 0) 1 = 2 (1, 0)
    
  • TRIA6: quadratic 2d triangular element, 6 nodes, simplex quadrature
     (0, 1) 3
            | \
            6  5
            |    \
     (0, 0) 1--4--2 (1, 0)
    

N_dN_3d

N_dN_3d(
    element_type: ElementType,
    gauss_points: NDArray[float64],
) -> tuple[NDArray[float64], NDArray[float64]]

Returns 3d shape function and its derivative for given element type.

Supported element types:

  • HEXA8: linear 3d prismatic element, 8 nodes, Gaussian quadrature
                (-1,1,1)
                    8
                 /     \
     (-1,-1,1) 5    .4  7 (1,1,1)
               | \    / |
    (-1,-1,-1) 1   6    3 (1,1,-1)
                \  |   /
                  \| /
                   2
               (1,-1,-1)
    
  • TETR4: linear 3d tetrahedral element, 4 nodes, simplex quadrature
               (0,0,1)
                  4
                / | \
               /  |  \
      (0,0,0) 1---|---3 (0,1,0)
               \  |  /
                  2
               (1,0,0)