dune-geometry  2.2.0
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Types | Friends
Dune::GenericGeometry::BasicGeometry< mydim, Traits > Class Template Reference

generic implementation of DUNE geometries More...

#include <dune/geometry/genericgeometry/geometry.hh>

List of all members.

Classes

struct  Hybrid
struct  NonHybrid

Public Types

typedef CoordTraits::ctype ctype
 Type used for coordinate components.
typedef FieldVector< ctype,
mydimension
LocalCoordinate
 Type used for parameter coordinates.
typedef FieldVector< ctype,
coorddimension
GlobalCoordinate
 Type used for world coordinates.
typedef Mapping::JacobianTransposed JacobianTransposed
 Type used for Jacobian matrices.
typedef
Mapping::JacobianInverseTransposed 
Jacobian
 Type used for Jacobian matrices.
typedef Jacobian JacobianInverseTransposed

Public Member Functions

 BasicGeometry ()
 Default constructor.
template<class CoordVector >
 BasicGeometry (const unsigned int topologyId, const CoordVector &coords)
 constructor
template<class CoordVector >
 BasicGeometry (const unsigned int topologyId, const CoordVector &coords, const bool affine)
 constructor
template<class CoordVector >
 BasicGeometry (const GeometryType &type, const CoordVector &coords)
 Constructor using a GeometryType and a list of corner coordinates.
template<int fatherdim>
 BasicGeometry (const BasicGeometry< fatherdim, Traits > &father, int i)
 obtain a geometry for a subentity
 BasicGeometry (const BasicGeometry &other)
 Copy constructor.
 ~BasicGeometry ()
 Destructor.
const BasicGeometryoperator= (const BasicGeometry &other)
 Assignment from other BasicGeometry.
 operator bool () const
 bool cast
GeometryType type () const
 Return the topological type of this geometry.
int corners () const
 Return the number of corners.
GlobalCoordinate corner (const int i) const
 Return the world coordinates of the i-th corner.
GlobalCoordinate global (const LocalCoordinate &local) const
 Map local to global coordinates.
LocalCoordinate local (const GlobalCoordinate &global) const
 Map global to local coordinates.
GlobalCoordinate center () const
 return center of element
bool affine () const
 Return true if this is an affine geometry.
ctype integrationElement (const LocalCoordinate &local) const
 Return the factor $|det F|$ that appears in the integral transformation formula.
ctype volume () const
 Return the volume of the element.
const JacobianTransposedjacobianTransposed (const LocalCoordinate &local) const
 Compute the transpose of the Jacobian matrix of the transformation from the reference element into the world space.
const JacobianInverseTransposedjacobianInverseTransposed (const LocalCoordinate &local) const
 Compute the transpose of the inverse Jacobian matrix of the transformation from the reference element into the world space.

Static Public Attributes

static const int mydimension = mydim
 The dimension of the parameter space of this geometry.
static const int coorddimension = Traits :: dimWorld
 The dimension of the world space of this geometry.

Protected Types

typedef MappingProvider::Mapping Mapping

Friends

class BasicGeometry
 Be friend with other instantiations of the same class.

Detailed Description

template<int mydim, class Traits>
class Dune::GenericGeometry::BasicGeometry< mydim, Traits >

generic implementation of DUNE geometries

This class is provides a generic implementation of a DUNE geometry.

Parameters shared by all codimensions are summarized into one class parameter called Traits. The following default implementation can be used (via subclassing) to provide the necessary information. It contains exactly the required fields:

  template< class ctype, int dimG, int dimW >
  struct DefaultGeometryTraits
  {
    typedef DuneCoordTraits< ctype > CoordTraits;
    
    static const int dimGrid = dimG;
    static const int dimWorld = dimW;

    //   hybrid   [ true if Codim 0 is hybrid ]
    static const bool hybrid = true;
    //   topologyId [ for Codim 0, needed for (hybrid=false) ]
    // static const unsigned int topologyId = SimplexTopology< dimGrid >::type::id;

    // explained below
    template< class Topology >
    struct Mapping
    {
      typedef CornerMapping< CoordTraits, Topology, dimWorld > type;
    };

    // explained below
    struct Caching
    {
      static const EvaluationType evaluateJacobianTransposed = ComputeOnDemand;
      static const EvaluationType evaluateJacobianInverseTransposed = ComputeOnDemand;
      static const EvaluationType evaluateIntegrationElement = ComputeOnDemand;
      static const EvaluationType evaluateNormal = ComputeOnDemand;
    };
  };

The structure specifying the reference mapping is Traits::Mapping::type. An example implementation is the GenericGeometry::CornerMapping which defines the simple mapping taking corners of the reference elements to corner of the entity in space.

The central reference mapping specified by Traits::Mapping::type requires a constructor taking a single argument. The GenericGeometry::BasicGeometry has a constructor with one template argument which is passed on to the constructor of the reference mapping. The interface for the this class is GenericGeometry::Mapping.

To increase the efficiency of the geometry implementation, different strategies for the caching of parts of the geometry data is provided. The specifics are given by the structure Traits::Caching. Possible values are:

Note:
This class cannot be used directly as an implementation of Dune::Geometry. Its template parameter list differs from what is expected there from the engine. One of the following derived classes can be used instead:

Member Typedef Documentation

template<int mydim, class Traits>
typedef CoordTraits :: ctype Dune::GenericGeometry::BasicGeometry< mydim, Traits >::ctype

Type used for coordinate components.

template<int mydim, class Traits>
typedef FieldVector< ctype, coorddimension > Dune::GenericGeometry::BasicGeometry< mydim, Traits >::GlobalCoordinate

Type used for world coordinates.

template<int mydim, class Traits>
typedef Mapping::JacobianInverseTransposed Dune::GenericGeometry::BasicGeometry< mydim, Traits >::Jacobian

Type used for Jacobian matrices.

Note:
This is not a FieldMatrix but a proxy type that can be assigned to a FieldMatrix.

Reimplemented in Dune::MockGeometry< ctype, mydim, coorddim >.

template<int mydim, class Traits>
typedef Jacobian Dune::GenericGeometry::BasicGeometry< mydim, Traits >::JacobianInverseTransposed
template<int mydim, class Traits>
typedef Mapping::JacobianTransposed Dune::GenericGeometry::BasicGeometry< mydim, Traits >::JacobianTransposed

Type used for Jacobian matrices.

Note:
This is not a FieldMatrix but a proxy type that can be assigned to a FieldMatrix.

Reimplemented in Dune::MockGeometry< ctype, mydim, coorddim >.

template<int mydim, class Traits>
typedef FieldVector< ctype, mydimension > Dune::GenericGeometry::BasicGeometry< mydim, Traits >::LocalCoordinate

Type used for parameter coordinates.

template<int mydim, class Traits>
typedef MappingProvider::Mapping Dune::GenericGeometry::BasicGeometry< mydim, Traits >::Mapping [protected]

Constructor & Destructor Documentation

template<int mydim, class Traits>
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry ( ) [inline]

Default constructor.

template<int mydim, class Traits>
template<class CoordVector >
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry ( const unsigned int  topologyId,
const CoordVector &  coords 
) [inline]

constructor

Parameters:
[in]topologyIdtopology id of the desired geometry
[in]coordscoordinates
Deprecated:
template<int mydim, class Traits>
template<class CoordVector >
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry ( const unsigned int  topologyId,
const CoordVector &  coords,
const bool  affine 
) [inline]

constructor

Parameters:
[in]topologyIdtopology id of the desired geometry
[in]coordscoordinates
[in]affineflag whether the mapping is affine
Note:
It is assume that the flag affine is true if and only if the mapping is affine.
Deprecated:
template<int mydim, class Traits>
template<class CoordVector >
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry ( const GeometryType type,
const CoordVector &  coords 
) [inline]

Constructor using a GeometryType and a list of corner coordinates.

template<int mydim, class Traits>
template<int fatherdim>
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry ( const BasicGeometry< fatherdim, Traits > &  father,
int  i 
) [inline]

obtain a geometry for a subentity

