dune-geometry
2.2.0
|
generic implementation of DUNE geometries More...
#include <dune/geometry/genericgeometry/geometry.hh>
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 BasicGeometry & | operator= (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 JacobianTransposed & | jacobianTransposed (const LocalCoordinate &local) const |
Compute the transpose of the Jacobian matrix of the transformation from the reference element into the world space. | |
const JacobianInverseTransposed & | jacobianInverseTransposed (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. |
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:
typedef CoordTraits :: ctype Dune::GenericGeometry::BasicGeometry< mydim, Traits >::ctype |
Type used for coordinate components.
typedef FieldVector< ctype, coorddimension > Dune::GenericGeometry::BasicGeometry< mydim, Traits >::GlobalCoordinate |
Type used for world coordinates.
typedef Mapping::JacobianInverseTransposed Dune::GenericGeometry::BasicGeometry< mydim, Traits >::Jacobian |
Type used for Jacobian matrices.
Reimplemented in Dune::MockGeometry< ctype, mydim, coorddim >.
typedef Jacobian Dune::GenericGeometry::BasicGeometry< mydim, Traits >::JacobianInverseTransposed |
typedef Mapping::JacobianTransposed Dune::GenericGeometry::BasicGeometry< mydim, Traits >::JacobianTransposed |
Type used for Jacobian matrices.
Reimplemented in Dune::MockGeometry< ctype, mydim, coorddim >.
typedef FieldVector< ctype, mydimension > Dune::GenericGeometry::BasicGeometry< mydim, Traits >::LocalCoordinate |
Type used for parameter coordinates.
typedef MappingProvider::Mapping Dune::GenericGeometry::BasicGeometry< mydim, Traits >::Mapping [protected] |
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry | ( | ) | [inline] |
Default constructor.
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry | ( | const unsigned int | topologyId, |
const CoordVector & | coords | ||
) | [inline] |
constructor
[in] | topologyId | topology id of the desired geometry |
[in] | coords | coordinates |
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry | ( | const unsigned int | topologyId, |
const CoordVector & | coords, | ||
const bool | affine | ||
) | [inline] |
constructor
[in] | topologyId | topology id of the desired geometry |
[in] | coords | coordinates |
[in] | affine | flag whether the mapping is affine |
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry | ( | const GeometryType & | type, |
const CoordVector & | coords | ||
) | [inline] |
Constructor using a GeometryType and a list of corner coordinates.
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).
[in] | father | geometry of entity E |
[in] | i | number of the subentity (in generic numbering) |
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::BasicGeometry | ( | const BasicGeometry< mydim, Traits > & | other | ) | [inline] |
Copy constructor.
Dune::GenericGeometry::BasicGeometry< mydim, Traits >::~BasicGeometry | ( | ) | [inline] |
Destructor.
bool Dune::GenericGeometry::BasicGeometry< mydim, Traits >::affine | ( | ) | const [inline] |
Return true if this is an affine geometry.
GlobalCoordinate Dune::GenericGeometry::BasicGeometry< mydim, Traits >::center | ( | ) | const [inline] |
return center of element
GlobalCoordinate Dune::GenericGeometry::BasicGeometry< mydim, Traits >::corner | ( | const int | i | ) | const [inline] |
Return the world coordinates of the i-th corner.
int Dune::GenericGeometry::BasicGeometry< mydim, Traits >::corners | ( | ) | const [inline] |
Return the number of corners.
GlobalCoordinate Dune::GenericGeometry::BasicGeometry< mydim, Traits >::global | ( | const LocalCoordinate & | local | ) | const [inline] |
Map local to global coordinates.
ctype Dune::GenericGeometry::BasicGeometry< mydim, Traits >::integrationElement | ( | const LocalCoordinate & | local | ) | const [inline] |
Return the factor $|det F|$ that appears in the integral transformation formula.
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().
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().
LocalCoordinate Dune::GenericGeometry::BasicGeometry< mydim, Traits >::local | ( | const GlobalCoordinate & | global | ) | const [inline] |
Map global to local coordinates.
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.
const BasicGeometry& Dune::GenericGeometry::BasicGeometry< mydim, Traits >::operator= | ( | const BasicGeometry< mydim, Traits > & | other | ) | [inline] |
Assignment from other BasicGeometry.
GeometryType Dune::GenericGeometry::BasicGeometry< mydim, Traits >::type | ( | ) | const [inline] |
Return the topological type of this geometry.
ctype Dune::GenericGeometry::BasicGeometry< mydim, Traits >::volume | ( | ) | const [inline] |
Return the volume of the element.
friend class BasicGeometry [friend] |
Be friend with other instantiations of the same class.
const int Dune::GenericGeometry::BasicGeometry< mydim, Traits >::coorddimension = Traits :: dimWorld [static] |
The dimension of the world space of this geometry.
const int Dune::GenericGeometry::BasicGeometry< mydim, Traits >::mydimension = mydim [static] |
The dimension of the parameter space of this geometry.