Loading...
Searching...
No Matches
reference_element_face_transformation.h
Go to the documentation of this file.
#ifndef _RHEO_REFERENCE_ELEMENT_FACE_TRANSFORMATION_H
#define _RHEO_REFERENCE_ELEMENT_FACE_TRANSFORMATION_H
#include "rheolef/reference_element.h"
#include "rheolef/geo_element_indirect.h"
#include "rheolef/point.h"
namespace rheolef {
// --------------------------------------------------------------------------
// Let S and K such that S is the i-th side of K
// then map a point hat_x defined in the reference element side hat_S
// into tilde_x defined in the reference element tilde_K
// note: used to build a quadrature formulae on a side of K
// --------------------------------------------------------------------------
struct side_information_type {
size_t loc_isid;
size_t shift;
geo_element_indirect::orientation_type orient;
size_t dim;
size_t n_vertex;
reference_element hat;
side_information_type()
: loc_isid (std::numeric_limits<size_t>::max()),
shift(0),
orient(1),
dim(0),
n_vertex(0),
hat()
{}
side_information_type (reference_element hat_K, size_t loc_isid0)
: loc_isid (std::numeric_limits<size_t>::max()),
shift(0),
orient(1),
dim(0),
n_vertex(0),
hat()
{ reset (hat_K, loc_isid0); }
void reset (reference_element hat_K, size_t loc_isid0);
};
inline
void
side_information_type::reset (
reference_element hat_K,
size_t loc_isid0)
{
loc_isid = loc_isid0;
hat = hat_K.side (loc_isid0);
dim = hat.dimension();
n_vertex = hat.size();
shift = 0;
orient = 1;
}
// --------------------------------------------------------------------------
// local piola-like transformation:
// side_hat_x <--> tilde_x
// --------------------------------------------------------------------------
template<class T>
point_basic<T>
reference_element_face_transformation (
reference_element tilde_K,
const side_information_type& sid,
const point_basic<T>& sid_hat_x);
template<class T>
point_basic<T>
reference_element_face_inverse_transformation (
reference_element tilde_K,
const side_information_type& sid,
const point_basic<T>& tilde_x);
// --------------------------------------------------------------------------
// side_ilat --> ilat : lattice version, with integers instead of floats
// --------------------------------------------------------------------------
point_basic<size_t>
reference_element_face_transformation (
reference_element tilde_K,
const side_information_type& sid,
size_t k,
const point_basic<size_t>& sid_ilat);
} // namespace rheolef
#endif // _RHEO_REFERENCE_ELEMENT_FACE_TRANSFORMATION_H
rheolef::geo_element_indirect::orientation_type
short int orientation_type
Definition geo_element_indirect.h:38
rheolef::point_basic
Definition point.h:86
rheolef::reference_element
see the reference_element page for the full documentation
Definition reference_element.h:66
rheolef::reference_element::side
reference_element side(size_type loc_isid) const
Definition reference_element.h:119
rheolef
This file is part of Rheolef.
Definition compiler_eigen.h:39
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
std
STL namespace.
rheolef::side_information_type
Definition reference_element_face_transformation.h:37
rheolef::side_information_type::hat
reference_element hat
Definition reference_element_face_transformation.h:43
rheolef::side_information_type::dim
size_t dim
Definition reference_element_face_transformation.h:41
rheolef::side_information_type::n_vertex
size_t n_vertex
Definition reference_element_face_transformation.h:42
rheolef::side_information_type::side_information_type
side_information_type()
Definition reference_element_face_transformation.h:44
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::side_information_type::orient
geo_element_indirect::orientation_type orient
Definition reference_element_face_transformation.h:40
rheolef::side_information_type::loc_isid
size_t loc_isid
Definition reference_element_face_transformation.h:38
rheolef::side_information_type::reset
void reset(reference_element hat_K, size_t loc_isid0)
Definition reference_element_face_transformation.h:64
rheolef::side_information_type::shift
size_t shift
Definition reference_element_face_transformation.h:39