41 template <
typename TElem,
int TWorldDim,
42 typename TTrialSpace,
typename TQuadratureRule>
49 for(
size_t ip = 0; ip <
nip; ++ip)
50 for(
size_t sh = 0; sh <
nsh; ++sh)
57 template <
typename TElem,
int TWorldDim,
58 typename TTrialSpace,
typename TQuadratureRule>
64 UG_THROW(
"FEGeometry::update: Geometry only for "
66 <<roid<<
" requested.");
68 if(orderQuad > m_rQuadRule.order())
69 UG_THROW(
"FEGeometry::update: Geometry only for order "
70 << m_rQuadRule.order()<<
", but order "<<
71 orderQuad<<
" requested.");
74 template <
typename TElem,
int TWorldDim,
75 typename TTrialSpace,
typename TQuadratureRule>
79 const LFEID& lfeID,
size_t orderQuad)
82 UG_ASSERT(orderQuad <= m_rQuadRule.order(),
"Wrong order requested.");
84 UG_ASSERT(
dynamic_cast<TElem*
>(elem) != NULL,
"Wrong element type.");
85 TElem* pElem =
static_cast<TElem*
>(elem);
88 if(pElem == m_pElem)
return;
92 m_mapping.update(vCorner);
95 m_mapping.local_to_global(&m_vIPGlobal[0], local_ips(), nip);
98 m_mapping.jacobian_transposed_inverse(&m_vJTInv[0], &m_vDetJ[0],
102 for(
size_t ip = 0; ip < nip; ++ip)
103 for(
size_t sh = 0; sh < nsh; ++sh)
105 m_vJTInv[ip], m_vvGradLocal[ip][sh]);
TTrialSpace trial_space_type
type of trial space
Definition: fe_geom.h:62
static const size_t nip
number of integration points
Definition: fe_geom.h:71
const quad_rule_type & m_rQuadRule
Quadrature rule.
Definition: fe_geom.h:152
TQuadratureRule quad_rule_type
type of quadrature rule
Definition: fe_geom.h:65
FEGeometry()
Constructor.
Definition: fe_geom_impl.h:44
number m_vvShape[nip][nsh]
shape functions evaluated at ip
Definition: fe_geom.h:164
static const size_t nsh
number of shape functions
Definition: fe_geom.h:68
const trial_space_type & m_rTrialSpace
Quadrature rule.
Definition: fe_geom.h:155
MathVector< dim > m_vvGradLocal[nip][nsh]
global gradient evaluated at ip
Definition: fe_geom.h:167
void update(GridObject *pElem, const MathVector< worldDim > *vCorner)
update Geometry for corners
Definition: fe_geom.h:134
void update_local(ReferenceObjectID roid, const LFEID &lfeID, size_t orderQuad)
update Geometry for roid
Definition: fe_geom_impl.h:61
The base class for all geometric objects, such as vertices, edges, faces, volumes,...
Definition: grid_base_objects.h:157
Identifier for Local Finite Elements.
Definition: local_finite_element_id.h:98
Provider, holding a single instance of an object.
Definition: provider.h:48
Definition: grid_base_object_traits.h:68
#define UG_ASSERT(expr, msg)
Definition: assert.h:70
#define UG_THROW(msg)
Definition: error.h:57
void MatVecMult(vector_t_out &vOut, const matrix_t &m, const vector_t_in &v)
Matrix - Vector Multiplication.
Definition: math_matrix_vector_functions_common_impl.hpp:49
SM_edge_weight_map< typename T::value_type, ug::BidirectionalMatrix< T > > get(edge_weight_t, ug::BidirectionalMatrix< T > const &g)
Definition: bidirectional_boost.h:157
ReferenceObjectID
these ids are used to identify the shape of a geometric object.
Definition: grid_base_objects.h:74