Source code for sigmaepsilon.mesh.cells.w6

from typing import Tuple, List

import numpy as np
from numpy import ndarray
from sympy import symbols

from ..geometry import PolyCellGeometry3d
from ..data.polycell import PolyCell
from ..utils.numint import Gauss_Legendre_Wedge_3x2
from ..utils.cells.w6 import monoms_W6


[docs] class W6(PolyCell): """ Class for 6-noded trilinear wedges. """ label = "W6"
[docs] class Geometry(PolyCellGeometry3d): number_of_nodes = 6 vtk_cell_id = 13 monomial_evaluator = monoms_W6 quadrature = { "full": Gauss_Legendre_Wedge_3x2, "geometry": "full", }
[docs] @classmethod def polybase(cls) -> Tuple[List]: """ Retruns the polynomial base of the master element. Returns ------- list A list of SymPy symbols. list A list of monomials. """ locvars = r, s, t = symbols("r s t", real=True) monoms = [1, r, s, t, r * t, s * t] return locvars, monoms
[docs] @classmethod def master_coordinates(cls) -> ndarray: return np.array( [ [-1 / 3, -1 / 3, -1.0], [2 / 3, -1 / 3, -1.0], [-1 / 3, 2 / 3, -1.0], [-1 / 3, -1 / 3, 1.0], [2 / 3, -1 / 3, 1.0], [-1 / 3, 2 / 3, 1.0], ] )
[docs] @classmethod def master_center(cls) -> ndarray: return np.array([[0.0, 0.0, 0.0]], dtype=float)
[docs] @classmethod def tetmap(cls) -> ndarray: return np.array( [[0, 1, 2, 4], [3, 5, 4, 2], [2, 5, 0, 4]], dtype=int, )