#include <Transform.hpp>
Public Member Functions | |
ublas::fixed_matrix< float_t, 3, 2 > & | boundary_derivative (size_t face, const ublas::fixed_vector< float_t, 2 > &in, ublas::fixed_matrix< float_t, 3, 2 > &out) const |
ublas::fixed_vector< float_t, 3 > & | value (const ublas::fixed_vector< float_t, 3 > &in, ublas::fixed_vector< float_t, 3 > &out) const |
ublas::fixed_matrix< float_t, 3, 3 > & | derivative (const ublas::fixed_vector< float_t, 3 > &in, ublas::fixed_matrix< float_t, 3, 3 > &out) const |
ublas::fixed_vector< float_t, 3 > & | boundary2element (size_t face_index, const ublas::fixed_vector< float_t, 2 > &in, ublas::fixed_vector< float_t, 3 > &out) const |
ublas::fixed_vector< float_t, 3 > & | boundary_normal (size_t face, ublas::fixed_vector< float_t, 3 > &out) const |
Static Public Member Functions | |
static size_t | face_vertex (size_t face, size_t vertex) |
This class implements the transformation of the tetrahedra determined by the vertices (0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1) (the reference element) to tetrahera elements and the transformation of the interval [-1, 1] (the boundary reference element) to the faces of this tetrahedra.
The class provides functions to transform coordinates on the reference element to grid coordinates and computes the derivate of this transformation. Furthermore, the classes transform coordinates on the boundary reference elements of the reference element (i.e. the reference elements of the faces of the reference element) to coordinates on the reference element.
size_t imaging::Tetrahedra3dTransform::face_vertex | ( | size_t | face_index, | |
size_t | face_vertex_index | |||
) | [static] |
Returns the vertex index (on the element) of the vertex determined by face_index and face_vertex_index (on the boundary reference element). E.g. the vertex 1 (there are only vertices 0 and 1 on the boundary reference element) on the face 2 of the square reference element (there are 4 faces with indices from zero to 3) is mapped to vertex 3 on the reference element.
Reimplemented from imaging::Transform< 4, 4, 3 >.
Referenced by imaging::Linear3dShapeFunction::face_node().
ublas::fixed_matrix< float_t, 3, 2 > & imaging::Tetrahedra3dTransform::boundary_derivative | ( | size_t | face, | |
const ublas::fixed_vector< float_t, 2 > & | in, | |||
ublas::fixed_matrix< float_t, 3, 2 > & | out | |||
) | const |
Computes the derivate of the element transform along the face face_index at in (on the boundary reference element) and stores it in out.
References imaging::Transform< 4, 4, 3 >::_vertices.
ublas::fixed_vector< float_t, 3 > & imaging::Tetrahedra3dTransform::value | ( | const ublas::fixed_vector< float_t, 3 > & | in, | |
ublas::fixed_vector< float_t, 3 > & | out | |||
) | const |
Computes the coordinates of in (on the reference element) and stores them in out.
References imaging::Transform< 4, 4, 3 >::_vertices.
ublas::fixed_matrix< float_t, 3, 3 > & imaging::Tetrahedra3dTransform::derivative | ( | const ublas::fixed_vector< float_t, 3 > & | in, | |
ublas::fixed_matrix< float_t, 3, 3 > & | out | |||
) | const |
Computes the derivate of the element transform at in (on the reference element) and stores it in out.
References imaging::Transform< 4, 4, 3 >::_vertices.
ublas::fixed_vector< float_t, 3 > & imaging::Tetrahedra3dTransform::boundary2element | ( | size_t | face_index, | |
const ublas::fixed_vector< float_t, 2 > & | in, | |||
ublas::fixed_vector< float_t, 3 > & | out | |||
) | const |
Transforms the coordinates in on the boundary reference element of the face face_index to coordinates on the reference element and stores them in out.
ublas::fixed_vector< float_t, 3 > & imaging::Tetrahedra3dTransform::boundary_normal | ( | size_t | face, | |
ublas::fixed_vector< float_t, 3 > & | out | |||
) | const |
Computes the unit boundary normal at the face face_index at in (on the boundary reference element) of the reference element and stores it in out. If the boundaries of the element are linear segments (which is probably always the case), then this function does actually not depend on in. This means the boundary_normal() merely ressembles a look-up table which matches face_index with face normal on the reference element.
References imaging::Transform< 4, 4, 3 >::_vertices.