Loading...
Searching...
No Matches
intersection.hh
Go to the documentation of this file.
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-dune-grid-glue-exception
#ifndef DUNE_GRIDGLUE_ADAPTER_INTERSECTION_HH
#define DUNE_GRIDGLUE_ADAPTER_INTERSECTION_HH
#include <algorithm>
#include <optional>
#include <tuple>
#include <dune/common/deprecated.hh>
#include <dune/common/version.hh>
#include <dune/geometry/affinegeometry.hh>
#include <dune/geometry/referenceelements.hh>
#include <dune/grid-glue/gridglue.hh>
#define ONLY_SIMPLEX_INTERSECTIONS
namespace Dune {
namespace GridGlue {
// forward declaration
template<typename P0, typename P1>
class IntersectionIndexSet;
template<typename P0, typename P1>
class IntersectionData
{
public:
typedef ::Dune::GridGlue::GridGlue<P0, P1> GridGlue;
typedef typename GridGlue::IndexType IndexType;
static constexpr int coorddim = GridGlue::dimworld;
private:
// intermediate quantities
template<int side>
static constexpr int dim() { return GridGlue::template GridView<side>::Grid::dimension - GridGlue::template GridPatch<side>::codim; }
public:
static constexpr int mydim = dim<0>() < dim<1>() ? dim<0>() : dim<1>();
template<int side>
using GridLocalGeometry = AffineGeometry<
typename GridGlue::template GridView<side>::ctype, mydim, GridGlue::template GridView<side>::dimension>;
using Grid0LocalGeometry [[deprecated("please use GridLocalGeometry<0> instead")]] = GridLocalGeometry<0>;
using Grid1LocalGeometry [[deprecated("please use GridLocalGeometry<1> instead")]] = GridLocalGeometry<1>;
template<int side>
using GridGeometry = AffineGeometry<
typename GridGlue::template GridView<side>::ctype, mydim, GridGlue::template GridView<side>::dimensionworld>;
using Grid0Geometry [[deprecated("please use GridGeometry<0> instead")]] = GridGeometry<0>;
using Grid1Geometry [[deprecated("please use GridGeometry<1> instead")]] = GridGeometry<1>;
template<int side>
using GridIndexType = typename GridGlue::template GridView<side>::IndexSet::IndexType;
using Grid0IndexType [[deprecated("please use GridIndexType<0> instead")]] = GridIndexType<0>;
using Grid1IndexType [[deprecated("please use GridIndexType<1> instead")]] = GridIndexType<1>;
IntersectionData(const GridGlue& glue, unsigned int mergeindex, unsigned int offset, bool grid0local, bool grid1local);
IntersectionData() = default;
/* Accessor Functions */
template<int side>
const GridLocalGeometry<side>& localGeometry(unsigned int parentId = 0) const
{ return *std::get<side>(sideData_).gridlocalgeom[parentId]; }
template<int side>
const GridGeometry<side>& geometry() const
{ return *std::get<side>(sideData_).gridgeom; }
template<int side>
bool local() const
{ return std::get<side>(sideData_).gridlocal; }
template<int side>
IndexType index(unsigned int parentId = 0) const
{ return std::get<side>(sideData_).gridindices[parentId]; }
template<int side>
IndexType parents() const
{ return std::get<side>(sideData_).gridindices.size(); }
private:
template<int side>
void initializeGeometry(const GridGlue& glue, unsigned mergeindex);
/* M E M B E R V A R I A B L E S */
public:
IndexType index_;
private:
template<int side>
struct SideData {
bool gridlocal = false;
std::vector< GridIndexType<side> > gridindices;
std::vector< std::optional< GridLocalGeometry<side> > > gridlocalgeom;
std::optional< GridGeometry<side> > gridgeom;
};
std::tuple< SideData<0>, SideData<1> > sideData_;
};
template<typename P0, typename P1>
template<int side>
void IntersectionData<P0, P1>::initializeGeometry(const GridGlue& glue, unsigned mergeindex)
{
auto& data = std::get<side>(sideData_);
const unsigned n_parents = glue.merger_->template parents<side>(mergeindex);
// init containers
data.gridindices.resize(n_parents);
data.gridlocalgeom.resize(n_parents);
// default values
data.gridindices[0] = 0;
static constexpr int nSimplexCorners = mydim + 1;
using ctype = typename GridGlue::ctype;
// initialize the local and the global geometries of grid `side`
// compute the coordinates of the subface's corners in codim 0 entity local coordinates
static constexpr int elementdim = GridGlue::template GridView<side>::template Codim<0>::Geometry::mydimension;
// coordinates within the subentity that contains the remote intersection
std::array<Dune::FieldVector< ctype, dim<side>() >, nSimplexCorners> corners_subEntity_local;
for (unsigned int par = 0; par < n_parents; ++par) {
for (int i = 0; i < nSimplexCorners; ++i)
corners_subEntity_local[i] = glue.merger_->template parentLocal<side>(mergeindex, i, par);
// Coordinates of the remote intersection corners wrt the element coordinate system
std::array<Dune::FieldVector<ctype, elementdim>, nSimplexCorners> corners_element_local;
if (data.gridlocal) {
data.gridindices[par] = glue.merger_->template parent<side>(mergeindex,par);
typename GridGlue::template GridPatch<side>::LocalGeometry
gridLocalGeometry = glue.template patch<side>().geometryLocal(data.gridindices[par]);
for (std::size_t i=0; i<corners_subEntity_local.size(); i++) {
corners_element_local[i] = gridLocalGeometry.global(corners_subEntity_local[i]);
}
// set the corners of the local geometry
#ifdef ONLY_SIMPLEX_INTERSECTIONS
const Dune::GeometryType type = Dune::GeometryTypes::simplex(mydim);
#else
#error Not Implemented
#endif
data.gridlocalgeom[par].emplace(type, corners_element_local);
// Add world geometry only for 0th parent
if (par == 0) {
typename GridGlue::template GridPatch<side>::Geometry
gridWorldGeometry = glue.template patch<side>().geometry(data.gridindices[par]);
// world coordinates of the remote intersection corners
std::array<Dune::FieldVector<ctype, GridGlue::template GridView<side>::dimensionworld>, nSimplexCorners> corners_global;
for (std::size_t i=0; i<corners_subEntity_local.size(); i++) {
corners_global[i] = gridWorldGeometry.global(corners_subEntity_local[i]);
}
data.gridgeom.emplace(type, corners_global);
}
}
}
}
template<typename P0, typename P1>
IntersectionData<P0, P1>::IntersectionData(const GridGlue& glue, unsigned int mergeindex, unsigned int offset,
bool grid0local, bool grid1local)
: index_(mergeindex+offset)
{
// if an invalid index is given do not proceed!
// (happens when the parent GridGlue initializes the "end"-Intersection)
assert (0 <= mergeindex || mergeindex < glue.index__sz);
std::get<0>(sideData_).gridlocal = grid0local;
std::get<1>(sideData_).gridlocal = grid1local;
initializeGeometry<0>(glue, mergeindex);
initializeGeometry<1>(glue, mergeindex);
}
template<typename P0, typename P1, int inside, int outside>
struct IntersectionTraits
{
using GridGlue = ::Dune::GridGlue::GridGlue<P0, P1>;
using IntersectionData = Dune::GridGlue::IntersectionData<P0, P1>;
using InsideGridView = typename GridGlue::template GridView<inside>;
using OutsideGridView = typename GridGlue::template GridView<outside>;
using InsideLocalGeometry = typename IntersectionData::template GridLocalGeometry<inside>;
using OutsideLocalGeometry = typename IntersectionData::template GridLocalGeometry<outside>;
using Geometry = typename IntersectionData::template GridGeometry<inside>;
using OutsideGeometry = typename IntersectionData::template GridGeometry<outside>;
static constexpr auto coorddim = IntersectionData::coorddim;
static constexpr auto mydim = IntersectionData::mydim;
static constexpr int insidePatch = inside;
static constexpr int outsidePatch = outside;
using ctype = typename GridGlue::ctype;
using LocalCoordinate = Dune::FieldVector<ctype, mydim>;
using GlobalCoordinate = Dune::FieldVector<ctype, coorddim>;
};
template<typename P0, typename P1, int I, int O>
class Intersection
{
public:
typedef IntersectionTraits<P0,P1,I,O> Traits;
typedef typename Traits::GridGlue GridGlue;
typedef typename Traits::IntersectionData IntersectionData;
typedef typename Traits::InsideGridView InsideGridView;
typedef typename Traits::InsideLocalGeometry InsideLocalGeometry;
typedef typename Traits::OutsideGridView OutsideGridView;
typedef typename Traits::OutsideLocalGeometry OutsideLocalGeometry;
typedef typename Traits::OutsideGeometry OutsideGeometry;
typedef typename Traits::Geometry Geometry;
typedef typename Traits::ctype ctype;
typedef typename InsideGridView::Traits::template Codim<0>::Entity InsideEntity;
typedef typename OutsideGridView::Traits::template Codim<0>::Entity OutsideEntity;
typedef typename Traits::LocalCoordinate LocalCoordinate;
typedef typename Traits::GlobalCoordinate GlobalCoordinate;
static constexpr auto coorddim = Traits::coorddim;
static constexpr auto mydim = Traits::mydim;
static constexpr int insidePatch = Traits::insidePatch;
static constexpr int outsidePatch = Traits::outsidePatch;
// typedef unsigned int IndexType;
private:
static constexpr int codimensionWorld = coorddim - mydim;
public:
/* C O N S T R U C T O R S */
Intersection(const GridGlue* glue, const IntersectionData* i) :
glue_(glue), i_(i) {}
/* F U N C T I O N A L I T Y */
InsideEntity
inside(unsigned int parentId = 0) const
{
assert(self());
return glue_->template patch<I>().element(i_->template index<I>(parentId));
}
OutsideEntity
outside(unsigned int parentId = 0) const
{
assert(neighbor());
return glue_->template patch<O>().element(i_->template index<O>(parentId));
}
bool conforming() const
{
throw Dune::NotImplemented();
}
const InsideLocalGeometry& geometryInInside(unsigned int parentId = 0) const
{
return i_->template localGeometry<I>(parentId);
}
const OutsideLocalGeometry& geometryInOutside(unsigned int parentId = 0) const
{
return i_->template localGeometry<O>(parentId);
}
const Geometry& geometry() const
{
return i_->template geometry<I>();
}
const OutsideGeometry& geometryOutside() const // DUNE_DEPRECATED
{
return i_->template geometry<O>();
}
Dune::GeometryType type() const
{
#ifdef ONLY_SIMPLEX_INTERSECTIONS
return Dune::GeometryTypes::simplex(mydim);
#else
#error Not Implemented
#endif
}
bool self() const
{
return i_->template local<I>();
}
size_t neighbor(unsigned int g = 0) const
{
if (g == 0 && i_->template local<O>()) {
return i_->template parents<O>();
} else if (g == 1 && i_->template local<I>()) {
return i_->template parents<I>();
}
return 0;
}
int indexInInside(unsigned int parentId = 0) const
{
assert(self());
return glue_->template patch<I>().indexInInside(i_->template index<I>(parentId));
}
int indexInOutside(unsigned int parentId = 0) const
{
assert(neighbor());
return glue_->template patch<O>().indexInInside(i_->template index<O>(parentId));
}
GlobalCoordinate outerNormal(const LocalCoordinate &local) const
{
GlobalCoordinate normal;
if (codimensionWorld == 0)
DUNE_THROW(Dune::Exception, "There is no normal vector to a full-dimensional intersection");
else if (codimensionWorld == 1) {
/* TODO: Implement the general n-ary cross product here */
const auto jacobianTransposed = geometry().jacobianTransposed(local);
if (mydim==1) {
normal[0] = - jacobianTransposed[0][1];
normal[1] = jacobianTransposed[0][0];
} else if (mydim==2) {
normal[0] = (jacobianTransposed[0][1] * jacobianTransposed[1][2] - jacobianTransposed[0][2] * jacobianTransposed[1][1]);
normal[1] = - (jacobianTransposed[0][0] * jacobianTransposed[1][2] - jacobianTransposed[0][2] * jacobianTransposed[1][0]);
normal[2] = (jacobianTransposed[0][0] * jacobianTransposed[1][1] - jacobianTransposed[0][1] * jacobianTransposed[1][0]);
} else
DUNE_THROW(Dune::NotImplemented, "Remote intersections don't implement the 'outerNormal' method for " << mydim << "-dimensional intersections yet");
} else
DUNE_THROW(Dune::NotImplemented, "Remote intersections don't implement the 'outerNormal' method for intersections with codim >= 2 yet");
return normal;
}
GlobalCoordinate unitOuterNormal(const LocalCoordinate &local) const
{
GlobalCoordinate normal = outerNormal(local);
normal /= normal.two_norm();
return normal;
}
GlobalCoordinate integrationOuterNormal(const LocalCoordinate &local) const
{
return (unitOuterNormal(local) *= geometry().integrationElement(local));
}
GlobalCoordinate centerUnitOuterNormal () const
{
return unitOuterNormal(ReferenceElements<ctype,mydim>::general(type()).position(0,0));
}
Intersection<P0,P1,O,I> flip() const
{
return Intersection<P0,P1,O,I>(glue_,i_);
}
#ifdef QUICKHACK_INDEX
typedef typename GridGlue::IndexType IndexType;
IndexType index() const
{
return i_->index_;
}
#endif
private:
friend class IntersectionIndexSet<P0,P1>;
/* M E M B E R V A R I A B L E S */
const GridGlue* glue_;
const IntersectionData* i_;
};
} // end namespace GridGlue
} // end namespace Dune
#endif // DUNE_GRIDGLUE_ADAPTER_INTERSECTION_HH
gridglue.hh
Central component of the module implementing the coupling of two grids.
Dune
Definition gridglue.hh:37
Dune::GridGlue
Definition gridglue.hh:38
Dune::GridGlue::GridGlue
sequential adapter to couple two grids at specified close together boundaries
Definition gridglue.hh:67
Dune::GridGlue::GridGlue::IndexType
unsigned int IndexType
Definition gridglue.hh:147
Dune::GridGlue::GridGlue::ctype
PromotionTraits< typenameGridView< 0 >::ctype, typenameGridView< 1 >::ctype >::PromotedType ctype
The type used for coordinates.
Definition gridglue.hh:171
Dune::GridGlue::GridGlue::dimworld
static constexpr int dimworld
export the world dimension This is the maximum of the extractors' world dimensions.
Definition gridglue.hh:166
Dune::GridGlue::IntersectionData
storage class for Dune::GridGlue::Intersection related data
Definition intersection.hh:38
Dune::GridGlue::IntersectionData::IndexType
GridGlue::IndexType IndexType
Definition intersection.hh:42
Dune::GridGlue::IntersectionData::localGeometry
const GridLocalGeometry< side > & localGeometry(unsigned int parentId=0) const
Definition intersection.hh:85
Dune::GridGlue::IntersectionData::coorddim
static constexpr int coorddim
Dimension of the world space of the intersection.
Definition intersection.hh:45
Dune::GridGlue::IntersectionData::GridIndexType
typename GridGlue::template GridView< side >::IndexSet::IndexType GridIndexType
Definition intersection.hh:71
Dune::GridGlue::IntersectionData::index
IndexType index(unsigned int parentId=0) const
Definition intersection.hh:97
Dune::GridGlue::IntersectionData::parents
IndexType parents() const
Definition intersection.hh:101
Dune::GridGlue::IntersectionData::geometry
const GridGeometry< side > & geometry() const
Definition intersection.hh:89
Dune::GridGlue::IntersectionData::GridGeometry
AffineGeometry< typename GridGlue::template GridView< side >::ctype, mydim, GridGlue::template GridView< side >::dimensionworld > GridGeometry
Definition intersection.hh:64
Dune::GridGlue::IntersectionData::local
bool local() const
Definition intersection.hh:93
Dune::GridGlue::IntersectionData::GridGlue
::Dune::GridGlue::GridGlue< P0, P1 > GridGlue
Definition intersection.hh:40
Dune::GridGlue::IntersectionData::mydim
static constexpr int mydim
Dimension of the intersection.
Definition intersection.hh:54
Dune::GridGlue::IntersectionData::IntersectionData
IntersectionData(const GridGlue &glue, unsigned int mergeindex, unsigned int offset, bool grid0local, bool grid1local)
Constructor the n'th IntersectionData of a given GridGlue.
Definition intersection.hh:209
Dune::GridGlue::IntersectionData::GridLocalGeometry
AffineGeometry< typename GridGlue::template GridView< side >::ctype, mydim, GridGlue::template GridView< side >::dimension > GridLocalGeometry
Definition intersection.hh:57
Dune::GridGlue::IntersectionData::index_
IndexType index_
index of this intersection after GridGlue interface
Definition intersection.hh:112
Dune::GridGlue::IntersectionData::IntersectionData
IntersectionData()=default
Default Constructor.
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::OutsideLocalGeometry
Traits::OutsideLocalGeometry OutsideLocalGeometry
Definition intersection.hh:271
Dune::GridGlue::Intersection::flip
Intersection< P0, P1, O, I > flip() const
Return a copy of the intersection with inside and outside switched.
Definition intersection.hh:474
Dune::GridGlue::Intersection::conforming
bool conforming() const
Return true if intersection is conforming.
Definition intersection.hh:331
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::InsideEntity
InsideGridView::Traits::template Codim< 0 >::Entity InsideEntity
Definition intersection.hh:277
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::GridGlue
Traits::GridGlue GridGlue
Definition intersection.hh:263
Dune::GridGlue::Intersection::indexInOutside
int indexInOutside(unsigned int parentId=0) const
Local number of codim 1 entity in outside() Entity where intersection is contained in.
Definition intersection.hh:408
Dune::GridGlue::Intersection::indexInInside
int indexInInside(unsigned int parentId=0) const
Local number of codim 1 entity in the inside() Entity where intersection is contained in.
Definition intersection.hh:401
Dune::GridGlue::Intersection::self
bool self() const
For parallel computations: Return true if inside() entity exists locally.
Definition intersection.hh:384
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::mydim
static constexpr auto mydim
Definition intersection.hh:287
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::outsidePatch
static constexpr int outsidePatch
Definition intersection.hh:293
Dune::GridGlue::Intersection::type
Dune::GeometryType type() const
Type of reference element for this intersection.
Definition intersection.hh:373
Dune::GridGlue::Intersection::inside
InsideEntity inside(unsigned int parentId=0) const
Return element on the inside of this intersection.
Definition intersection.hh:315
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::LocalCoordinate
Traits::LocalCoordinate LocalCoordinate
Definition intersection.hh:280
Dune::GridGlue::Intersection::geometryInOutside
const OutsideLocalGeometry & geometryInOutside(unsigned int parentId=0) const
Geometric information about this intersection in local coordinates of the outside() element.
Definition intersection.hh:345
Dune::GridGlue::Intersection::unitOuterNormal
GlobalCoordinate unitOuterNormal(const LocalCoordinate &local) const
Return a unit outer normal.
Definition intersection.hh:446
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::ctype
Traits::ctype ctype
Definition intersection.hh:275
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::Traits
IntersectionTraits< P0, P1, I, O > Traits
Definition intersection.hh:261
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::IntersectionData
Traits::IntersectionData IntersectionData
Definition intersection.hh:264
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::GlobalCoordinate
Traits::GlobalCoordinate GlobalCoordinate
Definition intersection.hh:281
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::OutsideGeometry
Traits::OutsideGeometry OutsideGeometry
Definition intersection.hh:272
Dune::GridGlue::Intersection::neighbor
size_t neighbor(unsigned int g=0) const
Return number of embeddings into local grid0 (grid1) entities.
Definition intersection.hh:390
Dune::GridGlue::Intersection::Intersection
Intersection(const GridGlue *glue, const IntersectionData *i)
Constructor for a given Dataset.
Definition intersection.hh:307
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::insidePatch
static constexpr int insidePatch
Definition intersection.hh:290
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::Geometry
Traits::Geometry Geometry
Definition intersection.hh:274
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::OutsideEntity
OutsideGridView::Traits::template Codim< 0 >::Entity OutsideEntity
Definition intersection.hh:278
Dune::GridGlue::Intersection::outside
OutsideEntity outside(unsigned int parentId=0) const
Return element on the outside of this intersection.
Definition intersection.hh:324
Dune::GridGlue::Intersection::geometry
const Geometry & geometry() const
Geometric information about this intersection as part of the inside grid.
Definition intersection.hh:356
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::InsideLocalGeometry
Traits::InsideLocalGeometry InsideLocalGeometry
Definition intersection.hh:268
Dune::GridGlue::Intersection::outerNormal
GlobalCoordinate outerNormal(const LocalCoordinate &local) const
Return an outer normal (length not necessarily 1).
Definition intersection.hh:418
Dune::GridGlue::Intersection::geometryOutside
const OutsideGeometry & geometryOutside() const
Geometric information about this intersection as part of the outside grid.
Definition intersection.hh:367
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::OutsideGridView
Traits::OutsideGridView OutsideGridView
Definition intersection.hh:270
Dune::GridGlue::Intersection::integrationOuterNormal
GlobalCoordinate integrationOuterNormal(const LocalCoordinate &local) const
Return an outer normal with the length of the integration element.
Definition intersection.hh:457
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::InsideGridView
Traits::InsideGridView InsideGridView
Definition intersection.hh:267
Dune::GridGlue::Intersection::geometryInInside
const InsideLocalGeometry & geometryInInside(unsigned int parentId=0) const
Geometric information about this intersection in local coordinates of the inside() element.
Definition intersection.hh:338
Dune::GridGlue::Intersection::centerUnitOuterNormal
GlobalCoordinate centerUnitOuterNormal() const
Unit outer normal at the center of the intersection.
Definition intersection.hh:466
Dune::GridGlue::Intersection< P0, P1, 0, 1 >::coorddim
static constexpr auto coorddim
Definition intersection.hh:284
Dune::GridGlue::IntersectionTraits
Definition intersection.hh:230
Dune::GridGlue::IntersectionTraits< P0, P1, I, O >::insidePatch
static constexpr int insidePatch
Definition intersection.hh:245
Dune::GridGlue::IntersectionTraits::LocalCoordinate
Dune::FieldVector< ctype, mydim > LocalCoordinate
Definition intersection.hh:249
Dune::GridGlue::IntersectionTraits< P0, P1, I, O >::coorddim
static constexpr auto coorddim
Definition intersection.hh:243
Dune::GridGlue::IntersectionTraits::OutsideGeometry
typename IntersectionData::template GridGeometry< outside > OutsideGeometry
Definition intersection.hh:241
Dune::GridGlue::IntersectionTraits::ctype
typename GridGlue::ctype ctype
Definition intersection.hh:248
Dune::GridGlue::IntersectionTraits::OutsideGridView
typename GridGlue::template GridView< outside > OutsideGridView
Definition intersection.hh:235
Dune::GridGlue::IntersectionTraits::GlobalCoordinate
Dune::FieldVector< ctype, coorddim > GlobalCoordinate
Definition intersection.hh:250
Dune::GridGlue::IntersectionTraits::OutsideLocalGeometry
typename IntersectionData::template GridLocalGeometry< outside > OutsideLocalGeometry
Definition intersection.hh:238
Dune::GridGlue::IntersectionTraits::InsideGridView
typename GridGlue::template GridView< inside > InsideGridView
Definition intersection.hh:234
Dune::GridGlue::IntersectionTraits::Geometry
typename IntersectionData::template GridGeometry< inside > Geometry
Definition intersection.hh:240
Dune::GridGlue::IntersectionTraits::IntersectionData
Dune::GridGlue::IntersectionData< P0, P1 > IntersectionData
Definition intersection.hh:232
Dune::GridGlue::IntersectionTraits::InsideLocalGeometry
typename IntersectionData::template GridLocalGeometry< inside > InsideLocalGeometry
Definition intersection.hh:237
Dune::GridGlue::IntersectionTraits< P0, P1, I, O >::outsidePatch
static constexpr int outsidePatch
Definition intersection.hh:246
Dune::GridGlue::IntersectionTraits::GridGlue
::Dune::GridGlue::GridGlue< P0, P1 > GridGlue
Definition intersection.hh:231
Dune::GridGlue::IntersectionTraits< P0, P1, I, O >::mydim
static constexpr auto mydim
Definition intersection.hh:244
Dune::GridGlue::ctype
GridGlue
sequential adapter to couple two grids at specified close together boundaries
Definition gridglue.hh:67