Rheolef  7.1
an efficient C++ finite element environment
reference_element_face_transformation.h
Go to the documentation of this file.
1 #ifndef _RHEO_REFERENCE_ELEMENT_FACE_TRANSFORMATION_H
2 #define _RHEO_REFERENCE_ELEMENT_FACE_TRANSFORMATION_H
3 
24 #include "rheolef/reference_element.h"
25 #include "rheolef/geo_element_indirect.h"
26 #include "rheolef/point.h"
27 
28 namespace rheolef {
29 
30 // --------------------------------------------------------------------------
31 // Let S and K such that S is the i-th side of K
32 // then map a point hat_x defined in the reference element side hat_S
33 // into tilde_x defined in the reference element tilde_K
34 // note: used to build a quadrature formulae on a side of K
35 // --------------------------------------------------------------------------
36 
38  size_t loc_isid;
39  size_t shift;
41  size_t dim;
42  size_t n_vertex;
45  : loc_isid (std::numeric_limits<size_t>::max()),
46  shift(0),
47  orient(1),
48  dim(0),
49  n_vertex(0),
50  hat()
51  {}
52  side_information_type (reference_element hat_K, size_t loc_isid0)
53  : loc_isid (std::numeric_limits<size_t>::max()),
54  shift(0),
55  orient(1),
56  dim(0),
57  n_vertex(0),
58  hat()
59  { reset (hat_K, loc_isid0); }
60  void reset (reference_element hat_K, size_t loc_isid0);
61 };
62 inline
63 void
65  reference_element hat_K,
66  size_t loc_isid0)
67 {
68  loc_isid = loc_isid0;
69  hat = hat_K.side (loc_isid0);
70  dim = hat.dimension();
71  n_vertex = hat.size();
72  shift = 0;
73  orient = 1;
74 }
75 
76 // --------------------------------------------------------------------------
77 // local piola-like transformation:
78 // side_hat_x <--> tilde_x
79 // --------------------------------------------------------------------------
80 template<class T>
83  reference_element tilde_K,
84  const side_information_type& sid,
85  const point_basic<T>& sid_hat_x);
86 
87 template<class T>
90  reference_element tilde_K,
91  const side_information_type& sid,
92  const point_basic<T>& tilde_x);
93 
94 // --------------------------------------------------------------------------
95 // side_ilat --> ilat : lattice version, with integers instead of floats
96 // --------------------------------------------------------------------------
99  reference_element tilde_K,
100  const side_information_type& sid,
101  size_t k,
102  const point_basic<size_t>& sid_ilat);
103 
104 } // namespace rheolef
105 #endif // _RHEO_REFERENCE_ELEMENT_FACE_TRANSFORMATION_H
rheolef::reference_element::size
size_type size() const
Definition: reference_element.h:102
rheolef::side_information_type::reset
void reset(reference_element hat_K, size_t loc_isid0)
Definition: reference_element_face_transformation.h:64
rheolef::point_basic
Definition: point.h:87
rheolef::reference_element_face_transformation
point_basic< T > reference_element_face_transformation(reference_element tilde_K, const side_information_type &sid, const point_basic< T > &sid_hat_x)
Definition: reference_element_face_transformation.cc:33
rheolef::reference_element_face_inverse_transformation
point_basic< T > reference_element_face_inverse_transformation(reference_element tilde_K, const side_information_type &sid, const point_basic< T > &tilde_x)
Definition: reference_element_face_transformation.cc:87
rheolef::side_information_type::n_vertex
size_t n_vertex
Definition: reference_element_face_transformation.h:42
rheolef::side_information_type::dim
size_t dim
Definition: reference_element_face_transformation.h:41
rheolef::side_information_type::orient
geo_element_indirect::orientation_type orient
Definition: reference_element_face_transformation.h:40
rheolef::side_information_type
Definition: reference_element_face_transformation.h:37
rheolef::reference_element
see the reference_element page for the full documentation
Definition: reference_element.h:66
rheolef::geo_element_indirect::orientation_type
short int orientation_type
Definition: geo_element_indirect.h:38
rheolef::side_information_type::side_information_type
side_information_type()
Definition: reference_element_face_transformation.h:44
rheolef::side_information_type::loc_isid
size_t loc_isid
Definition: reference_element_face_transformation.h:38
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::reference_element::dimension
size_type dimension() const
Definition: reference_element.h:101
rheolef::side_information_type::shift
size_t shift
Definition: reference_element_face_transformation.h:39
rheolef::side_information_type::side_information_type
side_information_type(reference_element hat_K, size_t loc_isid0)
Definition: reference_element_face_transformation.h:52
rheolef::reference_element::side
reference_element side(size_type loc_isid) const
Definition: reference_element.h:119
rheolef::side_information_type::hat
reference_element hat
Definition: reference_element_face_transformation.h:43
rheolef::std
Definition: vec_expr_v2.h:402