Diffpack Documentation
Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Search
MxMapping Class Reference
geometry mapping of certain mixed finite elements.
More...
#include <MxMapping.h>
Inheritance diagram for MxMapping::
List of all members.
Detailed Description
geometry mapping of certain mixed finite elements.
NAME: MxMapping - geometry mapping of certain mixed finite elements
DESCRIPTION:
The class contains functionality for a geometry mapping normally used in H(div)-type finite element spaces. By the geometry mapping we mean the transformation from the coordinates in the reference element to the global coordinates in a given element. Usually one applies this geometry mapping to the finite element basis function to define the global vector element.
Finite elements in H(div) are usually defined to have continuous normal components at the midpoint of each face/edge. The standard mapping using the geometry basis functions from an element in the "ElmDef" hierarchy, does not preserve the normal components. (E.g., the normal vectors in a reference element can be mapped to a tangent vector in a global element.) This class implements a mapping that preserves the normal vector.
Usually this class is used in combination with "MxFiniteElement". "MxFiniteElement" provides the finite elements of combined scalar fields:
MxFiniteElement ::N(i)
MxFiniteElement ::dN(i,j)
MxFiniteElement is extended to use MxMapping when needed in the functions:
MxFiniteElement ::N(d,i)
MxFiniteElmeent ::dN(d,i,s)
Elements that must use this mapping is ElmT3gn3bn2Du/v and ElmT3gn9bn2Du/v.
The mathematical definition of the "MxMapping" procedure goes as follows.
Let x be the coordinates in the reference element and y the coordinates in the global element. We assume that the geometry mapping is affine, that is,
where x_0 is the distance from the global element to the reference element and B is a matrix that stretches and rotates the coordinates.
Then the following mapping preserves the normal components:
N(y) = (1/detB)*B*N^ref(M^{-1}(y)),
where N is the vector basis in the global element and N^ref is the vector basis in the reference element (in the local element coordinate system).
Note that e.g. N_1 will be a sum of N^ref_1, N^ref_2 and N^ref_3
Constructor & Destructor Documentation
|
|
MxMapping should be constructed with a proper "MxFiniteElement" object (for defining the mapping for a set of elements) or a "FiniteElement" object (for defining the mapping of a single element). |
|
|
See documentation of one of the overloaded constructor. |
|
MxMapping::~MxMapping (
|
) [inline]
|
|
Member Function Documentation
|
|
See documentation of one of the overloaded functions. |
|
real MxMapping::N (
|
int field_no,
|
|
int basis_no )
|
|
|
|
is the usual basis function, but with a H(div) conforming geometry mapping. |
|
real MxMapping::dN (
|
const FiniteElement & fe,
|
|
int basis_no,
|
|
int deriv_field )
|
|
|
|
See documentation of one of the overloaded functions. |
|
real MxMapping::dN (
|
int field_no,
|
|
int basis_no,
|
|
int deriv_field )
|
|
|
|
is the usual derivative of the basis function, but with a H(div) conforming geometry mapping. |
|
int MxMapping::determineSide (
|
Ptv(real) & loc_pt )
|
|
|
|
returns the number of the element side that contains the given local point. Zero is returned if the point is not on a side. |
|
int MxMapping::determineSide2D (
|
Ptv(real) & loc_pt )
|
|
|
int MxMapping::determineSide3D (
|
Ptv(real) & loc_pt )
|
|
|
Ptv(real) & MxMapping::getNormalVector (
|
int side )
|
|
|
|
returns a normal vector determined by the basis function. This may be an outwards or inwards pointing vector. However, they are consistent in the following way: one global node will have the same normal vector in all the local nodes in all the elements that share this global node. |
|
Ptv(real) & MxMapping::getNormalVector2D (
|
int side ) [protected]
|
|
|
Ptv(real) & MxMapping::getNormalVector3D (
|
int side ) [protected]
|
|
|
Ptv(real) & MxMapping::getTangentVector (
|
int side )
|
|
|
|
returns a tangent vector determined in the same way as the normal vectors. |
|
void MxMapping::print (
|
)
|
|
|
void MxMapping::refill (
|
)
|
|
|
void MxMapping::useSpecialMapping (
|
bool mapping ) [static]
|
|
Member Data Documentation
int MxMapping::current_side [protected]
|
|
bool MxMapping::dabla [protected]
|
|
int MxMapping::elm_no [protected]
|
|
bool MxMapping::external_mxelm [protected]
|
|
const Mat(real) * MxMapping::geom [protected]
|
|
VecSimple(bool) MxMapping::map_element [protected]
|
|
int MxMapping::nbf [protected]
|
|
int MxMapping::nsd [protected]
|
|
Ptv(real) MxMapping::nv [protected]
|
|
MatSimple(real) MxMapping::nv_mat [protected]
|
|
int MxMapping::scalar_field [protected]
|
|
Ptv(real) MxMapping::tv [protected]
|
|
bool MxMapping::use_special_mapping [static, protected]
|
|
The documentation for this class was generated from the following file:
Copyright © 2003 inuTech GmbH. All rights reserved.