richardsmodel.hh File Reference
#include <opm/material/densead/Math.hpp>
#include "richardsproperties.hh"
#include "richardsindices.hh"
#include "richardslocalresidual.hh"
#include "richardsextensivequantities.hh"
#include "richardsratevector.hh"
#include "richardsboundaryratevector.hh"
#include "richardsprimaryvariables.hh"
#include "richardsintensivequantities.hh"
#include "richardsnewtonmethod.hh"
#include <opm/models/common/multiphasebasemodel.hh>
#include <opm/material/components/NullComponent.hpp>
#include <opm/material/fluidsystems/LiquidPhase.hpp>
#include <opm/material/fluidsystems/GasPhase.hpp>
#include <opm/material/fluidsystems/TwoPhaseImmiscibleFluidSystem.hpp>
#include <sstream>
#include <string>
Include dependency graph for richardsmodel.hh:

Go to the source code of this file.

Classes

struct  Opm::Properties::TTag::Richards
 The type tag for problems discretized using the Richards model. More...
 
struct  Opm::Properties::LiquidPhaseIndex< TypeTag, TTag::Richards >
 By default, assume that the first phase is the liquid one. More...
 
struct  Opm::Properties::GasPhaseIndex< TypeTag, TTag::Richards >
 By default, assume that the non-liquid phase is gaseos. More...
 
struct  Opm::Properties::LiquidComponentIndex< TypeTag, TTag::Richards >
 By default, assume that component which the liquid is made of has the same index as the liquid phase. More...
 
struct  Opm::Properties::GasComponentIndex< TypeTag, TTag::Richards >
 By default, assume that the gas component is the other than the liquid one. More...
 
struct  Opm::Properties::LocalResidual< TypeTag, TTag::Richards >
 The local residual operator. More...
 
struct  Opm::Properties::Model< TypeTag, TTag::Richards >
 The global model used. More...
 
struct  Opm::Properties::RateVector< TypeTag, TTag::Richards >
 the RateVector property More...
 
struct  Opm::Properties::BoundaryRateVector< TypeTag, TTag::Richards >
 the BoundaryRateVector property More...
 
struct  Opm::Properties::PrimaryVariables< TypeTag, TTag::Richards >
 the PrimaryVariables property More...
 
struct  Opm::Properties::IntensiveQuantities< TypeTag, TTag::Richards >
 The class for the intensive quantities. More...
 
struct  Opm::Properties::ExtensiveQuantities< TypeTag, TTag::Richards >
 The class for the quantities required for the flux calculation. More...
 
struct  Opm::Properties::NewtonMethod< TypeTag, TTag::Richards >
 The class of the Newton method. More...
 
struct  Opm::Properties::Indices< TypeTag, TTag::Richards >
 The class with all index definitions for the model. More...
 
struct  Opm::Properties::WettingFluid< TypeTag, TTag::Richards >
 The wetting phase used. More...
 
struct  Opm::Properties::NonWettingFluid< TypeTag, TTag::Richards >
 The non-wetting phase used. More...
 
struct  Opm::Properties::FluidSystem< TypeTag, TTag::Richards >
 The fluid system used by the model. More...
 
class  Opm::RichardsModel< TypeTag >
 This model implements a variant of the Richards equation for quasi-twophase flow. More...
 

Namespaces

namespace  Opm
 
namespace  Opm::Properties
 
namespace  Opm::Properties::TTag
 The generic type tag for problems using the immiscible multi-phase model.
 

Detailed Description

This model implements a variant of the Richards equation for quasi-twophase flow.

In the unsaturated zone, Richards' equation is frequently used to approximate the water distribution above the groundwater level. It can be derived from the two-phase equations, i.e.

\[
\frac{\partial\;\phi S_\alpha \rho_\alpha}{\partial t}
-
\mathrm{div} \left\{
\rho_\alpha \frac{k_{r\alpha}}{\mu_\alpha}\; \mathbf{K}\;
\mathbf{grad}\left[
p_\alpha - g\rho_\alpha
\right]
\right\}
=
q_\alpha,
\]

where $\alpha \in \{w, n\}$ is the index of the fluid phase, $\rho_\alpha$ is the fluid density, $S_\alpha$ is the fluid saturation, $\phi$ is the porosity of the soil, $k_{r\alpha}$ is the relative permeability for the fluid, $\mu_\alpha$ is the fluid's dynamic viscosity, $\mathbf{K}$ is the intrinsic permeability tensor, $p_\alpha$ is the fluid phase pressure and $g$ is the potential of the gravity field.

In contrast to the "full" two-phase model, the Richards model assumes that the non-wetting fluid is gas and that it thus exhibits a much lower viscosity than the (liquid) wetting phase. (This assumption is quite realistic in many applications: For example, at atmospheric pressure and at room temperature, the viscosity of air is only about $1\%$ of the viscosity of liquid water.) As a consequence, the $\frac{k_{r\alpha}}{\mu_\alpha}$ term typically is much larger for the gas phase than for the wetting phase. Using this reasoning, the Richards model assumes that $\frac{k_{rn}}{\mu_n}$ is infinitely large compared to the same term of the liquid phase. This implies that the pressure of the gas phase is equivalent to the static pressure distribution and that therefore, mass conservation only needs to be considered for the liquid phase.

The model thus choses the absolute pressure of the wetting phase $p_w$ as its only primary variable. The wetting phase saturation is calculated using the inverse of the capillary pressure, i.e.

\[
S_w = p_c^{-1}(p_n - p_w)
\]

holds, where $p_n$ is a reference pressure given by the problem's referencePressure() method. Nota bene, that the last step assumes that the capillary pressure-saturation curve can be uniquely inverted, i.e. it is not possible to set the capillary pressure to zero if the Richards model ought to be used!