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::

HandleId List of all members.

Public Methods

 MxMapping (const MxFiniteElement &mfe_)
 MxMapping (const FiniteElement &fe_)
 ~MxMapping ()
real N (int field_no, int basis_no)
real N (const FiniteElement &fe, int basis_no)
real dN (int field_no, int basis_no, int deriv_field)
real dN (const FiniteElement &fe, int basis_no, int deriv_field)
Ptv(real)& getNormalVector (int side)
Ptv(real)& getTangentVector (int side)
int determineSide (Ptv(real) &loc_pt)
int determineSide3D (Ptv(real) &loc_pt)
int determineSide2D (Ptv(real) &loc_pt)
void refill ()
bool ok ()
void print ()

Static Public Methods

void useSpecialMapping (bool mapping)

Protected Methods

Ptv(real)& getNormalVector2D (int side)
Ptv(real)& getNormalVector3D (int side)

Protected Attributes

int elm_no
int nsd
int nbf
bool external_mxelm
int scalar_field
Handle(MxFiniteElementmfe
VecSimple(bool) map_element
MatSimple(real) nv_mat
VecSimple(int) dir
int current_side
const Mat(real)* geom
Handle(FieldsFEfields
Ptv(real) nv
Ptv(real) tv
bool dabla

Static Protected Attributes

bool use_special_mapping

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,

  y = M(x) = x_0 + Bx, 
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::MxMapping ( const MxFiniteElement & mfe_ )
 

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

MxMapping::MxMapping ( const FiniteElement & fe_ )
 

See documentation of one of the overloaded constructor.

MxMapping::~MxMapping ( ) [inline]
 


Member Function Documentation

real MxMapping::N ( const FiniteElement & fe,
int basis_no )
 

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.

bool MxMapping::ok ( )
 

void MxMapping::print ( )
 

void MxMapping::refill ( )
 

void MxMapping::useSpecialMapping ( bool mapping ) [static]
 


Member Data Documentation

int MxMapping::current_side [protected]
 

bool MxMapping::dabla [protected]
 

VecSimple(int) MxMapping::dir [protected]
 

int MxMapping::elm_no [protected]
 

bool MxMapping::external_mxelm [protected]
 

Handle(FieldsFE) MxMapping::fields [protected]
 

const Mat(real) * MxMapping::geom [protected]
 

VecSimple(bool) MxMapping::map_element [protected]
 

Handle(MxFiniteElement) MxMapping::mfe [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.