Static Public Member Functions

element_refinement< tetrahedron_tag > Struct Template Reference

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.

Detailed Description

template<>
struct viennagrid::element_refinement< tetrahedron_tag >

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.


Member Function Documentation

static void apply ( CellType const &  cell_in,
DomainTypeOut &  segment_out 
) [inline, static]

Public entry function for the refinement of a tetrahedron.

Parameters:
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.


The documentation for this struct was generated from the following file: