5#ifndef DUNE_GEOMETRY_TEST_REFERENCEELEMENTGEOMETRY_HH
6#define DUNE_GEOMETRY_TEST_REFERENCEELEMENTGEOMETRY_HH
10#include <dune/geometry/referenceelements.hh>
20 friend const A& operator* (IdentityMatrix,
const A& a) {
return a; }
24 friend const A& operator* (
const A& a, IdentityMatrix) {
return a; }
27 friend IdentityMatrix operator* (IdentityMatrix, IdentityMatrix) {
return {}; }
29 friend std::ostream& operator<< (std::ostream& out, IdentityMatrix)
35 template <
class K,
int n>
36 operator FieldMatrix<K,n,n> ()
const
39 for (
int i = 0; i < n; ++i)
61template <
class RefElem>
62class ReferenceElementGeometry
63 :
public RefElem::template Codim<0>::Geometry
65 using Base =
typename RefElem::template Codim<0>::Geometry;
68 using LocalCoordinate =
typename RefElem::Coordinate;
69 using GlobalCoordinate =
typename RefElem::Coordinate;
70 using Jacobian = Impl::IdentityMatrix;
71 using JacobianTransposed = Impl::IdentityMatrix;
72 using JacobianInverse = Impl::IdentityMatrix;
73 using JacobianInverseTransposed = Impl::IdentityMatrix;
76 constexpr explicit ReferenceElementGeometry (
const RefElem& refElem)
77 : Base{refElem.template geometry<0>(0)}
81 constexpr const LocalCoordinate& local (
const GlobalCoordinate& global)
const noexcept
87 constexpr const GlobalCoordinate& global (
const LocalCoordinate& local)
const noexcept
93 constexpr Jacobian jacobian (
const LocalCoordinate& local)
const noexcept
99 constexpr JacobianTransposed jacobianTransposed (
const LocalCoordinate& local)
const noexcept
101 return JacobianTransposed{};
105 constexpr JacobianInverse jacobianInverse (
const LocalCoordinate& local)
const noexcept
107 return JacobianInverse{};
111 constexpr JacobianInverseTransposed jacobianInverseTransposed (
const LocalCoordinate& local)
const noexcept
113 return JacobianInverseTransposed{};
134template <
class Geometry>
135class LocalDerivativeGeometry
136 :
public ReferenceElementGeometry<
137 typename Dune::ReferenceElements<typename Geometry::ctype, Geometry::mydimension>::ReferenceElement >
141 using Base = ReferenceElementGeometry<ReferenceElement>;
151 explicit LocalDerivativeGeometry (
const Geometry& geometry) noexcept
153 , geometry_(geometry)
157 Jacobian jacobian (
const LocalCoordinate& local)
const
159 return geometry_.jacobian(local);
163 JacobianTransposed jacobianTransposed (
const LocalCoordinate& local)
const
165 return geometry_.jacobianTransposed(local);
169 JacobianInverse jacobianInverse (
const LocalCoordinate& local)
const
171 return geometry_.jacobianInverse(local);
175 JacobianInverseTransposed jacobianInverseTransposed (
const LocalCoordinate& local)
const
177 return geometry_.jacobianInverseTransposed(local);
Implementation::JacobianTransposed JacobianTransposed
type of jacobian transposed
Definition: geometry.hh:131
Implementation::JacobianInverseTransposed JacobianInverseTransposed
type of jacobian inverse transposed
Definition: geometry.hh:120
Std::detected_or_t< JacobianInverseDefault, JacobianInverseOfImplementation, Implementation > JacobianInverse
type of jacobian inverse
Definition: geometry.hh:178
FieldVector< ctype, mydim > LocalCoordinate
type of local coordinates
Definition: geometry.hh:103
Std::detected_or_t< JacobianDefault, JacobianOfImplementation, Implementation > Jacobian
type of jacobian
Definition: geometry.hh:189
unspecified value type referenceElement(T &&... t)
Returns a reference element for the objects t....
Dune namespace.
Definition: alignedallocator.hh:13
Class providing access to the singletons of the reference elements.
Definition: referenceelements.hh:128
typename Container::ReferenceElement ReferenceElement
The reference element type.
Definition: referenceelements.hh:146