13#ifndef DUMUX_MULTIDOMAIN_BOUNDARY_FREEFLOW_PORENETWORK_COUPLINGMANAGER_HH 
   14#define DUMUX_MULTIDOMAIN_BOUNDARY_FREEFLOW_PORENETWORK_COUPLINGMANAGER_HH 
   19#include <dune/common/indices.hh> 
   46    auto map = std::array<std::array<std::size_t, 3>, 3>{};
 
 
   63template<std::
size_t i>
 
   74template<std::
size_t i, std::
size_t j>
 
   77    static_assert(i <= 2 && j <= 2);
 
   78    static_assert(i != j);
 
   81        return std::pair<Dune::index_constant<0>, Dune::index_constant<1>>{};
 
   83        return std::pair<Dune::index_constant<1>, Dune::index_constant<0>>{};
 
 
   93    template<std::
size_t i, std::
size_t j>
 
   94    static constexpr auto globalToLocal(Dune::index_constant<i> domainI, Dune::index_constant<j> domainJ)
 
 
   99    template<std::
size_t i>
 
 
  106template<
class MDTraits>
 
  109    template<std::
size_t id>
 
 
 
  138template<
class MDTraits>
 
  142    FreeFlowPoreNetworkDetail::CouplingMaps,
 
  143    typename FreeFlowPoreNetworkDetail::CouplingManagers<MDTraits>::FreeFlowCouplingManager,
 
  144    typename FreeFlowPoreNetworkDetail::CouplingManagers<MDTraits>::FreeFlowMomentumPoreNetworkCouplingManager,
 
  145    typename FreeFlowPoreNetworkDetail::CouplingManagers<MDTraits>::FreeFlowMassPoreNetworkCouplingManager
 
  158    using Scalar = 
typename MDTraits::Scalar;
 
  161    template<std::
size_t id>
 
  162    using SubDomainTypeTag = 
typename MDTraits::template SubDomain<id>::TypeTag;
 
  166    template<std::
size_t id> 
using FVElementGeometry = 
typename GridGeometry<id>::LocalView;
 
  167    template<std::
size_t id> 
using SubControlVolumeFace = 
typename FVElementGeometry<id>::SubControlVolumeFace;
 
  168    template<std::
size_t id> 
using SubControlVolume = 
typename FVElementGeometry<id>::SubControlVolume;
 
  170    template<std::
size_t id> 
using NumEqVector = 
typename Problem<id>::Traits::NumEqVector;
 
  172    template<std::
size_t id> 
using GridView = 
typename GridGeometry<id>::GridView;
 
  173    template<std::
size_t id> 
using Element = 
typename GridView<id>::template Codim<0>::Entity;
 
  174    using SolutionVector = 
typename MDTraits::SolutionVector;
 
  176    template<std::
size_t id>
 
  177    using SubSolutionVector
 
  178        = std::decay_t<decltype(std::declval<SolutionVector>()[Dune::index_constant<id>()])>;
 
  185    template<std::
size_t i, std::
size_t j>
 
  193    using ParentType::ParentType;
 
  195    template<
class Gr
idVarsTuple>
 
  196    void init(std::shared_ptr<Problem<freeFlowMomentumIndex>> freeFlowMomentumProblem,
 
  197              std::shared_ptr<Problem<freeFlowMassIndex>> freeFlowMassProblem,
 
  198              std::shared_ptr<Problem<poreNetworkIndex>> poreNetworkProblem,
 
  199              GridVarsTuple&& gridVarsTuple,
 
  200              const SolutionVector& 
curSol)
 
  203        this->init_(freeFlowMomentumProblem, freeFlowMassProblem, poreNetworkProblem, std::forward<GridVarsTuple>(gridVarsTuple), 
curSol);
 
  208            freeFlowMomentumProblem, freeFlowMassProblem,
 
  209            std::make_tuple(std::get<freeFlowMomentumIndex>(gridVarsTuple), std::get<freeFlowMassIndex>(gridVarsTuple)),
 
  210            FFSol{ std::get<freeFlowMomentumIndex>(this->
curSol()), std::get<freeFlowMassIndex>(this->
curSol()) }
 
 
  214    template<
