# sfepy.discrete.fem.facets module

Helper functions related to mesh facets and Lagrange FE approximation.

Line: ori - iter:

0 - iter0 1 - iter1

Triangle: ori - iter:

0 - iter21 1 - iter12 3 - iter02 4 - iter20 6 - iter10 7 - iter01

Possible couples:

1, 4, 7 <-> 0, 3, 6

Square: ori - iter:

> 0 - iter10x01y 7 - iter10y01x

11 - iter01y01x 30 - iter01x10y 33 - iter10x10y 52 - iter01y10x 56 - iter10y10x 63 - iter01x01y

Possible couples:

7, 33, 52, 63 <-> 0, 11, 30, 56

_quad_ori_groups:

i < j < k < l

all faces are permuted to

l — k | | | | i — j

ijkl

which is the same as

l — j | | | | i — k

ikjl

k — l | | | | i — j

ijlk

- start at one vertex and go around clock-wise or anticlock-wise

-> 8 groups of 3 -> same face nodes order in ijkl (63), ikjl (59), ijlk (31) ilkj (11), iklj (15), iljk (43) jkli ( 7), jlki ( 3), kjli ( 6) kjil (56), jkil (57), ljik (48) lijk (52), likj (20), kijl (60) lkji ( 0), ljki ( 4), klji ( 1) klij (33), lkij (32), jlik (41) jilk (30), kilj (22), jikl (62)

sfepy.discrete.fem.facets.build_orientation_map(n_fp)

  The keys are binary masks of the lexicographical ordering of facet vertices. A bit i set to one means v[i] < v[i+1].

  The values are [original_order, permutation], where permutation can be used to sort facet vertices lexicographically. Hence permuted_facet = facet[permutation].

sfepy.discrete.fem.facets.get_facet_dof_permutations(n_fp, order)

  Prepare DOF permutation vector for each possible facet orientation.

sfepy.discrete.fem.facets.iter0(num)

sfepy.discrete.fem.facets.iter01(num)

sfepy.discrete.fem.facets.iter01x01y(num)

sfepy.discrete.fem.facets.iter01x10y(num)

sfepy.discrete.fem.facets.iter01y01x(num)

sfepy.discrete.fem.facets.iter01y10x(num)

sfepy.discrete.fem.facets.iter02(num)

sfepy.discrete.fem.facets.iter1(num)

sfepy.discrete.fem.facets.iter10(num)

sfepy.discrete.fem.facets.iter10x01y(num)

sfepy.discrete.fem.facets.iter10x10y(num)

sfepy.discrete.fem.facets.iter10y01x(num)

sfepy.discrete.fem.facets.iter10y10x(num)

sfepy.discrete.fem.facets.iter12(num)

sfepy.discrete.fem.facets.iter20(num)

sfepy.discrete.fem.facets.iter21(num)

sfepy.discrete.fem.facets.make_line_matrix(order)

sfepy.discrete.fem.facets.make_square_matrix(order)

sfepy.discrete.fem.facets.make_triangle_matrix(order)