version 3.10.0
Loading...
Searching...
No Matches
Dumux::FreeFlowPoreNetworkCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, true > Class Template Reference

Coupling conditions specialization for compositional models.

#include <dumux/multidomain/boundary/freeflowporenetwork/couplingconditions.hh>

Inheritance diagram for Dumux::FreeFlowPoreNetworkCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, true >:

Public Types

using NumCompVector = Dune::FieldVector<Scalar, numComponents>
 

Static Public Member Functions

template<class CouplingContext>
static NumCompVector massCouplingCondition (Dune::index_constant< ParentType::poreNetworkIndex > domainI, Dune::index_constant< ParentType::freeFlowMassIndex > domainJ, const FVElementGeometry< ParentType::poreNetworkIndex > &fvGeometry, const SubControlVolume< ParentType::poreNetworkIndex > &scv, const ElementVolumeVariables< ParentType::poreNetworkIndex > &insideVolVars, const CouplingContext &context)
 Returns the mass flux across the coupling boundary as seen from the pore-network domain.
 
template<class CouplingContext>
static NumCompVector massCouplingCondition (Dune::index_constant< ParentType::freeFlowMassIndex > domainI, Dune::index_constant< ParentType::poreNetworkIndex > domainJ, const FVElementGeometry< ParentType::freeFlowMassIndex > &fvGeometry, const SubControlVolumeFace< ParentType::freeFlowMassIndex > &scvf, const ElementVolumeVariables< ParentType::freeFlowMassIndex > &insideVolVars, const CouplingContext &context)
 Returns the mass flux across the coupling boundary as seen from the free-flow domain.
 
template<class CouplingContext, bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
static Scalar energyCouplingCondition (Dune::index_constant< ParentType::poreNetworkIndex > domainI, Dune::index_constant< ParentType::freeFlowMassIndex > domainJ, const FVElementGeometry< ParentType::poreNetworkIndex > &fvGeometry, const SubControlVolume< ParentType::poreNetworkIndex > &scv, const ElementVolumeVariables< ParentType::poreNetworkIndex > &insideVolVars, const CouplingContext &context)
 Returns the energy flux across the coupling boundary as seen from the pore network.
 
template<class CouplingContext, bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
static Scalar energyCouplingCondition (Dune::index_constant< ParentType::freeFlowMassIndex > domainI, Dune::index_constant< ParentType::poreNetworkIndex > domainJ, const FVElementGeometry< ParentType::freeFlowMassIndex > &fvGeometry, const SubControlVolumeFace< ParentType::freeFlowMassIndex > &scvf, const ElementVolumeVariables< ParentType::freeFlowMassIndex > &insideVolVars, const CouplingContext &context)
 Returns the energy flux across the coupling boundary as seen from the free-flow domain.
 
template<std::size_t i>
static constexpr auto couplingPhaseIdx (Dune::index_constant< i > id, int coupledPhaseIdx=0)
 Returns the corresponding phase index needed for coupling.
 
template<std::size_t i>
static constexpr auto couplingCompIdx (Dune::index_constant< i > id, int coupledCompIdx)
 Returns the corresponding component index needed for coupling.
 
template<class Context>
static NumEqVector< freeFlowMomentumIndexmomentumCouplingCondition (const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf, const ElementVolumeVariables< freeFlowMomentumIndex > &elemVolVars, const Context &context)
 Returns the momentum flux across the coupling boundary.
 
template<class Context>
static VelocityVector interfaceThroatVelocity (const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf, const Context &context)
 
static Scalar advectiveFlux (const Scalar insideQuantity, const Scalar outsideQuantity, const Scalar volumeFlow, bool insideIsUpstream)
 Evaluate an advective flux across the interface and consider upwinding.
 
template<std::size_t i, std::size_t j, bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
static Scalar conductiveEnergyFlux (Dune::index_constant< i > domainI, Dune::index_constant< j > domainJ, const SubControlVolumeFace< freeFlowMassIndex > &scvf, const SubControlVolume< i > &scvI, const SubControlVolume< j > &scvJ, const VolumeVariables< i > &volVarsI, const VolumeVariables< j > &volVarsJ)
 Evaluate the conductive energy flux across the interface.
 

Static Public Attributes

static constexpr auto freeFlowMomentumIndex = CouplingManager::freeFlowMomentumIndex
 
static constexpr auto freeFlowMassIndex = CouplingManager::freeFlowMassIndex
 
static constexpr auto poreNetworkIndex = CouplingManager::poreNetworkIndex
 

Static Protected Member Functions

template<class Scv, class Scvf>
static Scalar getDistance_ (const Scv &scv, const Scvf &scvf)
 Returns the distance between an scvf and the corresponding scv center.
 

Member Typedef Documentation

◆ NumCompVector

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
using Dumux::FreeFlowPoreNetworkCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, true >::NumCompVector = Dune::FieldVector<Scalar, numComponents>

Member Function Documentation

◆ advectiveFlux()

template<class MDTraits, class CouplingManager>
static Scalar Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::advectiveFlux ( const Scalar insideQuantity,
const Scalar outsideQuantity,
const Scalar volumeFlow,
bool insideIsUpstream )
inlinestaticinherited

◆ conductiveEnergyFlux()

template<class MDTraits, class CouplingManager>
template<std::size_t i, std::size_t j, bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
static Scalar Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::conductiveEnergyFlux ( Dune::index_constant< i > domainI,
Dune::index_constant< j > domainJ,
const SubControlVolumeFace< freeFlowMassIndex > & scvf,
const SubControlVolume< i > & scvI,
const SubControlVolume< j > & scvJ,
const VolumeVariables< i > & volVarsI,
const VolumeVariables< j > & volVarsJ )
inlinestaticinherited

◆ couplingCompIdx()

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
template<std::size_t i>
static constexpr auto Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::couplingCompIdx ( Dune::index_constant< i > id,
int coupledCompIdx )
inlinestaticconstexpr

◆ couplingPhaseIdx()

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
template<std::size_t i>
static constexpr auto Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::couplingPhaseIdx ( Dune::index_constant< i > id,
int coupledPhaseIdx = 0 )
inlinestaticconstexpr

◆ energyCouplingCondition() [1/2]

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
template<class CouplingContext, bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
static Scalar Dumux::FreeFlowPoreNetworkCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, true >::energyCouplingCondition ( Dune::index_constant< ParentType::freeFlowMassIndex > domainI,
Dune::index_constant< ParentType::poreNetworkIndex > domainJ,
const FVElementGeometry< ParentType::freeFlowMassIndex > & fvGeometry,
const SubControlVolumeFace< ParentType::freeFlowMassIndex > & scvf,
const ElementVolumeVariables< ParentType::freeFlowMassIndex > & insideVolVars,
const CouplingContext & context )
inlinestatic

◆ energyCouplingCondition() [2/2]

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
template<class CouplingContext, bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
static Scalar Dumux::FreeFlowPoreNetworkCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, true >::energyCouplingCondition ( Dune::index_constant< ParentType::poreNetworkIndex > domainI,
Dune::index_constant< ParentType::freeFlowMassIndex > domainJ,
const FVElementGeometry< ParentType::poreNetworkIndex > & fvGeometry,
const SubControlVolume< ParentType::poreNetworkIndex > & scv,
const ElementVolumeVariables< ParentType::poreNetworkIndex > & insideVolVars,
const CouplingContext & context )
inlinestatic

◆ getDistance_()

template<class MDTraits, class CouplingManager>
template<class Scv, class Scvf>
static Scalar Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::getDistance_ ( const Scv & scv,
const Scvf & scvf )
inlinestaticprotectedinherited

◆ interfaceThroatVelocity()

template<class MDTraits, class CouplingManager>
template<class Context>
static VelocityVector Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::interfaceThroatVelocity ( const FVElementGeometry< freeFlowMomentumIndex > & fvGeometry,
const SubControlVolumeFace< freeFlowMomentumIndex > & scvf,
const Context & context )
inlinestaticinherited

◆ massCouplingCondition() [1/2]

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
template<class CouplingContext>
static NumCompVector Dumux::FreeFlowPoreNetworkCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, true >::massCouplingCondition ( Dune::index_constant< ParentType::freeFlowMassIndex > domainI,
Dune::index_constant< ParentType::poreNetworkIndex > domainJ,
const FVElementGeometry< ParentType::freeFlowMassIndex > & fvGeometry,
const SubControlVolumeFace< ParentType::freeFlowMassIndex > & scvf,
const ElementVolumeVariables< ParentType::freeFlowMassIndex > & insideVolVars,
const CouplingContext & context )
inlinestatic

◆ massCouplingCondition() [2/2]

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
template<class CouplingContext>
static NumCompVector Dumux::FreeFlowPoreNetworkCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, true >::massCouplingCondition ( Dune::index_constant< ParentType::poreNetworkIndex > domainI,
Dune::index_constant< ParentType::freeFlowMassIndex > domainJ,
const FVElementGeometry< ParentType::poreNetworkIndex > & fvGeometry,
const SubControlVolume< ParentType::poreNetworkIndex > & scv,
const ElementVolumeVariables< ParentType::poreNetworkIndex > & insideVolVars,
const CouplingContext & context )
inlinestatic

◆ momentumCouplingCondition()

template<class MDTraits, class CouplingManager>
template<class Context>
static NumEqVector< freeFlowMomentumIndex > Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::momentumCouplingCondition ( const FVElementGeometry< freeFlowMomentumIndex > & fvGeometry,
const SubControlVolumeFace< freeFlowMomentumIndex > & scvf,
const ElementVolumeVariables< freeFlowMomentumIndex > & elemVolVars,
const Context & context )
inlinestaticinherited

For the normal momentum coupling, the porous medium side of the coupling condition is evaluated, i.e. -[p n]^pm.

Member Data Documentation

◆ freeFlowMassIndex

template<class MDTraits, class CouplingManager>
auto Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::freeFlowMassIndex = CouplingManager::freeFlowMassIndex
staticconstexprinherited

◆ freeFlowMomentumIndex

template<class MDTraits, class CouplingManager>
auto Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::freeFlowMomentumIndex = CouplingManager::freeFlowMomentumIndex
staticconstexprinherited

◆ poreNetworkIndex

template<class MDTraits, class CouplingManager>
auto Dumux::FreeFlowPoreNetworkCouplingConditionsImplementationBase< MDTraits, CouplingManager >::poreNetworkIndex = CouplingManager::poreNetworkIndex
staticconstexprinherited

The documentation for this class was generated from the following file: