Feel++  0.92.0
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Friends
Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP > Class Template Reference

Structure for the geometrical mapping. More...

#include <geomap.hpp>

List of all members.

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

Detailed Description

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
class Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >

Structure for the geometrical mapping.

Author:
C. Prud'homme

This class contains the geometrical transformation that maps the reference element on the current element, and its values on integration points


Constructor & Destructor Documentation

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::GeoMap ( ) [inline]

default constructor

References FEELPP_CONSTRUCTOR_END.

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
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.

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::~GeoMap ( ) [inline]

destructor


Member Function Documentation

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
const face_gm_ptrtype& Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::boundaryMap ( ) const [inline]
Returns:
the natural mapping for the boundary of the element
template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
uint16_type Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::dim ( ) const [inline]
template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
const element_gm_ptrtype Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::elementMap ( ) const [inline]
Returns:
the natural mapping for the element
template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
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().

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
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().

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
boost::tuple<bool,value_type> Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::isIn ( typename node< value_type >::type const &  pt) const [inline]
Returns:
a positive number if the point is within the reference convex
template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
bool Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::isLinear ( ) const [inline]
Returns:
true if the geometric mapping is linear, false otherwise
template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
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

Parameters:
Gmatrix of nodes defining the element
Returns:
the estimate of the radius of the element defined by G

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().

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
reference_convex_type const& Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::referenceConvex ( ) const [inline]
Returns:
the reference convex
template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
ublas::vector<value_type> Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::refNode ( uint16_type  i) const [inline]
Returns:
the i-th reference node associated with the geometric mapping construction

References Feel::points().

Referenced by Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP >::radiusEstimate().

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
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

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
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

template<uint16_type Dim, uint16_type Order, uint16_type RealDim, typename T = double, template< uint16_type, uint16_type, uint16_type > class Entity = Simplex, template< uint16_type, template< uint16_type RDim > class PolySetType, typename ContinuityType, template< class, uint16_type, class > class Pts, uint16_type > class PP = Lagrange>
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