Shapes

modepy.shapes provides a generic description of the supported shapes (i.e. reference elements).

class modepy.Shape(dim)
dim
nfaces
nvertices
class modepy.Face(volume_shape, face_index, volume_vertex_indices, map_to_volume)

Mix-in to be used with a concrete Shape subclass to represent geometry information about a face of a shape.

volume_shape

The volume Shape from which this face descends.

face_index

The face index in volume_shape of this face.

volume_vertex_indices

A tuple of indices into the vertices returned by unit_vertices_for_shape() for the volume_shape.

map_to_volume

A Callable that takes an array of size (dim, nnodes) of unit nodes on the face represented by face_vertices and maps them to the volume_shape.

modepy.unit_vertices_for_shape(shape)
modepy.unit_vertices_for_shape(shape)
modepy.unit_vertices_for_shape(shape)
Returns

an ndarray of shape (dim, nvertices).

Parameters

shape (modepy.shapes.Shape) –

modepy.faces_for_shape(shape)
modepy.faces_for_shape(shape)
modepy.faces_for_shape(shape)
Results

a tuple of Face representing the faces of shape.

Parameters

shape (modepy.shapes.Shape) –

Simplices

class modepy.Simplex(dim)

Coordinates on the triangle

Bi-unit coordinates \((r, s)\) (also called ‘unit’ coordinates):

^ s
|
C
|\
| \
|  O
|   \
|    \
A-----B--> r

Vertices in bi-unit coordinates:

O = ( 0,  0)
A = (-1, -1)
B = ( 1, -1)
C = (-1,  1)

Equilateral coordinates \((x, y)\):

      C
     / \
    /   \
   /     \
  /   O   \
 /         \
A-----------B

Vertices in equilateral coordinates:

O = ( 0,          0)
A = (-1, -1/sqrt(3))
B = ( 1, -1/sqrt(3))
C = ( 0,  2/sqrt(3))

Coordinates on the tetrahedron

Bi-unit coordinates \((r, s, t)\) (also called ‘unit’ coordinates):

           ^ s
           |
           C
          /|\
         / | \
        /  |  \
       /   |   \
      /   O|    \
     /   __A-----B---> r
    /_--^ ___--^^
   ,D--^^^
t L

(squint, and it might start making sense…)

Vertices in bi-unit coordinates \((r, s, t)\):

O = ( 0,  0,  0)
A = (-1, -1, -1)
B = ( 1, -1, -1)
C = (-1,  1, -1)
D = (-1, -1,  1)

Vertices in equilateral coordinates \((x, y, z)\):

O = ( 0,          0,          0)
A = (-1, -1/sqrt(3), -1/sqrt(6))
B = ( 1, -1/sqrt(3), -1/sqrt(6))
C = ( 0,  2/sqrt(3), -1/sqrt(6))
D = ( 0,          0,  3/sqrt(6))

Hypercubes

class modepy.Hypercube(dim)

Coordinates on the square

Bi-unit coordinates on \((r, s)\) (also called ‘unit’ coordinates):

^ s
|
C---------D
|         |
|         |
|    O    |
|         |
|         |
A---------B --> r

Vertices in bi-unit coordinates:

O = ( 0,  0)
A = (-1, -1)
B = ( 1, -1)
C = (-1,  1)
D = ( 1,  1)

Coordinates on the cube

Bi-unit coordinates on \((r, s, t)\) (also called ‘unit’ coordinates):

t
^
|
E----------G
|\         |\
| \        | \
|  \       |  \
|   F------+---H
|   |  O   |   |
A---+------C---|--> s
 \  |       \  |
  \ |        \ |
   \|         \|
    B----------D
     \
      v r

Vertices in bi-unit coordinates:

O = ( 0,  0,  0)
A = (-1, -1, -1)
B = ( 1, -1, -1)
C = (-1,  1, -1)
D = ( 1,  1, -1)
E = (-1, -1,  1)
F = ( 1, -1,  1)
G = (-1,  1,  1)
H = ( 1,  1,  1)

The order of the vertices in the hypercubes follows binary counting in tsr (i.e. in reverse axis order). For example, in 3D, A, B, C, D, ... is 000, 001, 010, 011, ....

Submeshes

modepy.submesh_for_shape(shape, node_tuples)
modepy.submesh_for_shape(shape, node_tuples)
modepy.submesh_for_shape(shape, node_tuples)

Return a list of tuples of indices into the node list that generate a tesselation of the reference element.

Parameters
  • node_tuples

    A list of tuples (i, j, …) of integers indicating node positions inside the unit element. The returned list references indices in this list.

    modepy.node_tuples_for_space() may be used to generate node_tuples.

  • shape (modepy.shapes.Shape) –

New in version 2020.3.

Redirections to Canonical Names

class modepy.shapes.Shape

See modepy.Shape.

class modepy.shapes.Face

See modepy.Face.

class modepy.shapes.Simplex

See modepy.Simplex.

class modepy.shapes.Hypercube

See modepy.Hypercube.