class Gr
idVarsTuple>
 
  215    void init(std::shared_ptr<Problem<freeFlowMomentumIndex>> freeFlowMomentumProblem,
 
  216              std::shared_ptr<Problem<freeFlowMassIndex>> freeFlowMassProblem,
 
  217              std::shared_ptr<Problem<poreNetworkIndex>> poreNetworkProblem,
 
  218              GridVarsTuple&& gridVarsTuple,
 
  219              const SolutionVector& 
curSol,
 
  220              const SolutionVector& prevSol)
 
  223        this->init_(freeFlowMomentumProblem, freeFlowMassProblem, poreNetworkProblem, std::forward<GridVarsTuple>(gridVarsTuple), 
curSol);
 
  226        using FFPrevSol = std::tuple<const SubSolutionVector<freeFlowMomentumIndex>*, 
const SubSolutionVector<freeFlowMassIndex>*>;
 
  228            freeFlowMomentumProblem, freeFlowMassProblem,
 
  229            std::make_tuple(std::get<freeFlowMomentumIndex>(gridVarsTuple), std::get<freeFlowMassIndex>(gridVarsTuple)),
 
  230            FFSol{ std::get<freeFlowMomentumIndex>(this->
curSol()), std::get<freeFlowMassIndex>(this->
curSol()) },
 
 
  239                               Dune::index_constant<freeFlowMassIndex> domainJ,
 
  240                               const FVElementGeometry<poreNetworkIndex>& fvGeometry,
 
  241                               const typename FVElementGeometry<poreNetworkIndex>::SubControlVolume& scv,
 
  242                               const ElementVolumeVariables<poreNetworkIndex>& elemVolVars)
 const 
  244        const auto& couplingContext = this->
