3.5-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
Dumux::FreeFlowPorousMediumCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, false > Class Template Reference

Coupling data specialization for non-compositional models. More...

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

Inheritance diagram for Dumux::FreeFlowPorousMediumCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, false >:

Description

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
class Dumux::FreeFlowPorousMediumCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, false >

Coupling data specialization for non-compositional models.

Public Member Functions

template<bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
Scalar energyCouplingCondition (const Element< ParentType::porousMediumIndex > &element, const FVElementGeometry< ParentType::porousMediumIndex > &fvGeometry, const ElementVolumeVariables< ParentType::porousMediumIndex > &darcyElemVolVars, const SubControlVolumeFace< ParentType::porousMediumIndex > &scvf, const DiffusionCoefficientAveragingType diffCoeffAvgType=DiffusionCoefficientAveragingType::ffOnly) const
 Returns the energy flux across the coupling boundary as seen from the Darcy domain.
template<bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
Scalar energyCouplingCondition (const Element< ParentType::freeFlowMassIndex > &element, const FVElementGeometry< ParentType::freeFlowMassIndex > &fvGeometry, const ElementVolumeVariables< ParentType::freeFlowMassIndex > &stokesElemVolVars, const SubControlVolumeFace< ParentType::freeFlowMassIndex > &scvf, const DiffusionCoefficientAveragingType diffCoeffAvgType=DiffusionCoefficientAveragingType::ffOnly) const
 Returns the energy flux across the coupling boundary as seen from the free-flow domain.

Static Public Member Functions

template<std::size_t i, std::size_t j, class CouplingContext>
static Scalar massCouplingCondition (Dune::index_constant< i > domainI, Dune::index_constant< j > domainJ, const FVElementGeometry< i > &fvGeometry, const SubControlVolumeFace< i > &scvf, const ElementVolumeVariables< i > &insideVolVars, const CouplingContext &context)
 Returns the mass flux across the coupling boundary as seen from the Darcy 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 auto darcyPermeability (const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf, const Context &context)
 Returns the intrinsic permeability of the coupled Darcy element.
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.
static Scalar advectiveFlux (const Scalar insideQuantity, const Scalar outsideQuantity, const Scalar volumeFlow, bool insideIsUpstream)
 Evaluate an advective flux across the interface and consider upwinding.

Static Public Attributes

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

Protected Member Functions

template<std::size_t i, std::size_t j>
Scalar transmissibility_ (Dune::index_constant< i > domainI, Dune::index_constant< j > domainJ, const Scalar insideDistance, const Scalar outsideDistance, const Scalar avgQuantityI, const Scalar avgQuantityJ, const DiffusionCoefficientAveragingType diffCoeffAvgType) const
 Returns the transmissibility used for either molecular diffusion or thermal conductivity.
template<class Scv, class Scvf>
Scalar getDistance_ (const Scv &scv, const Scvf &scvf) const
 Returns the distance between an scvf and the corresponding scv center.
template<std::size_t i, std::size_t j, bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
Scalar conductiveEnergyFlux_ (Dune::index_constant< i > domainI, Dune::index_constant< j > domainJ, const FVElementGeometry< i > &fvGeometryI, const FVElementGeometry< j > &fvGeometryJ, const SubControlVolumeFace< i > &scvfI, const SubControlVolume< i > &scvI, const SubControlVolume< j > &scvJ, const VolumeVariables< i > &volVarsI, const VolumeVariables< j > &volVarsJ, const DiffusionCoefficientAveragingType diffCoeffAvgType) const
 Returns the conductive energy flux acorss the interface.

Static Protected Member Functions

template<class CouplingContext>
static Scalar pressureAtInterface_ (const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf, const ElementVolumeVariables< freeFlowMomentumIndex > &elemVolVars, const CouplingContext &context)
 Returns the pressure at the interface.
static Scalar computeCouplingPhasePressureAtInterface_ (const FVElementGeometry< porousMediumIndex > &fvGeometry, const SubControlVolumeFace< porousMediumIndex > &scvf, const VolumeVariables< porousMediumIndex > &volVars, const typename Element< freeFlowMomentumIndex >::Geometry::GlobalCoordinate &couplingPhaseVelocity, ForchheimersLaw)
 Returns the pressure at the interface using Forchheimers's law for reconstruction.
static Scalar computeCouplingPhasePressureAtInterface_ (const FVElementGeometry< porousMediumIndex > &fvGeometry, const SubControlVolumeFace< porousMediumIndex > &scvf, const VolumeVariables< porousMediumIndex > &volVars, const typename Element< freeFlowMomentumIndex >::Geometry::GlobalCoordinate &gravity, const typename Element< freeFlowMomentumIndex >::Geometry::GlobalCoordinate &couplingPhaseVelocity, DarcysLaw)
 Returns the pressure at the interface using Darcy's law for reconstruction.

Member Function Documentation

◆ advectiveFlux()

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

Evaluate an advective flux across the interface and consider upwinding.

◆ computeCouplingPhasePressureAtInterface_() [1/2]

template<class MDTraits, class CouplingManager>
Scalar Dumux::FreeFlowPorousMediumCouplingConditionsImplementationBase< MDTraits, CouplingManager >::computeCouplingPhasePressureAtInterface_ ( const FVElementGeometry< porousMediumIndex > & fvGeometry,
const SubControlVolumeFace< porousMediumIndex > & scvf,
const VolumeVariables< porousMediumIndex > & volVars,
const typename Element< freeFlowMomentumIndex >::Geometry::GlobalCoordinate & couplingPhaseVelocity,
ForchheimersLaw  )
inlinestaticprotectedinherited

Returns the pressure at the interface using Forchheimers's law for reconstruction.

◆ computeCouplingPhasePressureAtInterface_() [2/2]

template<class MDTraits, class CouplingManager>
Scalar Dumux::FreeFlowPorousMediumCouplingConditionsImplementationBase< MDTraits, CouplingManager >::computeCouplingPhasePressureAtInterface_ ( const FVElementGeometry< porousMediumIndex > & fvGeometry,
const SubControlVolumeFace< porousMediumIndex > & scvf,
const VolumeVariables< porousMediumIndex > & volVars,
const typename Element< freeFlowMomentumIndex >::Geometry::GlobalCoordinate & gravity,
const typename Element< freeFlowMomentumIndex >::Geometry::GlobalCoordinate & couplingPhaseVelocity,
DarcysLaw  )
inlinestaticprotectedinherited

Returns the pressure at the interface using Darcy's law for reconstruction.

◆ 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>
Scalar Dumux::FreeFlowPorousMediumCouplingConditionsImplementationBase< MDTraits, CouplingManager >::conductiveEnergyFlux_ ( Dune::index_constant< i > domainI,
Dune::index_constant< j > domainJ,
const FVElementGeometry< i > & fvGeometryI,
const FVElementGeometry< j > & fvGeometryJ,
const SubControlVolumeFace< i > & scvfI,
const SubControlVolume< i > & scvI,
const SubControlVolume< j > & scvJ,
const VolumeVariables< i > & volVarsI,
const VolumeVariables< j > & volVarsJ,
const DiffusionCoefficientAveragingType diffCoeffAvgType ) const
inlineprotectedinherited

Returns the conductive energy flux acorss the interface.

◆ couplingCompIdx()

template<class MDTraits, class CouplingManager>
template<std::size_t i>
constexpr auto Dumux::FreeFlowPorousMediumCouplingConditionsImplementationBase< MDTraits, CouplingManager >::couplingCompIdx ( Dune::index_constant< i > id,
int coupledCompIdx )
inlinestaticconstexprinherited

Returns the corresponding component index needed for coupling.

◆ couplingPhaseIdx()

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

Returns the corresponding phase index needed for coupling.

◆ darcyPermeability()

template<class MDTraits, class CouplingManager>
template<class Context>
auto Dumux::FreeFlowPorousMediumCouplingConditionsImplementationBase< MDTraits, CouplingManager >::darcyPermeability ( const FVElementGeometry< freeFlowMomentumIndex > & fvGeometry,
const SubControlVolumeFace< freeFlowMomentumIndex > & scvf,
const Context & context )
inlinestaticinherited

Returns the intrinsic permeability of the coupled Darcy element.

◆ energyCouplingCondition() [1/2]

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
template<bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
Scalar Dumux::FreeFlowPorousMediumCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, false >::energyCouplingCondition ( const Element< ParentType::freeFlowMassIndex > & element,
const FVElementGeometry< ParentType::freeFlowMassIndex > & fvGeometry,
const ElementVolumeVariables< ParentType::freeFlowMassIndex > & stokesElemVolVars,
const SubControlVolumeFace< ParentType::freeFlowMassIndex > & scvf,
const DiffusionCoefficientAveragingType diffCoeffAvgType = DiffusionCoefficientAveragingType::ffOnly ) const
inline

Returns the energy flux across the coupling boundary as seen from the free-flow domain.

◆ energyCouplingCondition() [2/2]

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
template<bool isNI = enableEnergyBalance, typename std::enable_if_t< isNI, int > = 0>
Scalar Dumux::FreeFlowPorousMediumCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, false >::energyCouplingCondition ( const Element< ParentType::porousMediumIndex > & element,
const FVElementGeometry< ParentType::porousMediumIndex > & fvGeometry,
const ElementVolumeVariables< ParentType::porousMediumIndex > & darcyElemVolVars,
const SubControlVolumeFace< ParentType::porousMediumIndex > & scvf,
const DiffusionCoefficientAveragingType diffCoeffAvgType = DiffusionCoefficientAveragingType::ffOnly ) const
inline

Returns the energy flux across the coupling boundary as seen from the Darcy domain.

◆ getDistance_()

template<class MDTraits, class CouplingManager>
template<class Scv, class Scvf>
Scalar Dumux::FreeFlowPorousMediumCouplingConditionsImplementationBase< MDTraits, CouplingManager >::getDistance_ ( const Scv & scv,
const Scvf & scvf ) const
inlineprotectedinherited

Returns the distance between an scvf and the corresponding scv center.

◆ massCouplingCondition()

template<class MDTraits, class CouplingManager, bool enableEnergyBalance>
template<std::size_t i, std::size_t j, class CouplingContext>
Scalar Dumux::FreeFlowPorousMediumCouplingConditionsImplementation< MDTraits, CouplingManager, enableEnergyBalance, false >::massCouplingCondition ( Dune::index_constant< i > domainI,
Dune::index_constant< j > domainJ,
const FVElementGeometry< i > & fvGeometry,
const SubControlVolumeFace< i > & scvf,
const ElementVolumeVariables< i > & insideVolVars,
const CouplingContext & context )
inlinestatic

Returns the mass flux across the coupling boundary as seen from the Darcy domain.

◆ momentumCouplingCondition()

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

Returns the momentum flux across the coupling boundary.

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

◆ pressureAtInterface_()

template<class MDTraits, class CouplingManager>
template<class CouplingContext>
Scalar Dumux::FreeFlowPorousMediumCouplingConditionsImplementationBase< MDTraits, CouplingManager >::pressureAtInterface_ ( const FVElementGeometry< freeFlowMomentumIndex > & fvGeometry,
const SubControlVolumeFace< freeFlowMomentumIndex > & scvf,
const ElementVolumeVariables< freeFlowMomentumIndex > & elemVolVars,
const CouplingContext & context )
inlinestaticprotectedinherited

Returns the pressure at the interface.

◆ transmissibility_()

template<class MDTraits, class CouplingManager>
template<std::size_t i, std::size_t j>
Scalar Dumux::FreeFlowPorousMediumCouplingConditionsImplementationBase< MDTraits, CouplingManager >::transmissibility_ ( Dune::index_constant< i > domainI,
Dune::index_constant< j > domainJ,
const Scalar insideDistance,
const Scalar outsideDistance,
const Scalar avgQuantityI,
const Scalar avgQuantityJ,
const DiffusionCoefficientAveragingType diffCoeffAvgType ) const
inlineprotectedinherited

Returns the transmissibility used for either molecular diffusion or thermal conductivity.

Member Data Documentation

◆ freeFlowMassIndex

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

◆ freeFlowMomentumIndex

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

◆ porousMediumIndex

template<class MDTraits, class CouplingManager>
auto Dumux::FreeFlowPorousMediumCouplingConditionsImplementationBase< MDTraits, CouplingManager >::porousMediumIndex = CouplingManager::porousMediumIndex
staticconstexprinherited

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