24#ifndef DUMUX_FACETCOUPLING_MAPPER_HH
25#define DUMUX_FACETCOUPLING_MAPPER_HH
29#include <dune/common/indices.hh>
49template<
class BulkFVG,
51 std::size_t bulkId = 0,
52 std::size_t lowDimId = 1,
53 class DiscretizationMethod =
typename BulkFVG::DiscretizationMethod >
68template<
class BulkFVG,
class FacetFVG,
class EdgeFVG,
69 std::size_t bulkId = 0,
70 std::size_t facetId = 1,
71 std::size_t edgeId = 2 >
80 static constexpr int bulkDim = BulkFVG::GridView::dimension;
81 static constexpr int facetDim = FacetFVG::GridView::dimension;
82 static constexpr int edgeDim = EdgeFVG::GridView::dimension;
85 template<std::
size_t id>
86 using GridIdType = Dune::index_constant<id>;
90 static constexpr auto bulkGridId = Dune::index_constant< bulkId >();
91 static constexpr auto facetGridId = Dune::index_constant< facetId >();
92 static constexpr auto edgeGridId = Dune::index_constant< edgeId >();
95 template<std::
size_t i>
96 using Stencil =
typename std::conditional< (i == edgeId),
98 typename BulkFacetMapper::template
Stencil<i> >::type;
101 template<std::
size_t i, std::
size_t j>
102 using CouplingMap =
typename std::conditional< (i != edgeId && j != edgeId),
108 static constexpr GridIdType< ( dim == bulkDim ? bulkId : (dim == facetDim ? facetId : edgeId) ) >
gridId()
109 {
return GridIdType< ( dim == bulkDim ? bulkId : (dim == facetDim ? facetId : edgeId) ) >(); }
119 template<
class Embeddings >
120 void update(
const BulkFVG& bulkFvGridGeometry,
121 const FacetFVG& facetFvGridGeometry,
122 const EdgeFVG& edgeFvGridGeometry,
123 std::shared_ptr<const Embeddings> embeddings)
125 BulkFacetMapper::update(bulkFvGridGeometry, facetFvGridGeometry, embeddings);
126 FacetEdgeMapper::update(facetFvGridGeometry, edgeFvGridGeometry, embeddings);
130 using BulkFacetMapper::update;
131 using FacetEdgeMapper::update;
134 using BulkFacetMapper::couplingMap;
135 using FacetEdgeMapper::couplingMap;
The available discretization methods in Dumux.
Adaption of the non-isothermal two-phase two-component flow model to problems with CO2.
Definition: adapt.hh:29
Implementation for the coupling mapper that sets up and stores the coupling maps between two domains ...
Definition: facet/couplingmapper.hh:54
Specialization of the mapper class for the case of three domains with the grid dimensions d,...
Definition: facet/couplingmapper.hh:75
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:108
static constexpr auto edgeGridId
Definition: facet/couplingmapper.hh:92
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:104
static constexpr auto bulkGridId
export domain ids
Definition: facet/couplingmapper.hh:90
static constexpr auto facetGridId
Definition: facet/couplingmapper.hh:91
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:98
void update(const BulkFVG &bulkFvGridGeometry, const FacetFVG &facetFvGridGeometry, const EdgeFVG &edgeFvGridGeometry, std::shared_ptr< const Embeddings > embeddings)
Update coupling maps.
Definition: facet/couplingmapper.hh:120