subApply(domainI, domainJ, [&](
const auto& cm, 
auto&& ii, 
auto&& jj) -> 
const auto& {
 
  245            return cm.couplingContext(ii, fvGeometry, scv);
 
  248        const auto& freeFlowMassGridGeometry = this->
subApply(domainI, domainJ, [&](
const auto& cm, 
auto&& ii, 
auto&& jj) -> 
const auto& {
 
  249            return cm.problem(jj).gridGeometry();
 
  252        for (
auto& c : couplingContext)
 
  254            const auto& freeFlowElement = freeFlowMassGridGeometry.element(c.scv.elementIndex());
 
  258        return CouplingConditions::massCouplingCondition(domainI, domainJ, fvGeometry, scv, elemVolVars, couplingContext);
 
 
  265                               Dune::index_constant<poreNetworkIndex> domainJ,
 
  266                               const FVElementGeometry<freeFlowMassIndex>& fvGeometry,
 
  267                               const typename FVElementGeometry<freeFlowMassIndex>::SubControlVolumeFace& scvf,
 
  268                               const ElementVolumeVariables<freeFlowMassIndex>& elemVolVars)
 const 
  270        const auto& couplingContext = this->
subApply(domainI, domainJ, [&](
const auto& cm, 
auto&& ii, 
auto&& jj) -> 
const auto& {
 
  271            return cm.couplingContext(ii, fvGeometry, scvf);
 
  275        return CouplingConditions::massCouplingCondition(domainI, domainJ, fvGeometry, scvf, elemVolVars, couplingContext);
 
 
  282                                 Dune::index_constant<freeFlowMassIndex> domainJ,
 
  283                                 const FVElementGeometry<poreNetworkIndex>& fvGeometry,
 
  284                                 const typename FVElementGeometry<poreNetworkIndex>::SubControlVolume& scv,
 
  285                                 const ElementVolumeVariables<poreNetworkIndex>& elemVolVars)
 const 
  287        const auto& couplingContext = this->
subApply(domainI, domainJ, [&](
const auto& cm, 
auto&& ii, 
auto&& jj) -> 
const auto& {
 
  288            return cm.couplingContext(ii, fvGeometry, scv);
 
  291        const auto& freeFlowMassGridGeometry = this->
subApply(domainI, domainJ, [&](
const auto& cm, 
auto&& ii, 
auto&& jj) -> 
const auto& {
 
  292            return cm.problem(jj).gridGeometry();
 
  295        for (
auto& c : couplingContext)
 
  297            const auto& freeFlowElement = freeFlowMassGridGeometry.element(c.scv.elementIndex());
 
  301        return CouplingConditions::energyCouplingCondition(domainI, domainJ, fvGeometry, scv, elemVolVars, couplingContext);
 
 
  308                                 Dune::index_constant<poreNetworkIndex> domainJ,
 
  309                                 const FVElementGeometry<freeFlowMassIndex>& fvGeometry,
 
  310                                 const typename FVElementGeometry<freeFlowMassIndex>::SubControlVolumeFace& scvf,
 
  311                                 const ElementVolumeVariables<freeFlowMassIndex>& elemVolVars)
 const 
  313        const auto& couplingContext = this->
subApply(domainI, domainJ, [&](
const auto& cm, 
auto&& ii, 
auto&& jj) -> 
const auto& {
 
  314            return cm.couplingContext(ii, fvGeometry, scvf);
 
  318        return CouplingConditions::energyCouplingCondition(domainI, domainJ, fvGeometry, scvf, elemVolVars, couplingContext);
 
 
  325                                                                 Dune::index_constant<poreNetworkIndex> domainJ,
 
  326                                                                 const FVElementGeometry<freeFlowMomentumIndex>& fvGeometry,
 
  327                                                                 const typename FVElementGeometry<freeFlowMomentumIndex>::SubControlVolumeFace& scvf,
 
  328                                                                 const ElementVolumeVariables<freeFlowMomentumIndex>& elemVolVars)
 const 
  330        if (scvf.isLateral())
 
  331            return NumEqVector<freeFlowMomentumIndex>(0.0);
 
  337        return CouplingConditions::momentumCouplingCondition(fvGeometry, scvf, elemVolVars, context);
 
 
  341                                      const typename FVElementGeometry<freeFlowMomentumIndex>::SubControlVolumeFace& scvf)
 const 
  347        const auto& pnmScv = [&]
 
  349            for (
const auto& scv : scvs(context.fvGeometry))
 
  350                if (scv.dofIndex() == context.poreNetworkDofIdx)
 
  353            DUNE_THROW(Dune::InvalidStateException, 
"No scv found");
 
  356        return context.elemVolVars[pnmScv].poreInscribedRadius();
 
 
  360                                 const typename FVElementGeometry<freeFlowMomentumIndex>::SubControlVolumeFace& scvf)
 const 
  366        return CouplingConditions::interfaceThroatVelocity(fvGeometry, scvf, context);
 
 
  375    Scalar 
pressure(
const Element<freeFlowMomentumIndex>& element,
 
  376                    const FVElementGeometry<freeFlowMomentumIndex>& fvGeometry,
 
  377                    const SubControlVolumeFace<freeFlowMomentumIndex>& scvf)
 const 
  380            element, fvGeometry, scvf
 
 
  390    Scalar 
cellPressure(
const Element<freeFlowMomentumIndex>& element,
 
  391                        const SubControlVolumeFace<freeFlowMomentumIndex>& scvf)
 const 
 
  401    Scalar 
density(
const Element<freeFlowMomentumIndex>& element,
 
  402                   const FVElementGeometry<freeFlowMomentumIndex>& fvGeometry,
 
  403                   const SubControlVolumeFace<freeFlowMomentumIndex>& scvf,
 
  404                   const bool considerPreviousTimeStep = 
false)
 const 
  407            element, fvGeometry, scvf, considerPreviousTimeStep
 
 
  412                                 const FVElementGeometry<freeFlowMomentumIndex>& fvGeometry,
 
  413                                 const SubControlVolumeFace<freeFlowMomentumIndex>& scvf,
 
  414                                 const bool considerPreviousTimeStep = 
false)
 const 
  417            element, fvGeometry, scvf, considerPreviousTimeStep
 
 
  424    Scalar 
density(
const Element<freeFlowMomentumIndex>& element,
 
  425                   const SubControlVolume<freeFlowMomentumIndex>& scv,
 
  426                   const bool considerPreviousTimeStep = 
false)
 const 
  429            element, scv, considerPreviousTimeStep
 
 
  437                              const FVElementGeometry<freeFlowMomentumIndex>& fvGeometry,
 
  438                              const SubControlVolumeFace<freeFlowMomentumIndex>& scvf)
 const 
  441            element, fvGeometry, scvf
 
 
  448    auto faceVelocity(
const Element<freeFlowMassIndex>& element,
 
  449                      const SubControlVolumeFace<freeFlowMassIndex>& scvf)
 const 
 
  456    template<std::
size_t i>
 
  457    const Problem<i>& 
problem(Dune::index_constant<i> domainI)
 const 
  459        return this->
subApply(domainI, [&](
const auto& cm, 
auto&& ii) -> 
const auto& {
 
  460            return cm.problem(ii);
 
 
  464    template<std::
size_t i, std::
size_t j>
 
  465    bool isCoupled(Dune::index_constant<i> domainI,
 
  466                   Dune::index_constant<j> domainJ,
 
  467                   const SubControlVolumeFace<i>& scvf)
 const 
  469        return this->
subApply(domainI, domainJ, [&](
const auto& cm, 
auto&& ii, 
auto&& jj){
 
  470            return cm.isCoupled(ii, scvf);
 
 
  480    template<std::
size_t i, std::
size_t j>
 
  481    bool isCoupled(Dune::index_constant<i> domainI,
 
  482                   Dune::index_constant<j> domainJ,
 
  483                   const SubControlVolume<i>& scv)
 const 
  485        return this->
subApply(domainI, domainJ, [&](
const auto& cm, 
auto&& ii, 
auto&& jj){
 
  486            return cm.isCoupled(ii, scv);
 
 
  500    template<std::
size_t j>
 
  501    const auto& 
couplingStencil(Dune::index_constant<freeFlowMomentumIndex> domainI,
 
  502                                const Element<freeFlowMomentumIndex>& elementI,
 
  503                                const SubControlVolume<freeFlowMomentumIndex>& scvI,
 
  504                                Dune::index_constant<j> domainJ)
 const 
  507        return this->
subApply(domainI, domainJ, [&](
const auto& cm, 
auto&& ii, 
auto&& jj) -> 
const auto& {
 
  508            return cm.couplingStencil(ii, elementI, scvI, jj);
 
 
  516    template<
class Gr
idVarsTuple>
 
  517    void init_(std::shared_ptr<Problem<freeFlowMomentumIndex>> freeFlowMomentumProblem,
 
  518              std::shared_ptr<Problem<freeFlowMassIndex>> freeFlowMassProblem,
 
  519              std::shared_ptr<Problem<poreNetworkIndex>> poreNetworkProblem,
 
  520              GridVarsTuple&& gridVarsTuple,
 
  521              const SolutionVector& 
curSol)
 
  525        auto couplingMapper = std::make_shared<CouplingMapper>();
 
  526        couplingMapper->update(freeFlowMomentumProblem->gridGeometry(),
 
  527            freeFlowMassProblem->gridGeometry(),
 
  528            poreNetworkProblem->gridGeometry()
 
  532        using FFMassPNMSol = 
typename SubCouplingManager<freeFlowMassIndex, poreNetworkIndex>::SolutionVectorStorage;
 
  534            freeFlowMassProblem, poreNetworkProblem, couplingMapper,
 
  535            FFMassPNMSol{ std::get<freeFlowMassIndex>(this->
curSol()), std::get<poreNetworkIndex>(this->
curSol()) }
 
  538        using FFMomPNMSol = 
typename SubCouplingManager<freeFlowMomentumIndex, poreNetworkIndex>::SolutionVectorStorage;
 
  540            freeFlowMomentumProblem, poreNetworkProblem,
 
  541            std::make_tuple(std::get<freeFlowMomentumIndex>(gridVarsTuple), std::get<poreNetworkIndex>(gridVarsTuple)),
 
  542            couplingMapper, FFMomPNMSol{ std::get<freeFlowMomentumIndex>(this->
curSol()), std::get<poreNetworkIndex>(this->
curSol()) }
 
 
Coupling mapper for staggered free-flow and pore-network models.
Coupling manager for free-flow mass and pore-network models.
Definition multidomain/boundary/freeflowporenetwork/ffmassporenetwork/couplingmanager.hh:35
Coupling manager for free-flow momentum and pore-network models.
Definition multidomain/boundary/freeflowporenetwork/ffmomentumporenetwork/couplingmanager.hh:35
Coupling manager for coupling freeflow and pore-network models.
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:147
auto insideAndOutsideDensity(const Element< freeFlowMomentumIndex > &element, const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf, const bool considerPreviousTimeStep=false) const
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:410
bool isCoupled(Dune::index_constant< i > domainI, Dune::index_constant< j > domainJ, const SubControlVolumeFace< i > &scvf) const
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:464
auto energyCouplingCondition(Dune::index_constant< poreNetworkIndex > domainI, Dune::index_constant< freeFlowMassIndex > domainJ, const FVElementGeometry< poreNetworkIndex > &fvGeometry, const typename FVElementGeometry< poreNetworkIndex >::SubControlVolume &scv, const ElementVolumeVariables< poreNetworkIndex > &elemVolVars) const
Returns the energy flux across the coupling boundary.
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:280
void init(std::shared_ptr< Problem< freeFlowMomentumIndex > > freeFlowMomentumProblem, std::shared_ptr< Problem< freeFlowMassIndex > > freeFlowMassProblem, std::shared_ptr< Problem< poreNetworkIndex > > poreNetworkProblem, GridVarsTuple &&gridVarsTuple, const SolutionVector &curSol)
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:195
static constexpr auto freeFlowMomentumIndex
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:187
Scalar density(const Element< freeFlowMomentumIndex > &element, const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf, const bool considerPreviousTimeStep=false) const
Returns the density at a given sub control volume face.
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:400
Scalar effectiveViscosity(const Element< freeFlowMomentumIndex > &element, const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf) const
Returns the pressure at a given sub control volume face.
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:435
auto massCouplingCondition(Dune::index_constant< poreNetworkIndex > domainI, Dune::index_constant< freeFlowMassIndex > domainJ, const FVElementGeometry< poreNetworkIndex > &fvGeometry, const typename FVElementGeometry< poreNetworkIndex >::SubControlVolume &scv, const ElementVolumeVariables< poreNetworkIndex > &elemVolVars) const
Returns the mass flux across the coupling boundary.
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:237
const auto & couplingStencil(Dune::index_constant< freeFlowMomentumIndex > domainI, const Element< freeFlowMomentumIndex > &elementI, const SubControlVolume< freeFlowMomentumIndex > &scvI, Dune::index_constant< j > domainJ) const
returns an iterable container of all indices of degrees of freedom of domain j that couple with / inf...
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:500
static constexpr auto freeFlowMassIndex
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:188
typename ParentType::template SubCouplingManager< i, j > SubCouplingManager
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:185
Scalar pressure(const Element< freeFlowMomentumIndex > &element, const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf) const
Returns the pressure at a given sub control volume face.
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:374
const Problem< i > & problem(Dune::index_constant< i > domainI) const
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:456
Scalar cellPressure(const Element< freeFlowMomentumIndex > &element, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf) const
Returns the pressure at the center of a sub control volume corresponding to a given sub control volum...
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:389
NumEqVector< freeFlowMomentumIndex > momentumCouplingCondition(Dune::index_constant< freeFlowMomentumIndex > domainI, Dune::index_constant< poreNetworkIndex > domainJ, const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const typename FVElementGeometry< freeFlowMomentumIndex >::SubControlVolumeFace &scvf, const ElementVolumeVariables< freeFlowMomentumIndex > &elemVolVars) const
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:323
Scalar coupledPoreInscribedRadius(const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const typename FVElementGeometry< freeFlowMomentumIndex >::SubControlVolumeFace &scvf) const
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:339
auto faceVelocity(const Element< freeFlowMassIndex > &element, const SubControlVolumeFace< freeFlowMassIndex > &scvf) const
Returns the velocity at a given sub control volume face.
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:447
auto interfaceThroatVelocity(const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const typename FVElementGeometry< freeFlowMomentumIndex >::SubControlVolumeFace &scvf) const
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:358
static constexpr auto poreNetworkIndex
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:189
const auto & couplingStencil(Dune::index_constant< i > domainI, const Entity &entity, Dune::index_constant< j > domainJ) const
Return the coupling element stencil for a given bulk domain element.
Definition multibinarycouplingmanager.hh:203
MultiBinaryCouplingManager()
Definition multibinarycouplingmanager.hh:103
decltype(auto) subApply(Dune::index_constant< i > domainI, Dune::index_constant< j > domainJ, Apply &&apply)
Definition multibinarycouplingmanager.hh:137
auto & subCouplingManager(Dune::index_constant< i > domainI, Dune::index_constant< j > domainJ)
Definition multibinarycouplingmanager.hh:119
SolutionVectors & curSol()
Definition multibinarycouplingmanager.hh:370
void updateSolution(const typename MDTraits::SolutionVector &curSol)
Definition multibinarycouplingmanager.hh:178
Coupling mapper for staggered free-flow and pore-network models.
Definition boundary/freeflowporenetwork/couplingmapper.hh:42
Defines all properties used in Dumux.
Coupling conditions for the coupling of a pore-network model with a (Navier-)Stokes model (staggerd g...
FreeFlowPoreNetworkCouplingConditionsImplementation< MDTraits, CouplingManager, GetPropType< typename MDTraits::template SubDomain< 1 >::TypeTag, Properties::ModelTraits >::enableEnergyBalance(),(GetPropType< typename MDTraits::template SubDomain< 1 >::TypeTag, Properties::ModelTraits >::numFluidComponents() > 1) > FreeFlowPoreNetworkCouplingConditions
Coupling conditions for the coupling of a pore-network model with a (Navier-)Stokes model (staggerd g...
Definition freeflowporenetwork/couplingconditions.hh:40
typename Detail::FreeFlowCouplingManagerSelector< Traits >::type FreeFlowCouplingManager
The interface of the coupling manager for free flow systems.
Definition multidomain/freeflow/couplingmanager.hh:47
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition propertysystem.hh:296
Coupling manager that combines an arbitrary number of binary coupling manager (coupling two domains e...
Coupling manager for free-flow mass and pore-network models.
Coupling manager for free-flow momentum and pore-network models.
Freeflow coupling managers (Navier-Stokes mass-momentum coupling)
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:31
constexpr auto coupledDomains(Dune::index_constant< i > domainI)
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:64
constexpr auto globalToLocalDomainIndices(Dune::index_constant< i >, Dune::index_constant< j >)
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:75
static constexpr auto freeFlowMassIndex
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:35
static constexpr auto freeFlowMomentumIndex
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:34
static constexpr auto freeFlowMomentumToPoreNetworkIndex
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:40
static constexpr auto noCouplingIdx
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:42
static constexpr auto poreNetworkIndex
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:36
static constexpr auto freeFlowMassToFreeFlowMomentumIndex
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:39
constexpr auto makeCouplingManagerMap()
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:44
static constexpr auto freeFlowMassToPoreNetworkIndex
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:41
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:108
Dumux::FreeFlowCouplingManager< FreeFlowTraits > FreeFlowCouplingManager
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:124
MultiDomainTraits< SubDomainTypeTag< freeFlowMomentumIndex >, SubDomainTypeTag< poreNetworkIndex > > FreeFlowMomentumPoreNetworkTraits
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:116
Dumux::FreeFlowMomentumPoreNetworkCouplingManager< FreeFlowMomentumPoreNetworkTraits > FreeFlowMomentumPoreNetworkCouplingManager
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:125
Dumux::FreeFlowMassPoreNetworkCouplingManager< FreeFlowMassPoreNetworkTraits > FreeFlowMassPoreNetworkCouplingManager
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:126
MultiDomainTraits< SubDomainTypeTag< freeFlowMomentumIndex >, SubDomainTypeTag< freeFlowMassIndex > > FreeFlowTraits
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:112
typename MDTraits::template SubDomain< id >::TypeTag SubDomainTypeTag
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:110
MultiDomainTraits< SubDomainTypeTag< freeFlowMassIndex >, SubDomainTypeTag< poreNetworkIndex > > FreeFlowMassPoreNetworkTraits
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:120
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:87
static constexpr auto globalToLocal(Dune::index_constant< i > domainI, Dune::index_constant< j > domainJ)
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:94
static constexpr auto managerMap()
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:88
static constexpr auto coupledDomains(Dune::index_constant< i > domainI)
Definition multidomain/boundary/freeflowporenetwork/couplingmanager.hh:100
Definition multidomain/traits.hh:134