Assume that we have a geometry for some entity d-dimensional E. This method can provide a geometry for the i-th subentity of E (of codimension d - mydimension).

Note:
This method can be more efficient than just building up the geometry for the subentity. For example, the subgeometry automatically inherits affinity.
Parameters:
[in]fathergeometry of entity E
[in]inumber of the subentity (in generic numbering)
template<int mydim, class Traits>
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry ( const BasicGeometry< mydim, Traits > &  other) [inline]

Copy constructor.

template<int mydim, class Traits>
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::~BasicGeometry ( ) [inline]

Destructor.


Member Function Documentation

template<int mydim, class Traits>
bool Dune::GenericGeometry::BasicGeometry< mydim, Traits >::affine ( ) const [inline]

Return true if this is an affine geometry.

template<int mydim, class Traits>
GlobalCoordinate Dune::GenericGeometry::BasicGeometry< mydim, Traits >::center ( ) const [inline]

return center of element

template<int mydim, class Traits>
GlobalCoordinate Dune::GenericGeometry::BasicGeometry< mydim, Traits >::corner ( const int  i) const [inline]

Return the world coordinates of the i-th corner.

template<int mydim, class Traits>
int Dune::GenericGeometry::BasicGeometry< mydim, Traits >::corners ( ) const [inline]

Return the number of corners.

template<int mydim, class Traits>
GlobalCoordinate Dune::GenericGeometry::BasicGeometry< mydim, Traits >::global ( const LocalCoordinate local) const [inline]

Map local to global coordinates.

template<int mydim, class Traits>
ctype Dune::GenericGeometry::BasicGeometry< mydim, Traits >::integrationElement ( const LocalCoordinate local) const [inline]

Return the factor $|det F|$ that appears in the integral transformation formula.

template<int mydim, class Traits>
const JacobianInverseTransposed& Dune::GenericGeometry::BasicGeometry< mydim, Traits >::jacobianInverseTransposed ( const LocalCoordinate local) const [inline]

Compute the transpose of the inverse Jacobian matrix of the transformation from the reference element into the world space.

Referenced by Dune::MockGeometry< ctype, mydim, coorddim >::jacobianInverseTransposed().

template<int mydim, class Traits>
const JacobianTransposed& Dune::GenericGeometry::BasicGeometry< mydim, Traits >::jacobianTransposed ( const LocalCoordinate local) const [inline]

Compute the transpose of the Jacobian matrix of the transformation from the reference element into the world space.

Referenced by Dune::MockGeometry< ctype, mydim, coorddim >::jacobianTransposed().

template<int mydim, class Traits>
LocalCoordinate Dune::GenericGeometry::BasicGeometry< mydim, Traits >::local ( const GlobalCoordinate global) const [inline]

Map global to local coordinates.

template<int mydim, class Traits>
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::operator bool ( ) const [inline]

bool cast

Like a pointer, a BasicGeometry casts to true if and only if it is properly initialized. If a geometry casts to false, none of the interface methods may be called.

template<int mydim, class Traits>
const BasicGeometry& Dune::GenericGeometry::BasicGeometry< mydim, Traits >::operator= ( const BasicGeometry< mydim, Traits > &  other) [inline]

Assignment from other BasicGeometry.

template<int mydim, class Traits>
GeometryType Dune::GenericGeometry::BasicGeometry< mydim, Traits >::type ( ) const [inline]

Return the topological type of this geometry.

template<int mydim, class Traits>
ctype Dune::GenericGeometry::BasicGeometry< mydim, Traits >::volume ( ) const [inline]

Return the volume of the element.


Friends And Related Function Documentation

template<int mydim, class Traits>
friend class BasicGeometry [friend]

Be friend with other instantiations of the same class.


Member Data Documentation

template<int mydim, class Traits>
const int Dune::GenericGeometry::BasicGeometry< mydim, Traits >::coorddimension = Traits :: dimWorld [static]

The dimension of the world space of this geometry.

template<int mydim, class Traits>
const int Dune::GenericGeometry::BasicGeometry< mydim, Traits >::mydimension = mydim [static]

The dimension of the parameter space of this geometry.


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