56 if (sid.
orient < 0) std::swap (i0, i1);
59 return tilde_a0 + sid_hat_x[0]*(tilde_a1 - tilde_a0);
67 if (sid.
orient < 0) std::swap (i1, i2);
72 return tilde_a0 + sid_hat_x[0]*(tilde_a1 - tilde_a0)
73 + sid_hat_x[1]*(tilde_a2 - tilde_a0);
75 return tilde_a0 + 0.5*(1+sid_hat_x[0])*(tilde_a1 - tilde_a0)
76 + 0.5*(1+sid_hat_x[1])*(tilde_a2 - tilde_a0);
106 if (sid.
orient < 0) std::swap (i0, i1);
109 T deno = sqr(tilde_a1[0] - tilde_a0[0])
110 + sqr(tilde_a1[1] - tilde_a0[1]);
111 T num = (tilde_x [0] - tilde_a0[0])
112 *(tilde_a1[0] - tilde_a0[0])
113 + (tilde_x [1] - tilde_a0[1])
114 *(tilde_a1[1] - tilde_a0[1]);
123 if (sid.
orient < 0) std::swap (i1, i2);
128 hat_x[0] =
dot(tilde_x - tilde_a0, tilde_a1 - tilde_a0)/
norm2(tilde_a1 - tilde_a0);
129 hat_x[1] =
dot(tilde_x - tilde_a0, tilde_a2 - tilde_a0)/
norm2(tilde_a2 - tilde_a0);
150 Float km = (k == 0) ? 1 : k;
199#define _RHEOLEF_instanciation(T) \
202reference_element_face_transformation ( \
203 reference_element tilde_K, \
204 const side_information_type& sid, \
205 const point_basic<T>& hat_x); \
208reference_element_face_inverse_transformation ( \
209 reference_element tilde_K, \
210 const side_information_type& sid, \
211 const point_basic<T>& tilde_x);
#define _RHEOLEF_instanciation(T, M, A)
field::size_type size_type
see the Float page for the full documentation
see the point page for the full documentation
see the reference_element page for the full documentation
const point_basic< Float > & vertex(size_type iloc) const
static const variant_type H
reference_element side(size_type loc_isid) const
size_type dimension() const
variant_type variant() const
size_type subgeo_local_vertex(size_type subgeo_dim, size_type loc_isid, size_type loc_jsidvert) const
std::vector< int >::size_type size_type
static const variant_type T
static const variant_type t
#define fatal_macro(message)
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
This file is part of Rheolef.
point_basic< T > reference_element_face_transformation(reference_element tilde_K, const side_information_type &sid, const point_basic< T > &sid_hat_x)
T norm2(const vec< T, M > &x)
norm2(x): see the expression page for the full documentation
rheolef::std enable_if ::type dot const Expr1 expr1, const Expr2 expr2 dot(const Expr1 &expr1, const Expr2 &expr2)
point_basic< T > reference_element_face_inverse_transformation(reference_element tilde_K, const side_information_type &sid, const point_basic< T > &tilde_x)