Static Protected Member Functions |
template<bool add, int dim> |
static void | global (TopologyId topologyId, integral_constant< int, dim >, CornerIterator &cit, const ctype &df, const LocalCoordinate &x, const ctype &rf, GlobalCoordinate &y) |
template<bool add> |
static void | global (TopologyId topologyId, integral_constant< int, 0 >, CornerIterator &cit, const ctype &df, const LocalCoordinate &x, const ctype &rf, GlobalCoordinate &y) |
template<bool add, int rows, int dim> |
static void | jacobianTransposed (TopologyId topologyId, integral_constant< int, dim >, CornerIterator &cit, const ctype &df, const LocalCoordinate &x, const ctype &rf, FieldMatrix< ctype, rows, cdim > &jt) |
template<bool add, int rows> |
static void | jacobianTransposed (TopologyId topologyId, integral_constant< int, 0 >, CornerIterator &cit, const ctype &df, const LocalCoordinate &x, const ctype &rf, FieldMatrix< ctype, rows, cdim > &jt) |
template<int dim> |
static bool | affine (TopologyId topologyId, integral_constant< int, dim >, CornerIterator &cit, JacobianTransposed &jt) |
static bool | affine (TopologyId topologyId, integral_constant< int, 0 >, CornerIterator &cit, JacobianTransposed &jt) |
template<class ct, int mydim, int cdim, class Traits = MultiLinearGeometryTraits< ct >>
class Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >
generic geometry implementation based on corner coordinates
Based on the recursive definition of the reference elements, the MultiLinearGeometry provides a generic implementation of a geometry given the corner coordinates.
The geometric mapping is multilinear in the classical sense only in the case of cubes; for simplices it is linear. The name is still justified, because the mapping satisfies the important property of begin linear along edges.
- Template Parameters
-
ct | coordinate type |
mydim | geometry dimension |
cdim | coordinate dimension |
Traits | traits allowing to tweak some implementation details (optional) |
The requirements on the traits are documented along with their default, MultiLinearGeometryTraits.
As an additional feature, this class allows to attach arbitrary user data to each object. This is used in GeometryGrid to implement reference counting.
template<class ct , int mydim, int cdim, class Traits = MultiLinearGeometryTraits< ct >>
evaluate the mapping
- Parameters
-
[in] | local | local coordinate to map |
- Returns
- corresponding global coordinate
Reimplemented in Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >.
References Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::local(), and Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::topologyId().
Referenced by Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::center(), Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >::global(), and Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::local().
template<class ct , int mydim, int cdim, class Traits = MultiLinearGeometryTraits< ct >>
obtain the integration element
If the Jacobian of the mapping is denoted by $J(x)$, the integration integration element
is given by
- Parameters
-
[in] | local | local coordinate to evaluate the integration element in |
- Returns
- the integration element
.
- Note
- For affine mappings, it is more efficient to call jacobianInverseTransposed before integrationElement, if both are required.
Reimplemented in Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >.
References Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::jacobianTransposed().
Referenced by Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >::integrationElement(), and Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::volume().
template<class ct , int mydim, int cdim, class Traits >
obtain the transposed of the Jacobian's inverse
The Jacobian's inverse is defined as a pseudo-inverse. If we denote the Jacobian by
, the following condition holds:
Reimplemented in Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >.
References Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::JacobianInverseTransposed::setup().
Referenced by Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >::jacobianInverseTransposed().
template<class ct , int mydim, int cdim, class Traits = MultiLinearGeometryTraits< ct >>
obtain the transposed of the Jacobian
- Parameters
-
[in] | local | local coordinate to evaluate Jacobian in |
- Returns
- a reference to the transposed of the Jacobian
- Note
- The returned reference is reused on the next call to JacobianTransposed, destroying the previous value.
Reimplemented in Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >.
References Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::jacobianTransposed_, Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::local(), and Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::topologyId().
Referenced by Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::integrationElement(), Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >::jacobianTransposed(), and Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::local().
template<class ct , int mydim, int cdim, class Traits = MultiLinearGeometryTraits< ct >>
evaluate the inverse mapping
- Parameters
-
[in] | global | global coordinate to map |
- Returns
- corresponding local coordinate
- Note
- For given global coordinate y the returned local coordinate x that minimizes the following function over the local coordinate space spanned by the reference element.
Reimplemented in Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >.
References Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::global(), Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::jacobianTransposed(), Dune::ReferenceElement< ctype, dim >::position(), and Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::refElement().
Referenced by Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::global(), Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::jacobianTransposed(), and Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >::local().
template<class ct , int mydim, int cdim, class Traits = MultiLinearGeometryTraits< ct >>
obtain the volume of the mapping's image
- Note
- The current implementation just returns which is wrong for n-linear surface maps and other nonlinear maps.
Reimplemented in Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >.
References Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::integrationElement(), Dune::MultiLinearGeometry< ct, mydim, cdim, Traits >::refElement(), and Dune::ReferenceElement< ctype, dim >::volume().
Referenced by Dune::CachedMultiLinearGeometry< ct, mydim, cdim, Traits >::volume().