5#ifndef DUNE_GRID_CONCEPTS_GEOMETRY_HH
6#define DUNE_GRID_CONCEPTS_GEOMETRY_HH
10#include <dune/common/fmatrix.hh>
11#include <dune/common/fvector.hh>
12#include <dune/geometry/type.hh>
13#include <dune/grid/concepts/archetypes/geometry.hh>
15namespace Dune::Concept {
18concept ReferenceElement =
true;
20static_assert(ReferenceElement< Archetypes::ReferenceElement >);
29concept Geometry =
requires(
const G g,
typename G::GlobalCoordinate global,
typename G::LocalCoordinate local)
32 { G::mydimension } -> std::convertible_to<int>;
33 { G::coorddimension } -> std::convertible_to<int>;
34 { g.type() } -> std::same_as<Dune::GeometryType>;
35 { g.affine() } -> std::convertible_to<bool>;
36 { g.corners() } -> std::convertible_to<int>;
37 { g.corner(
int{}) } -> std::convertible_to<typename G::GlobalCoordinate>;
38 { g.global(local) } -> std::convertible_to<typename G::GlobalCoordinate>;
39 { g.local(global) } -> std::convertible_to<typename G::LocalCoordinate>;
40 { g.integrationElement(local) } -> std::convertible_to<typename G::Volume>;
41 { g.volume() } -> std::convertible_to<typename G::Volume>;
42 { g.center() } -> std::convertible_to<typename G::GlobalCoordinate>;
43 { g.jacobian(local) } -> std::convertible_to<typename G::Jacobian>;
44 { g.jacobianInverse(local) } -> std::convertible_to<typename G::JacobianInverse>;
45 { g.jacobianTransposed(local) } -> std::convertible_to<typename G::JacobianTransposed>;
46 { g.jacobianInverseTransposed(local) } -> std::convertible_to<typename G::JacobianInverseTransposed>;
47 { referenceElement(g) } -> ReferenceElement;
Model of a geometry object.
Definition: geometry.hh:29