Provides the Forchheimer flux module
More...
#include <forchheimerfluxmodule.hh>
Public Member Functions | |
const Evaluation & | ergunCoefficient () const |
Return the Ergun coefficent at the face's integration point. | |
Evaluation & | mobilityPassabilityRatio (unsigned phaseIdx) const |
Return the ratio of the mobility divided by the passability at the face's integration point for a given fluid phase. More... | |
![]() | |
const DimMatrix & | intrinsicPermability () const |
Returns the intrinsic permeability tensor for a given sub-control volume face. | |
const EvalDimVector & | potentialGrad (unsigned phaseIdx) const |
Return the pressure potential gradient of a fluid phase at the face's integration point [Pa/m]. More... | |
const EvalDimVector & | filterVelocity (unsigned phaseIdx) const |
Return the filter velocity of a fluid phase at the face's integration point [m/s]. More... | |
const Evaluation & | volumeFlux (unsigned phaseIdx) const |
Return the volume flux of a fluid phase at the face's integration point ![]() | |
Protected Member Functions | |
void | calculateGradients_ (const ElementContext &elemCtx, unsigned faceIdx, unsigned timeIdx) |
template<class FluidState > | |
void | calculateBoundaryGradients_ (const ElementContext &elemCtx, unsigned boundaryFaceIdx, unsigned timeIdx, const FluidState &fluidState, const typename FluidSystem::template ParameterCache< typename FluidState::Scalar > ¶mCache) |
void | calculateFluxes_ (const ElementContext &elemCtx, unsigned scvfIdx, unsigned timeIdx) |
Calculate the volumetric fluxes of all phases. More... | |
void | calculateBoundaryFluxes_ (const ElementContext &elemCtx, unsigned bfIdx, unsigned timeIdx) |
Calculate the volumetric flux rates of all phases at the domain boundary. | |
void | calculateForchheimerFlux_ (unsigned phaseIdx) |
void | forchheimerResid_ (DimEvalVector &residual, unsigned phaseIdx) const |
void | gradForchheimerResid_ (DimEvalVector &residual, DimEvalMatrix &gradResid, unsigned phaseIdx) |
bool | isDiagonal_ (const DimMatrix &K) const |
Check whether all off-diagonal entries of a tensor are zero. More... | |
![]() | |
short | upstreamIndex_ (unsigned phaseIdx) const |
short | downstreamIndex_ (unsigned phaseIdx) const |
void | calculateGradients_ (const ElementContext &elemCtx, unsigned faceIdx, unsigned timeIdx) |
Calculate the gradients which are required to determine the volumetric fluxes. More... | |
template<class FluidState > | |
void | calculateBoundaryGradients_ (const ElementContext &elemCtx, unsigned boundaryFaceIdx, unsigned timeIdx, const FluidState &fluidState, const typename FluidSystem::template ParameterCache< typename FluidState::Scalar > ¶mCache) |
Calculate the gradients at the grid boundary which are required to determine the volumetric fluxes. More... | |
void | calculateFluxes_ (const ElementContext &elemCtx, unsigned scvfIdx, unsigned timeIdx) |
Calculate the volumetric fluxes of all phases. More... | |
void | calculateBoundaryFluxes_ (const ElementContext &elemCtx, unsigned boundaryFaceIdx, unsigned timeIdx) |
Calculate the volumetric fluxes at a boundary face of all fluid phases. More... | |
void | calculateFilterVelocity_ (unsigned phaseIdx) |
Protected Attributes | |
DimVector | sqrtK_ |
Evaluation | ergunCoefficient_ |
Evaluation | mobilityPassabilityRatio_ [numPhases] |
Evaluation | density_ [numPhases] |
![]() | |
DimMatrix | K_ |
Evaluation | mobility_ [numPhases] |
EvalDimVector | filterVelocity_ [numPhases] |
Evaluation | volumeFlux_ [numPhases] |
EvalDimVector | potentialGrad_ [numPhases] |
short | upstreamDofIdx_ [numPhases] |
short | downstreamDofIdx_ [numPhases] |
short | interiorDofIdx_ |
short | exteriorDofIdx_ |
Provides the Forchheimer flux module
The commonly used Darcy relation looses its validity for Reynolds numbers . If one encounters flow velocities in porous media above this threshold, the Forchheimer approach can be used. Like the Darcy approach, it is a relation of with the fluid velocity in terms of the gradient of pressure potential. However, this relation is not linear (as in the Darcy case) any more.
Therefore, the Newton scheme is used to solve the Forchheimer equation. This velocity is then used like the Darcy velocity e.g. by the local residual.
Note that for Reynolds numbers above the standard Forchheimer relation also looses it's validity.
The Forchheimer equation is given by the following relation:
Where is the modified Ergun parameter and
is the passability which is given by a closure relation (usually it is assumed to be identical to the relative permeability). To avoid numerical problems, the relation implemented by this class multiplies both sides with
, so we get
|
inlineprotected |
Calculate the volumetric fluxes of all phases.
The pressure potentials and upwind directions must already be determined before calling this method!
|
inlineprotected |
Check whether all off-diagonal entries of a tensor are zero.
K | the tensor that is to be checked. |
|
inline |
Return the ratio of the mobility divided by the passability at the face's integration point for a given fluid phase.
Usually, that's the inverse of the viscosity.