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> 20 static_assert(ReferenceElement< Archetypes::ReferenceElement >);
29 concept
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>;
50 static_assert(
Geometry< Archetypes::Geometry<2,3> >);
54 #endif // DUNE_GRID_CONCEPTS_GEOMETRY_HH Wrapper class for geometries.
Definition: common/geometry.hh:70
GeometryType type() const
Return the type of the reference element. The type can be used to access the Dune::ReferenceElement.
Definition: common/geometry.hh:194
auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo) -> decltype(referenceElement(geo, geo.impl()))
Definition: common/geometry.hh:558
concept ReferenceElement
Definition: concepts/geometry.hh:18
Definition: concepts/datahandle.hh:14