Feel++
0.92.0
|
Structure for the geometrical mapping. More...
#include <geomap.hpp>
Classes | |
class | Context |
struct | edge_gm |
struct | face_gm |
class | Inverse |
Public Types | |
typedef super::value_type | value_type |
typedef super::PreCompute | precompute_type |
typedef boost::shared_ptr < precompute_type > | precompute_ptrtype |
typedef super::convex_type | convex_type |
typedef Reference< convex_type, nDim, Order, nDim > | reference_convex_type |
typedef GeoMap< Dim, Order, RealDim, T, Entity, PP > | self_type |
typedef self_type | geometric_mapping_type |
typedef boost::shared_ptr < geometric_mapping_type > | geometric_mapping_ptrtype |
typedef mpl::at < geomap_elements_t, mpl::int_ < nDim > >::type | element_gm_type |
typedef boost::shared_ptr < element_gm_type > | element_gm_ptrtype |
typedef element_gm_ptrtype | gm_ptrtype |
typedef mpl::at < geomap_faces_t, mpl::int_ < nDim > >::type | face_gm_type |
typedef boost::shared_ptr < face_gm_type > | face_gm_ptrtype |
typedef mpl::at < geomap_edges_t, mpl::int_ < nDim > >::type | edge_gm_type |
typedef boost::shared_ptr < edge_gm_type > | edge_gm_ptrtype |
typedef node< value_type >::type | node_t_type |
typedef matrix_node < value_type >::type | matrix_node_t_type |
typedef node_t_type | normal_type |
typedef ublas::vector < normal_type > | normals_type |
typedef normals_type::const_iterator | normal_const_iterator |
typedef node_t_type | tangent_type |
typedef ublas::vector < tangent_type > | tangents_type |
typedef tangents_type::const_iterator | tangent_const_iterator |
typedef ublas::vector< value_type > | vector_type |
typedef ublas::matrix< value_type > | matrix_type |
Public Member Functions | |
GeoMap () | |
GeoMap (element_gm_ptrtype const &e, face_gm_ptrtype const &f) | |
~GeoMap () | |
uint16_type | dim () const |
uint16_type | realDim () const |
bool | isLinear () const |
const element_gm_ptrtype | elementMap () const |
const face_gm_ptrtype & | boundaryMap () const |
ublas::vector< value_type > | refNode (uint16_type i) const |
reference_convex_type const & | referenceConvex () const |
boost::tuple< bool, value_type > | isIn (typename node< value_type >::type const &pt) const |
node_t_type | transform (const node_t_type &__ref_p, matrix_node_t_type const &__G) const |
node_t_type | transform (uint16_type __idref, matrix_node_t_type const &__G, precompute_type const *__pc) const |
void | transform (matrix_node_t_type const &G, precompute_type const *pc, matrix_type &x) const |
void | gradient (const node_t_type &__pt, matrix_type &__g) const |
void | gradient (uint16_type __idref, matrix_type &__g, precompute_type const *__pc) const |
value_type | radiusEstimate (matrix_node_t_type const &G) const |
bool | isCached () const |
template<typename MeshType > | |
void | initCache (MeshType const *mesh) |
bool | isCacheValid () const |
bool | cached (int e) const |
void | setCached (int e, bool v) |
double | J (int e) const |
matrix_type const & | B (int e) const |
matrix_type const & | K (int e) const |
void | addJ (int e, double v) |
void | addK (int e, matrix_type const &K) |
void | addB (int e, matrix_type const &B) |
template<size_type context_v, typename ElementType > | |
boost::shared_ptr< Context < context_v, ElementType > > | context (geometric_mapping_ptrtype gm, ElementType const &e, precompute_ptrtype const &pc) |
template<size_type context_v, typename ElementType > | |
boost::shared_ptr< Context < context_v, ElementType > > | context (ElementType const &e, precompute_ptrtype const &pc) |
template<size_type context_v, typename ElementType > | |
boost::shared_ptr< Context < context_v, ElementType > > | context (geometric_mapping_ptrtype gm, ElementType const &e, std::vector< std::map< typename ElementType::permutation_type, precompute_ptrtype > > &pc, uint16_type f) |
template<size_type context_v, typename ElementType > | |
boost::shared_ptr< Context < context_v, ElementType > > | context (ElementType const &e, std::vector< std::map< typename ElementType::permutation_type, precompute_ptrtype > > &pc, uint16_type f) |
Public Attributes | |
bool | M_is_cached |
std::vector< bool > | M_cached |
std::vector< double > | M_J |
std::vector< matrix_type > | M_K |
std::vector< matrix_type > | M_B |
Static Public Attributes | |
static const uint16_type | nDim = super::nDim |
static const uint16_type | nRealDim = super::nRealDim |
static const uint16_type | nDof = super::nDof |
static const uint16_type | nNodes = super::nNodes |
static const fem::transformation_type | trans = super::trans |
Friends | |
class | Inverse |
Structure for the geometrical mapping.
This class contains the geometrical transformation that maps the reference element on the current element, and its values on integration points
Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::GeoMap | ( | ) | [inline] |
default constructor
References FEELPP_CONSTRUCTOR_END.
Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::GeoMap | ( | element_gm_ptrtype const & | e, |
face_gm_ptrtype const & | f | ||
) | [inline] |
default constructor
References FEELPP_CONSTRUCTOR_END.
Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::~GeoMap | ( | ) | [inline] |
destructor
const face_gm_ptrtype& Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::boundaryMap | ( | ) | const [inline] |
uint16_type Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::dim | ( | ) | const [inline] |
Referenced by Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::gradient(), and Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::radiusEstimate().
const element_gm_ptrtype Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::elementMap | ( | ) | const [inline] |
void Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::gradient | ( | const node_t_type & | __pt, |
matrix_type & | __g | ||
) | const [inline] |
compute the gradient of the transformation in the reference element
Compute the gradient at node x
, pc is resized to [nbNodes() x dim()] if the transformation is linear, x
is not used at all
References Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::dim().
Referenced by Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::radiusEstimate().
void Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::gradient | ( | uint16_type | __idref, |
matrix_type & | __g, | ||
precompute_type const * | __pc | ||
) | const [inline] |
compute the gradient of the transformation in the reference element
Compute the gradient at node x
, pc is resized to [nbNodes() x dim()] if the transformation is linear, x
is not used at all
References Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::dim().
boost::tuple<bool,value_type> Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::isIn | ( | typename node< value_type >::type const & | pt | ) | const [inline] |
bool Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::isLinear | ( | ) | const [inline] |
value_type Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::radiusEstimate | ( | matrix_node_t_type const & | G | ) | const [inline] |
get an estimate of the radius of the element defined by G
G | matrix of nodes defining the element |
References Feel::SVD< MatrixA >::conditionNumber(), Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::dim(), Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::gradient(), and Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::refNode().
reference_convex_type const& Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::referenceConvex | ( | ) | const [inline] |
ublas::vector<value_type> Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::refNode | ( | uint16_type | i | ) | const [inline] |
References Feel::points().
Referenced by Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::radiusEstimate().
node_t_type Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::transform | ( | const node_t_type & | __ref_p, |
matrix_node_t_type const & | __G | ||
) | const [inline] |
apply the geometric mapping to the point pt
given the real geometric nodes stored in a NxNg matrix G
node_t_type Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::transform | ( | uint16_type | __idref, |
matrix_node_t_type const & | __G, | ||
precompute_type const * | __pc | ||
) | const [inline] |
apply the geometric mapping to the point index id_pt
given the real geometric nodes stored in a NxNg matrix G
void Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::transform | ( | matrix_node_t_type const & | G, |
precompute_type const * | pc, | ||
matrix_type & | x | ||
) | const [inline] |
compute real coordinates from a matrix of ref coordinates