22#ifndef DUMUX_FACETCOUPLING_MAPPER_HH
23#define DUMUX_FACETCOUPLING_MAPPER_HH
27#include <dune/common/indices.hh>
47template<
class BulkFVG,
49 std::size_t bulkId = 0,
50 std::size_t lowDimId = 1,
66template<
class BulkFVG,
class FacetFVG,
class EdgeFVG,
67 std::size_t bulkId = 0,
68 std::size_t facetId = 1,
69 std::size_t edgeId = 2 >
78 static constexpr int bulkDim = BulkFVG::GridView::dimension;
79 static constexpr int facetDim = FacetFVG::GridView::dimension;
80 static constexpr int edgeDim = EdgeFVG::GridView::dimension;
83 template<std::
size_t id>
84 using GridIdType = Dune::index_constant<id>;
88 static constexpr auto bulkGridId = Dune::index_constant< bulkId >();
89 static constexpr auto facetGridId = Dune::index_constant< facetId >();
90 static constexpr auto edgeGridId = Dune::index_constant< edgeId >();
93 template<std::
size_t i>
94 using Stencil =
typename std::conditional< (i == edgeId),
96 typename BulkFacetMapper::template
Stencil<i> >::type;
99 template<std::
size_t i, std::
size_t j>
100 using CouplingMap =
typename std::conditional< (i != edgeId && j != edgeId),
106 static constexpr GridIdType< ( dim == bulkDim ? bulkId : (dim == facetDim ? facetId : edgeId) ) >
gridId()
107 {
return GridIdType< ( dim == bulkDim ? bulkId : (dim == facetDim ? facetId : edgeId) ) >(); }
117 template<
class Embeddings >
118 void update(
const BulkFVG& bulkFvGridGeometry,
119 const FacetFVG& facetFvGridGeometry,
120 const EdgeFVG& edgeFvGridGeometry,
121 std::shared_ptr<const Embeddings> embeddings)
123 BulkFacetMapper::update(bulkFvGridGeometry, facetFvGridGeometry, embeddings);
124 FacetEdgeMapper::update(facetFvGridGeometry, edgeFvGridGeometry, embeddings);
128 using BulkFacetMapper::update;
129 using FacetEdgeMapper::update;
132 using BulkFacetMapper::couplingMap;
133 using FacetEdgeMapper::couplingMap;
The available discretization methods in Dumux.
DiscretizationMethod
The available discretization methods in Dumux.
Definition: method.hh:42
Implementation for the coupling mapper that sets up and stores the coupling maps between two domains ...
Definition: facet/couplingmapper.hh:52
Specialization of the mapper class for the case of three domains with the grid dimensions d,...
Definition: facet/couplingmapper.hh:73
static constexpr GridIdType<(dim==bulkDim ? bulkId :(dim==facetDim ? facetId :edgeId)) > gridId()
Allow retrievment of grid id for a given grid dimension.
Definition: facet/couplingmapper.hh:106
static constexpr auto edgeGridId
Definition: facet/couplingmapper.hh:90
typename std::conditional<(i !=edgeId &&j !=edgeId), typename BulkFacetMapper::template CouplingMap< i, j >, typename FacetEdgeMapper::template CouplingMap< i, j > >::type CouplingMap
Export the coupling map type for the provided domain indices.
Definition: facet/couplingmapper.hh:102
static constexpr auto bulkGridId
export domain ids
Definition: facet/couplingmapper.hh:88
static constexpr auto facetGridId
Definition: facet/couplingmapper.hh:89
typename std::conditional<(i==edgeId), typename FacetEdgeMapper::template Stencil< i >, typename BulkFacetMapper::template Stencil< i > >::type Stencil
Export the coupling stencil type for the provided domain index.
Definition: facet/couplingmapper.hh:96
void update(const BulkFVG &bulkFvGridGeometry, const FacetFVG &facetFvGridGeometry, const EdgeFVG &edgeFvGridGeometry, std::shared_ptr< const Embeddings > embeddings)
Update coupling maps.
Definition: facet/couplingmapper.hh:118