6 #include <dune/common/typetraits.hh> 7 #include <dune/geometry/type.hh> 13 template <
class E,
class = std::
void_t<>>
17 using LocalGeometry =
typename E::Geometry;
22 struct ContextTypes<I,
std::void_t<decltype(std::declval<I>().inside())>>
24 using Entity =
typename I::Entity;
25 using LocalGeometry =
typename I::LocalGeometry;
45 using ContextType = Impl::ContextTypes<LC>;
48 using LocalContext = LC;
49 using Element =
typename ContextType::Entity;
50 using Geometry =
typename Element::Geometry;
51 using LocalGeometry =
typename ContextType::LocalGeometry;
53 using IsEntity = std::is_same<Element, LocalContext>;
56 dim = Geometry::mydimension,
57 dow = Geometry::coorddimension
61 ContextGeometry(LocalContext
const& localContext, Element
const& element, Geometry
const& geometry)
62 : localContext_(&localContext)
64 , geometry_(&geometry)
77 return *localContext_;
89 return localGeometry_impl(IsEntity{});
96 template <
class Coordinate>
97 decltype(
auto) local(Coordinate const& p)
const 99 return local_impl(p, IsEntity{});
103 template <
class Coordinate>
104 decltype(
auto) global(Coordinate const& p)
const 106 return geometry_->global(p);
110 Dune::GeometryType
type()
const 112 return localContext_->type();
117 template <
class Coordinate>
120 return localGeometry().integrationElement(p);
126 template <
class Coordinate>
127 Coordinate
const& local_impl(Coordinate
const& p, std::true_type)
const 133 template <
class Coordinate>
134 auto local_impl(Coordinate
const& p, std::false_type)
const 136 return localGeometry().global(p);
140 Geometry
const& localGeometry_impl(std::true_type)
const 146 LocalGeometry
const& localGeometry_impl(std::false_type)
const 149 localGeometry_.emplace(localContext_->geometryInInside());
151 return *localGeometry_;
155 LocalContext
const* localContext_;
156 Element
const* element_;
157 Geometry
const* geometry_;
160 mutable std::optional<LocalGeometry> localGeometry_;
LocalGeometry const & localGeometry() const
Return the geometry of the element, or geometryInInside of the intersection.
Definition: ContextGeometry.hpp:87
Element const & element() const
Return the bound element (entity of codim 0)
Definition: ContextGeometry.hpp:69
Definition: FieldMatVec.hpp:12
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
auto integrationElement(Coordinate const &p) const
Definition: ContextGeometry.hpp:118
ContextGeometry(LocalContext const &localContext, Element const &element, Geometry const &geometry)
Constructor. Stores pointer to localContext, element, and geometry.
Definition: ContextGeometry.hpp:61
Geometry const & geometry() const
Return the geometry of the Element.
Definition: ContextGeometry.hpp:81
Wrapper class for element and geometry.
Definition: ContextGeometry.hpp:43
LocalContext const & localContext() const
Return the LocalContext, either the element or an intersection.
Definition: ContextGeometry.hpp:75
Dune::GeometryType type() const
Return the geometry-type of the localContext.
Definition: ContextGeometry.hpp:110