Logo  0.95.0-final
Finite Element Embedded Library and Language in C++
Feel++ Feel++ on Github Feel++ community
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Feel::GeoMap< Dim, Order, RealDim, T, Entity, PP > Class Template Reference

#include <geomap.hpp>

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

Inherits result_type< Order, Scalar, Continuous, PointSetEquiSpaced, 0 >, and enable_shared_from_this< GeoMap< Dim, Order, RealDim, T, Entity, PP > >.

Classes

class  Context
 
class  Inverse
 

Public Types

typedef super::convex_type convex_type
 
typedef boost::shared_ptr
< edge_gm_type > 
edge_gm_ptrtype
 
typedef mpl::at
< geomap_edges_t, mpl::int_
< nDim > >::type 
edge_gm_type
 
typedef boost::shared_ptr
< element_gm_type > 
element_gm_ptrtype
 
typedef mpl::at
< geomap_elements_t, mpl::int_
< nDim > >::type 
element_gm_type
 
typedef boost::shared_ptr
< face_gm_type > 
face_gm_ptrtype
 
typedef mpl::at
< geomap_faces_t, mpl::int_
< nDim > >::type 
face_gm_type
 
typedef boost::shared_ptr
< geometric_mapping_type
geometric_mapping_ptrtype
 
typedef self_type geometric_mapping_type
 
typedef element_gm_ptrtype gm_ptrtype
 
typedef matrix_node
< value_type >::type 
matrix_node_t_type
 
typedef ublas::matrix< value_type > matrix_type
 
typedef node< value_type >::type node_t_type
 
typedef
normals_type::const_iterator 
normal_const_iterator
 
typedef node_t_type normal_type
 
typedef ublas::vector
< normal_type > 
normals_type
 
typedef boost::shared_ptr
< precompute_type > 
precompute_ptrtype
 
typedef super::PreCompute precompute_type
 
typedef Reference< convex_type,
nDim, Order, nDim > 
reference_convex_type
 
typedef GeoMap< Dim, Order,
RealDim, T, Entity, PP > 
self_type
 
typedef
tangents_type::const_iterator 
tangent_const_iterator
 
typedef node_t_type tangent_type
 
typedef ublas::vector
< tangent_type > 
tangents_type
 
typedef super::value_type value_type
 
typedef ublas::vector< value_type > vector_type
 

Public Member Functions

void addB (int e, matrix_type const &B)
 
void addJ (int e, double v)
 
void addK (int e, matrix_type const &K)
 
matrix_type const & B (int e) const
 
const face_gm_ptrtype & boundaryMap () const
 
bool cached (int e) const
 
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)
 
uint16_type dim () const
 
const element_gm_ptrtype elementMap () const
 
 GeoMap ()
 
 GeoMap (element_gm_ptrtype const &e, face_gm_ptrtype const &f)
 
void gradient (const node_t_type &__pt, matrix_type &__g) const
 
void gradient (uint16_type __idref, matrix_type &__g, precompute_type const *__pc) const
 
template<typename MeshType >
void initCache (MeshType const *mesh)
 
bool isCached () const
 
bool isCacheValid () const
 
boost::tuple< bool, value_type > isIn (typename node< value_type >::type const &pt) const
 
bool isLinear () const
 
double J (int e) const
 
matrix_type const & K (int e) const
 
value_type radiusEstimate (matrix_node_t_type const &G) const
 
uint16_type realDim () const
 
reference_convex_type const & referenceConvex () const
 
ublas::vector< value_type > refNode (uint16_type i) const
 
void setCached (int e, bool v)
 
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
 
 ~GeoMap ()
 

Public Attributes

std::vector< matrix_type > M_B
 
std::vector< bool > M_cached
 
bool M_is_cached
 
std::vector< double > M_J
 
std::vector< matrix_type > M_K
 

Static Public Attributes

static const uint16_type nDim = super::nDim
 
static const uint16_type nDof = super::nDof
 
static const uint16_type nNodes = super::nNodes
 
static const uint16_type nRealDim = super::nRealDim
 
static const
fem::transformation_type 
trans = super::trans
 

Friends

class Inverse
 

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

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

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
Returns
the dimension of the underlying 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>
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().

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

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


The documentation for this class was generated from the following file:

Generated on Sun Oct 20 2013 08:25:08 for Feel++ by doxygen 1.8.4