This model implements a variant of the Richards equation for quasi-twophase flow. More...
#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 <ewoms/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 <opm/common/Unused.hpp>
#include <sstream>
#include <string>
Go to the source code of this file.
Classes | |
class | Ewoms::RichardsModel< TypeTag > |
This model implements a variant of the Richards equation for quasi-twophase flow. More... | |
class | Ewoms::RichardsModel< TypeTag > |
This model implements a variant of the Richards equation for quasi-twophase flow. More... | |
Functions | |
Ewoms::Properties::NEW_TYPE_TAG (Richards, INHERITS_FROM(MultiPhaseBaseModel)) | |
The type tag for problems discretized using the Richards model. | |
Ewoms::Properties::SET_INT_PROP (Richards, LiquidPhaseIndex, 0) | |
By default, assume that the first phase is the liquid one. | |
Ewoms::Properties::SET_INT_PROP (Richards, GasPhaseIndex, 1 - GET_PROP_VALUE(TypeTag, LiquidPhaseIndex)) | |
By default, assume that the non-liquid phase is gaseos. | |
Ewoms::Properties::SET_INT_PROP (Richards, LiquidComponentIndex, GET_PROP_VALUE(TypeTag, LiquidPhaseIndex)) | |
By default, assume that component which the liquid is made of has the same index as the liquid phase. More... | |
Ewoms::Properties::SET_INT_PROP (Richards, GasComponentIndex, 1 - GET_PROP_VALUE(TypeTag, LiquidComponentIndex)) | |
By default, assume that the gas component is the other than the liquid one. | |
Ewoms::Properties::SET_TYPE_PROP (Richards, LocalResidual, Ewoms::RichardsLocalResidual< TypeTag >) | |
The local residual operator. | |
Ewoms::Properties::SET_TYPE_PROP (Richards, Model, Ewoms::RichardsModel< TypeTag >) | |
The global model used. | |
Ewoms::Properties::SET_TYPE_PROP (Richards, RateVector, Ewoms::RichardsRateVector< TypeTag >) | |
the RateVector property | |
Ewoms::Properties::SET_TYPE_PROP (Richards, BoundaryRateVector, Ewoms::RichardsBoundaryRateVector< TypeTag >) | |
the BoundaryRateVector property | |
Ewoms::Properties::SET_TYPE_PROP (Richards, PrimaryVariables, Ewoms::RichardsPrimaryVariables< TypeTag >) | |
the PrimaryVariables property | |
Ewoms::Properties::SET_TYPE_PROP (Richards, IntensiveQuantities, Ewoms::RichardsIntensiveQuantities< TypeTag >) | |
The class for the intensive quantities. | |
Ewoms::Properties::SET_TYPE_PROP (Richards, ExtensiveQuantities, Ewoms::RichardsExtensiveQuantities< TypeTag >) | |
The class for the quantities required for the flux calculation. | |
Ewoms::Properties::SET_TYPE_PROP (Richards, NewtonMethod, Ewoms::RichardsNewtonMethod< TypeTag >) | |
The class of the Newton method. | |
Ewoms::Properties::SET_TYPE_PROP (Richards, Indices, Ewoms::RichardsIndices) | |
The class with all index definitions for the model. | |
Ewoms::Properties::SET_PROP (Richards, WettingFluid) | |
The wetting phase used. More... | |
Ewoms::Properties::SET_PROP (Richards, NonWettingFluid) | |
The non-wetting phase used. More... | |
Ewoms::Properties::SET_PROP (Richards, FluidSystem) | |
The fluid system used by the model. More... | |
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.
where is the index of the fluid phase,
is the fluid density,
is the fluid saturation,
is the porosity of the soil,
is the relative permeability for the fluid,
is the fluid's dynamic viscosity,
is the intrinsic permeability tensor,
is the fluid phase pressure and
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 of the viscosity of liquid water.) As a consequence, the
term typically is much larger for the gas phase than for the wetting phase. Using this reasoning, the Richards model assumes that
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 as its only primary variable. The wetting phase saturation is calculated using the inverse of the capillary pressure, i.e.
holds, where 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!
Ewoms::Properties::SET_INT_PROP | ( | Richards | , |
LiquidComponentIndex | , | ||
GET_PROP_VALUE(TypeTag, LiquidPhaseIndex) | |||
) |
By default, assume that component which the liquid is made of has the same index as the liquid phase.
This is a convention which works for most fluid systems shipped with eWoms by default, but it cannot generally correct because the liquid can be composed of different components. (e.g., do you prefer Ethanol of H2O??)
Ewoms::Properties::SET_PROP | ( | Richards | , |
WettingFluid | |||
) |
The wetting phase used.
By default we use the null-phase, i.e. this has to be defined by the problem for the program to work. Please be aware that you should be careful to use the Richards model in conjunction with liquid non-wetting phases. This is only meaningful if the viscosity of the liquid phase is much lower than the viscosity of the wetting phase.
Ewoms::Properties::SET_PROP | ( | Richards | , |
NonWettingFluid | |||
) |
The non-wetting phase used.
By default we use the null-phase, i.e. this has to be defined by the problem for the program to work. This doed not need to be specified by the problem for the Richards model to work because the Richards model does not conserve the non-wetting phase.
Ewoms::Properties::SET_PROP | ( | Richards | , |
FluidSystem | |||
) |
The fluid system used by the model.
By default this uses the immiscible twophase fluid system. The actual fluids used are specified using in the problem definition by the WettingFluid and NonWettingFluid properties. Be aware that using different fluid systems in conjunction with the Richards model only makes very limited sense.