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:37
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
static constexpr auto bulkGridId
export domain ids
Definition facet/couplingmapper.hh:88
static constexpr auto facetGridId
Definition facet/couplingmapper.hh:89
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
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:100
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:94
Implementation for the coupling mapper that sets up and stores the coupling maps between two domains ...
Implementation for the coupling mapper that sets up and stores the coupling maps between two domains ...
Implementation for the coupling mapper that sets up and stores the coupling maps between two domains ...