GetFEM++  5.3
bgeot::geometric_trans Class Referenceabstract

Description of a geometric transformation between a reference element and a real element. More...

#include <bgeot_geometric_trans.h>

Inherits dal::static_stored_object.

Inherited by bgeot::igeometric_trans< FUNC >, and bgeot::torus_geom_trans.

Public Member Functions

dim_type dim () const
 Dimension of the reference element.
 
bool is_linear () const
 True if the transformation is linear (affine in fact).
 
size_type nb_points () const
 Number of geometric nodes.
 
pconvex_ref convex_ref () const
 Pointer on the convex of reference.
 
pconvex_structure structure () const
 Structure of the reference element.
 
pconvex_structure basic_structure () const
 Basic structure of the reference element.
 
virtual void poly_vector_val (const base_node &pt, base_vector &val) const =0
 Gives the value of the functions vector at a certain point.
 
virtual void poly_vector_val (const base_node &pt, const convex_ind_ct &ind_ct, base_vector &val) const =0
 Gives the value of a subgroup of the functions vector at a certain point.
 
virtual void poly_vector_grad (const base_node &pt, base_matrix &val) const =0
 Gives the gradient of the functions vector at a certain point.
 
virtual void poly_vector_grad (const base_node &pt, const convex_ind_ct &ind_ct, base_matrix &val) const =0
 Gives the gradient of a subgroup of the functions vector at a certain point.
 
virtual void poly_vector_hess (const base_node &pt, base_matrix &val) const =0
 Gives the hessian of the functions vector at a certain point.
 
virtual void compute_K_matrix (const base_matrix &G, const base_matrix &pc, base_matrix &K) const
 compute K matrix from multiplication of G with gradient
 
size_type nb_vertices () const
 Gives the number of vertices.
 
const std::vector< size_type > & vertices () const
 Gives the indices of vertices between the nodes.
 
const stored_point_tabgeometric_nodes () const
 Gives the array of geometric nodes (on reference convex)
 
pstored_point_tab pgeometric_nodes () const
 Gives the array of geometric nodes (on reference convex)
 
const std::vector< base_small_vector > & normals () const
 Gives the array of the normals to faces (on reference convex)
 
template<class CONT >
base_node transform (const base_node &pt, const CONT &PTAB) const
 Apply the geometric transformation to point pt, PTAB contains the points of the real convex.
 
size_type complexity () const
 Compute the gradient at point x, pc is resized to [nb_points() x dim()] if the transformation is linear, x is not used at all.
 

Detailed Description

Description of a geometric transformation between a reference element and a real element.

Geometric nodes and vector of polynomials. This class is not to be manipulate by itself. Use bgeot::pgeometric_trans and the functions written to produce the basic geometric transformations.

Description of the geometry

Let $T \in\ {I\hspace{-0.3em}R}^N$ be a real element and $\overline{T} \in\ {I\hspace{-0.3em}R}^P$ be a reference element, with $N >= P$.

The geometric nodes of $\overline{T}$ are the points $\overline{g}^i \in\ {I\hspace{-0.3em}R}^P$, for $i = 0 .. n_g-1$, and the corresponding (via the geometric transformation) nodes of $T$ are the points $g^i \in\ {I\hspace{-0.3em}R}^N$.

Geometric transformation

The geometric transformation is the application

\[ \begin{array}{rl} \tau : \overline{T} & \longrightarrow \ T, \\ \overline{x} & \longmapsto \ \ x, \end{array} \]

which should be a diffeomorphism between $\overline{T}$ and $T$. It is assumed that there exists a (generally polynomial) vector $ \underline{\cal N}(\overline{x}) = \left({\cal N}i_(\overline{x})\right)i_, \ \ i = 0 .. n_g-1, $ defined on $\overline{T}$ of size $n_g$, such that the transformation $\tau$ can be written $ \tau(\overline{x}) = \sum_{i = 0}^{n_g-1} {\cal N}i_(\overline{x}) g^i$.

Denoting by $ \underline{\underline{G}} = (g^0; g^1; ...;g^{n_g-1}), $ The matrix in which each column is a geometric node of $T$, the transformation $\tau$ can be written as $ \tau(\overline{x}) = \underline{\underline{G}} \ \underline{\cal N}(\overline{x}). $

Gradient of the transformation

The gradient of the transformation is

\[ \nabla \tau(\overline{x}) = \left( \frac{\partial \tau_i}{\partial \overline{x}_j} \right)_{ij} = \left( \sum_{l = 0}^{n_g-1}g^l_i \frac{\partial {\cal N}l_(\overline{x})}{\partial \overline{x}_j} \right)_{ij} = \underline{\underline{G}}\ \nabla \underline{\cal N}(\overline{x}), \]

Remark : $\underline{\underline{G}}$ is a $N \times n_g$ matrix, $\nabla \underline{\cal N}(\overline{x})$ is a $n_g \times P$ matrix, and thus $\nabla \tau(\overline{x})$ is a $N \times P$ matrix.

Inverse transformation and pseudo-inverse

to do ...

Definition at line 105 of file bgeot_geometric_trans.h.


The documentation for this class was generated from the following files: