3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
Dumux::BoxForchheimersLaw< ScalarType, GridGeometry, ForchheimerVelocity > Class Template Reference

Forchheimer's law for box scheme. More...

#include <dumux/flux/box/forchheimerslaw.hh>

Inheritance diagram for Dumux::BoxForchheimersLaw< ScalarType, GridGeometry, ForchheimerVelocity >:

Description

template<class ScalarType, class GridGeometry, class ForchheimerVelocity>
class Dumux::BoxForchheimersLaw< ScalarType, GridGeometry, ForchheimerVelocity >

Forchheimer's law for box scheme.

Specialization of the BoxForchheimersLaw.

Note
Forchheimer's law is specialized for network and surface grids (i.e. if grid dim < dimWorld)
Template Parameters
Scalarthe scalar type for scalar physical quantities
GridGeometrythe grid geometry
ForchheimerVelocityclass for the calculation of the Forchheimer velocity
isNetworkwhether we are computing on a network grid embedded in a higher world dimension

Public Types

using Scalar = ScalarType
 state the scalar type of the law More...
 
using DiscretizationMethod = DiscretizationMethods::Box
 

Static Public Member Functions

template<class Problem , class ElementVolumeVariables , class ElementFluxVarsCache >
static Scalar flux (const Problem &problem, const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const SubControlVolumeFace &scvf, int phaseIdx, const ElementFluxVarsCache &elemFluxVarsCache)
 Compute the advective flux of a phase across the given sub-control volume face using the Forchheimer equation. More...
 
template<class Problem , class ElementVolumeVariables >
static Scalar calculateTransmissibility (const Problem &problem, const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const SubControlVolumeFace &scvf)
 
template<class Problem , class ElementVolumeVariables >
static DimWorldMatrix calculateHarmonicMeanSqrtPermeability (const Problem &problem, const ElementVolumeVariables &elemVolVars, const SubControlVolumeFace &scvf)
 Returns the harmonic mean of \(\sqrt{K_0}\) and \(\sqrt{K_1}\). More...
 

Static Public Attributes

static constexpr DiscretizationMethod discMethod {}
 state the discretization method this implementation belongs to More...
 

Member Typedef Documentation

◆ DiscretizationMethod

template<class ScalarType , class GridGeometry , class ForchheimerVelocity >
using Dumux::BoxForchheimersLaw< ScalarType, GridGeometry, ForchheimerVelocity >::DiscretizationMethod = DiscretizationMethods::Box

◆ Scalar

template<class ScalarType , class GridGeometry , class ForchheimerVelocity >
using Dumux::BoxForchheimersLaw< ScalarType, GridGeometry, ForchheimerVelocity >::Scalar = ScalarType

state the scalar type of the law

Member Function Documentation

◆ calculateHarmonicMeanSqrtPermeability()

template<class ScalarType , class GridGeometry , class ForchheimerVelocity >
template<class Problem , class ElementVolumeVariables >
static DimWorldMatrix Dumux::BoxForchheimersLaw< ScalarType, GridGeometry, ForchheimerVelocity >::calculateHarmonicMeanSqrtPermeability ( const Problem &  problem,
const ElementVolumeVariables &  elemVolVars,
const SubControlVolumeFace &  scvf 
)
inlinestatic

Returns the harmonic mean of \(\sqrt{K_0}\) and \(\sqrt{K_1}\).

This is a specialization for scalar-valued permeabilities which returns a tensor with identical diagonal entries.

◆ calculateTransmissibility()

template<class ScalarType , class GridGeometry , class ForchheimerVelocity >
template<class Problem , class ElementVolumeVariables >
static Scalar Dumux::BoxForchheimersLaw< ScalarType, GridGeometry, ForchheimerVelocity >::calculateTransmissibility ( const Problem &  problem,
const Element &  element,
const FVElementGeometry &  fvGeometry,
const ElementVolumeVariables &  elemVolVars,
const SubControlVolumeFace &  scvf 
)
inlinestatic

The flux variables cache has to be bound to an element prior to flux calculations During the binding, the transmissibility will be computed and stored using the method below.

◆ flux()

template<class ScalarType , class GridGeometry , class ForchheimerVelocity >
template<class Problem , class ElementVolumeVariables , class ElementFluxVarsCache >
static Scalar Dumux::BoxForchheimersLaw< ScalarType, GridGeometry, ForchheimerVelocity >::flux ( const Problem &  problem,
const Element &  element,
const FVElementGeometry &  fvGeometry,
const ElementVolumeVariables &  elemVolVars,
const SubControlVolumeFace &  scvf,
int  phaseIdx,
const ElementFluxVarsCache &  elemFluxVarsCache 
)
inlinestatic

Compute the advective flux of a phase across the given sub-control volume face using the Forchheimer equation.

The flux is given in N*m, and can be converted into a volume flux (m^3/s) or mass flux (kg/s) by applying an upwind scheme for the mobility or the product of density and mobility, respectively.

Member Data Documentation

◆ discMethod

template<class ScalarType , class GridGeometry , class ForchheimerVelocity >
constexpr DiscretizationMethod Dumux::BoxForchheimersLaw< ScalarType, GridGeometry, ForchheimerVelocity >::discMethod {}
staticconstexpr

state the discretization method this implementation belongs to


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