Dune::AlbertaGridGeometry< mydim, cdim, GridImp > Class Template Reference

#include <agrid.hh>

Inheritance diagram for Dune::AlbertaGridGeometry< mydim, cdim, GridImp >:

Dune::GeometryDefaultImplementation< mydim, cdim, GridImp, GeometryImp > List of all members.

Detailed Description

template<int mydim, int cdim, class GridImp>
class Dune::AlbertaGridGeometry< mydim, cdim, GridImp >

Defines the geometry part of a mesh entity. Works for all dimensions, element types and dime of world. Provides reference element and mapping between local and global coordinates. The element may have different implementations because the mapping can be done more efficient for structured meshes than for unstructured meshes.

dim: An element is a polygonal in a hyperplane of dimension dim. 0 <= dim <= 3 is typically dim=0 is a point.

dimworld: Each corner is a point with dimworld coordinates.


Public Types

typedef GridImp GridType
 Methods that not belong to the Interface, but have to be public.

Public Member Functions

 AlbertaGridGeometry ()
 Default constructor.
 AlbertaGridGeometry (const int child, const int orientation)
 constructor building geometry in father
const GeometryType & type () const
int corners () const
 return the number of corners of this element. Corners are numbered 0...n-1
const FieldVector< albertCtype,
cdim > & 
operator[] (int i) const
 access to coordinates of corners. Index is the number of the corner
FieldVector< albertCtype,
cdim > 
global (const FieldVector< albertCtype, mydim > &local) const
FieldVector< albertCtype,
mydim > 
local (const FieldVector< albertCtype, cdim > &global) const
bool checkInside (const FieldVector< albertCtype, mydim > &local) const
 returns true if the point in local coordinates is inside reference element
albertCtype integrationElement (const FieldVector< albertCtype, mydim > &local) const
albertCtype volume () const
 return volume of the geometry
const FieldMatrix< albertCtype,
mydim, mydim > & 
jacobianInverseTransposed (const FieldVector< albertCtype, mydim > &local) const
template<class GeometryType, class LocalGeomType>
bool builtLocalGeom (const GeometryType &geo, const LocalGeomType &lg, ALBERTA EL_INFO *elInfo, int face)
void initGeom ()
 no interface method
void print (std::ostream &ss) const

Member Typedef Documentation

template<int mydim, int cdim, class GridImp>
typedef GridImp Dune::AlbertaGridGeometry< mydim, cdim, GridImp >::GridType

Methods that not belong to the Interface, but have to be public.

generate the geometry for the ALBERTA EL_INFO no interface method


Member Function Documentation

template<int mydim, int cdim, class GridImp>
const GeometryType & Dune::AlbertaGridGeometry< mydim, cdim, GridImp >::type (  )  const [inline]

return the element type identifier line , triangle or tetrahedron, depends on dim

template<int mydim, int cdim, class GridImp>
FieldVector< albertCtype, cdim > Dune::AlbertaGridGeometry< mydim, cdim, GridImp >::global ( const FieldVector< albertCtype, mydim > &  local  )  const [inline]

maps a local coordinate within reference element to global coordinate in element

template<int mydim, int cdim, class GridImp>
FieldVector< albertCtype, mydim > Dune::AlbertaGridGeometry< mydim, cdim, GridImp >::local ( const FieldVector< albertCtype, cdim > &  global  )  const [inline]

maps a global coordinate within the element to a local coordinate in its reference element

template<int mydim, int cdim, class GridImp>
albertCtype Dune::AlbertaGridGeometry< mydim, cdim, GridImp >::integrationElement ( const FieldVector< albertCtype, mydim > &  local  )  const [inline]

Copy from sgrid.hh:

Integration over a general element is done by integrating over the reference element and using the transformation from the reference element to the global element as follows:

\[\int\limits_{\Omega_e} f(x) dx = \int\limits_{\Omega_{ref}} f(g(l)) A(l) dl \]

where $g$ is the local to global mapping and $A(l)$ is the integration element.

For a general map $g(l)$ involves partial derivatives of the map (surface element of the first kind if $d=2,w=3$, determinant of the Jacobian of the transformation for $d=w$, $\|dg/dl\|$ for $d=1$).

For linear elements, the derivatives of the map with respect to local coordinates do not depend on the local coordinates and are the same over the whole element.

For a structured mesh where all edges are parallel to the coordinate axes, the computation is the length, area or volume of the element is very simple to compute.

Each grid module implements the integration element with optimal efficieny. This will directly translate in substantial savings in the computation of finite element stiffness matrices.

template<int mydim, int cdim, class GridImp>
const FieldMatrix< albertCtype, mydim, mydim > & Dune::AlbertaGridGeometry< mydim, cdim, GridImp >::jacobianInverseTransposed ( const FieldVector< albertCtype, mydim > &  local  )  const [inline]

can only be called for dim=dimworld! Note that if both methods are called on the same element, then call jacobianInverseTransposed first because integration element is calculated during calculation of the transposed of the jacobianInverse

template<int mydim, int cdim, class GridImp>
template<class GeometryType, class LocalGeometryType>
bool Dune::AlbertaGridGeometry< mydim, cdim, GridImp >::builtLocalGeom ( const GeometryType &  geo,
const LocalGeomType &  lg,
ALBERTA EL_INFO *  elInfo,
int  face 
) [inline]

build geometry for intersectionSelfLocal and intersectionNeighborLocal

template<int mydim, int cdim, class GridImp>
void Dune::AlbertaGridGeometry< mydim, cdim, GridImp >::print ( std::ostream &  ss  )  const [inline]

print internal data no interface method


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

Generated on 12 Dec 2007 with Doxygen (ver 1.5.1)