Class specialization for the refinement of a tetrahedron: A LOT of spaghetti-code to follow. More...
#include <tetrahedron.hpp>
Static Public Member Functions | |
template<typename CellType , typename DomainTypeOut > | |
static void | apply0 (CellType const &cell_in, DomainTypeOut &segment_out) |
Not refining a tetrahedron at all. | |
template<typename CellType , typename DomainTypeOut > | |
static void | apply1 (CellType const &cell_in, DomainTypeOut &segment_out) |
Refinement of a tetrahedron, bisecting one edge. | |
template<typename CellType , typename DomainTypeOut , typename VertexType > | |
static void | apply2_1 (CellType const &cell_in, DomainTypeOut &segment_out, VertexType **vertices) |
Refinement of a tetrahedron, bisecting two edges. Case 1: The two edges have a common vertex. | |
template<typename CellType , typename DomainTypeOut , typename VertexType > | |
static void | apply2_2 (CellType const &cell_in, DomainTypeOut &segment_out, VertexType **vertices) |
Refinement of a tetrahedron, bisecting two edges. Case 2: The two edges don't have any common vertex. | |
template<typename CellType , typename DomainTypeOut > | |
static void | apply2 (CellType const &cell_in, DomainTypeOut &segment_out) |
Entry function for the refinement of a tetrahedron by bisection of two edges. Reorders the tetrahedron to reduce complexity. | |
template<typename CellType , typename DomainTypeOut , typename VertexType > | |
static void | apply3_1 (CellType const &cell_in, DomainTypeOut &segment_out, VertexType **vertices) |
Refinement of a tetrahedron, bisecting three edges. Case 1: The three edges have a common vertex. | |
template<typename CellType , typename DomainTypeOut , typename VertexType > | |
static void | apply3_2 (CellType const &cell_in, DomainTypeOut &segment_out, VertexType **vertices) |
Refinement of a tetrahedron, bisecting three edges. Case 2: The three edges don't have any common vertex. | |
template<typename CellType , typename DomainTypeOut , typename VertexType > | |
static void | apply3_3 (CellType const &cell_in, DomainTypeOut &segment_out, VertexType **vertices) |
Refinement of a tetrahedron, bisecting three edges. Case 3: The three edges don't have any common vertex. | |
template<typename CellType , typename DomainTypeOut , typename VertexType > | |
static void | apply3_4 (CellType const &cell_in, DomainTypeOut &segment_out, VertexType **vertices) |
Refinement of a tetrahedron, bisecting three edges. Case 4: The three edges don't have any common vertex. | |
template<typename CellType , typename DomainTypeOut > | |
static void | apply3 (CellType const &cell_in, DomainTypeOut &segment_out) |
Entry function for refinement of a tetrahedron with three edges for bisection. | |
template<typename CellType , typename DomainTypeOut , typename VertexType > | |
static void | apply4_1 (CellType const &cell_in, DomainTypeOut &segment_out, VertexType **vertices) |
Refinement of a tetrahedron, bisecting four edges. Case 1: The two edges have a common vertex. | |
template<typename CellType , typename DomainTypeOut , typename VertexType > | |
static void | apply4_2 (CellType const &cell_in, DomainTypeOut &segment_out, VertexType **vertices) |
Refinement of a tetrahedron, bisecting four edges. Case 2: The two edges don't have any common vertex. | |
template<typename CellType , typename DomainTypeOut > | |
static void | apply4 (CellType const &cell_in, DomainTypeOut &segment_out) |
Entry function for a refinement of a tetrahedron by a bisection of four edges. Reorders vertices to reduce complexity. | |
template<typename CellType , typename DomainTypeOut , typename VertexType > | |
static void | apply5_1 (CellType const &cell_in, DomainTypeOut &segment_out, VertexType **vertices) |
Refinement of a tetrahedron, bisecting five edges. Case 1 (no other cases): Only edge 01 is not refined. | |
template<typename CellType , typename DomainTypeOut > | |
static void | apply5 (CellType const &cell_in, DomainTypeOut &segment_out) |
Entry function for the refinement of a tetrahedron bisecting five edges. Reorders vertices to reduce complexity. | |
template<typename CellType , typename DomainTypeOut > | |
static void | apply6 (CellType const &cell_in, DomainTypeOut &segment_out) |
Refinement of a tetrahedron, bisecting six edges: Split the cell into 8 tets. | |
template<typename CellType , typename DomainTypeOut > | |
static void | apply (CellType const &cell_in, DomainTypeOut &segment_out) |
Public entry function for the refinement of a tetrahedron. |
Class specialization for the refinement of a tetrahedron: A LOT of spaghetti-code to follow.
Unfortunately, combinatorics (or a lack of talent?) forces us to consider that many cases of refinement.
static void apply | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out | |||
) | [inline, static] |
Public entry function for the refinement of a tetrahedron.
cell_in | The tetrahedron to be refined | |
segment_out | The domain or segment the refined tetrahedra are written to |
static void apply0 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out | |||
) | [inline, static] |
Not refining a tetrahedron at all.
static void apply1 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting one edge.
static void apply2 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out | |||
) | [inline, static] |
Entry function for the refinement of a tetrahedron by bisection of two edges. Reorders the tetrahedron to reduce complexity.
static void apply2_1 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out, | |||
VertexType ** | vertices | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting two edges. Case 1: The two edges have a common vertex.
Orientation: (dots are in the background)
3 ----------- 2 / \ . / / \ . 5 / . \ / / . \ / 0 ----- 4 ------ 1
static void apply2_2 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out, | |||
VertexType ** | vertices | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting two edges. Case 2: The two edges don't have any common vertex.
Orientation: (dots are in the background)
3 -----5----- 2 / \ . / / \ . / / . \ / / . \ / 0 ----- 4 ------ 1
static void apply3 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out | |||
) | [inline, static] |
Entry function for refinement of a tetrahedron with three edges for bisection.
static void apply3_1 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out, | |||
VertexType ** | vertices | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting three edges. Case 1: The three edges have a common vertex.
Orientation: (dots are in the background)
3 ----------- 2 / \ . / / 6 . 5 / . \ / / . \ / 0 ----- 4 ------ 1
static void apply3_2 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out, | |||
VertexType ** | vertices | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting three edges. Case 2: The three edges don't have any common vertex.
Orientation: (dots are in the background)
3 ----------- 2 / \ . / / \ . 5 / 6 \ / / . \ / 0 ----- 4 ------ 1
static void apply3_3 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out, | |||
VertexType ** | vertices | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting three edges. Case 3: The three edges don't have any common vertex.
Orientation: (dots are in the background)
3 ----------- 2 / \ . / 6 \ . 5 / . \ / / . \ / 0 ----- 4 ------ 1
static void apply3_4 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out, | |||
VertexType ** | vertices | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting three edges. Case 4: The three edges don't have any common vertex.
Orientation: (dots are in the background)
3 ----6------ 2 / \ . / / \ . 5 / . \ / / . \ / 0 ----- 4 ------ 1
static void apply4 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out | |||
) | [inline, static] |
Entry function for a refinement of a tetrahedron by a bisection of four edges. Reorders vertices to reduce complexity.
static void apply4_1 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out, | |||
VertexType ** | vertices | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting four edges. Case 1: The two edges have a common vertex.
Orientation: (dots are in the background)
3 -----6----- 2 / \ . / 7 \ . / / 4 5 / / . \ / 0 ------------- 1
static void apply4_2 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out, | |||
VertexType ** | vertices | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting four edges. Case 2: The two edges don't have any common vertex.
Orientation: (dots are in the background)
3 ----------- 2 / \ . / 6 \ . 4 / 5 7 / / . \ / 0 ------------- 1
static void apply5 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out | |||
) | [inline, static] |
Entry function for the refinement of a tetrahedron bisecting five edges. Reorders vertices to reduce complexity.
static void apply5_1 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out, | |||
VertexType ** | vertices | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting five edges. Case 1 (no other cases): Only edge 01 is not refined.
Orientation: (dots are in the background)
3 -----8----- 2 / \ . / 6 \ . / / 5 7 4 / . \ / 0 ------------- 1
static void apply6 | ( | CellType const & | cell_in, | |
DomainTypeOut & | segment_out | |||
) | [inline, static] |
Refinement of a tetrahedron, bisecting six edges: Split the cell into 8 tets.