Governing equations

The equations for heat flow, fluid flow, solid mechanics, and chemical reactions are defined here. Notation used in these equations is summarised in the nomenclature. The Lagrangian coordinate system is used since it moves with the mesh.

Fluid flow

Mass conservation for fluid species is described by the continuity equation (1) Here is the mass of fluid per bulk volume (measured in kg.m), is the velocity of the porous solid skeleton (measured in m.s), is the flux (a vector, measured kg.s.m), is a radioactive decay rate, represents chemical precipitation or dissolution and is a source (measured in kg.m.s).

The coupling to the solid mechanics is via the term, as well as via changes in porosity and permeability. Coupling to heat flow and chemical reactions is via the equations of state used within the terms of Eq. (1), as well as the source term .

The species are parameterised by . For example, might parameterise water, air, H, a solute, and so on. parameterises things which cannot be decomposed into other species, but can change phase. For instance, sometimes it might be appropriate to consider air as a single species (say ), while other times it might be appropriate to consider it to be a mixture of nitrogen and oxygen ( and ). To model chemical precipitation, a solid phase, which is distinct from the porous skeleton, may also be used (its relative permeability will be zero: see below).

Mass density

The mass of species per volume of rock is written as a sum over all phases present in the system: (2) The solid's porosity is . is the saturation of phase (solid, liquid, gas, NAPL). is the density of phase . is the mass fraction of component present in phase . The final term represents fluid absorption into the porous-rock skeleton: is the mass of absorbed species per volume of solid rock-grain material.

The density is typically a function of pressure and temperature, but may also depend on mass fraction of individual components, as described by the equation of state used.

The saturation and mass fractions must obey (3)


The flux is a sum of advective flux and diffusive-and-dispersive flux: (4)


Advective flux is governed by Darcy's law. Each phase is assumed to obey Darcy's law. Each phase has its own density, , relative permeability , viscosity , and pressure . These may all be nonlinear functions of the independent variables. With them, we can form the advective Darcy flux: (5) In this equation is the Darcy velocity (volume flux, measured in m.s) in phase . It is used below in the diffusive-and-dispersion flux too.

The absolute permeability is denoted by and it is a tensor. The relative permeability of phase is denoted by . It is always a function of the saturation(s), but with Klinkenberg effects, it may also be a function of the gas pressure. Relative permeability can also be hysteretic, so that it depends on the history of saturation.


In reality, relative permeability is actually a tensor (for example it's usually different in lateral and vertical directions) but is most often treated as a scalar, since it's hard to get parameters for the tensorial case. In the PorousFlow module it is treated as a scalar

In some cirumstances is added to the above Darcy flux to model thermo-osmosis (with some tensor parameterising its strength), i.e. a gradient of temperature induces fluid flow.

Also note:

  • The pressure in phase is where is the reference pressure (usually taken to be the gas phase), and is the capillary pressure (nonpositive if the reference phase is the gas phase). The capillary pressure is often a function of saturation, and various forms have been coded into the PorousFlow module: see capillary pressure. The capillary pressure relationship used in a model can have a great bearing on both the speed of convergence and the results obtained. The capillary pressure relationship can also be hysteretic, in that it can depend on the history of the saturation.

  • The pressure in a gas phase is the sum of the gas partial pressures: . (The partial pressure of a gaseous species is where is the number of molecules. This is Dalton's law.) The partial pressure concept is reasonable for dilute gases, but is less useful for dense gases.

  • The mass-fraction of a species in the aqueous phase is often computed using Henry's law: where is the Henry coefficient. Occasionally this law is not accurate enough, and there are more complicated alternatives.

  • When a liquid and a gaseous phase exist, the simplest equation for vapour pressure is which is just the saturated vapour pressure of the liquid phase. This can set the temperature from the gaseous pressure, or vice-versa, depending on the choice of independent variables. A more complicated alternative is the Kelvin equation for vapour pressure that takes into account vapour pressure lowering due to capillarity and phase adsorption affects . Here is the molecular weight of water; is the capillary pressure — the difference between aqueous (liquid water) and gas phase pressures — a function of ; is the aqueous (liquid water) density; is the universal gas constant; is the temperature; is the saturated vapour pressure of the bulk aqueous (liquid water) phase.

Diffusion and hydrodynamic dispersion

Diffusion and dispersion are proportional to the gradient of . A detailed discussion of multiphase diffusion and dispersion is contained in Appendix D of the TOUGH2 manual (Pruess et al., 1999). Here we use the common expression (6) Note is a vector, is a 2-tensor and a vector. The hydrodynamic dispersion tensor is (7) where (8)

These are called the longitudinal and transverse dispersion coefficients. is the molecular diffusion coefficient for component in phase . is the tortuosity which includes a porous medium dependent factor and a coefficient , and and are the longitudinal and transverse dispersivities. It is common to set the hydrodynamic dispersion to zero by setting .


Multiple definitions of tortuosity appear in the literature. In PorousFlow, tortuosity is defined as the ratio of the shortest path to the effective path, so that .

Heat flow

Energy conservation for heat is described by the continuity equation (9) Here is the heat energy per unit volume in the rock-fluid system, is velocity of the porous solid skeleton, is the heat flux, describes the ratio of plastic-deformation energy that gets transferred to heat energy, is the effective stress (see Eq. (12)), is the plastic strain, and is a heat source.

The coupling to the solid mechanics is via the term, the term, as well as via changes in porosity and permeability described in porosity and permeability. Coupling to the fluid flow and chemical reactions is via the equations of state used within the terms of Eq. (9), as well as the source term . Joule-Thompson effects (See for instance Eq. (1) of Mathias et al. (2010)) may be included via the fluid properties.

Here it is assumed the liquids and solid are in local thermal equilibrium i.e. there is a single local temperature in all phases. If this doesn't hold, one is also normally in the high-flow regime where the flow is non-Darcy as well.

Sometimes a term is added that captures the thermal power due to volumetric expansion of the fluid, , where is the bulk modulus of the fluid or solid, is the thermal expansion coefficient, and is the Darcy velocity. This is not included in the Porous Flow module currently.

Energy density:

The heat energy per unit volume is (10) The notation is: porosity ; grain density ; specific heat capacity of rock ; temperature ; saturation of phase (solid, liquid, gas, NAPL); density of phase ; internal energy in phase ; internal energy of absorbed species .

Heat flux:

The heat flux is a sum of heat conduction and convection with the fluid: (11) Here is the tensorial thermal conductivity of the rock-fluid system, which is a function of the thermal conductivities of rock and fluid phases. Usually will be diagonal but in anisotropic porous materials it may not be. The specificy enthalpy of phase is denoted by , and is the advective Darcy flux.

Solid mechanics

Most of the solid mechanics used by the Porous Flow module is handled by the Tensor Mechanics module. This section provides a brief overview, concentrating on the aspects that differ from pure solid mechanics.

Denote the total stress tensor by . An externally applied mechanical force will create a nonzero , and conversely, resolving into forces yields the forces on nodes in the finite-element mesh.

Denote the effective stress tensor by . It is defined by (12) The notation is as follows.

  • is a measure of porepressure. In single-phase, fully-saturated situations it is traditional to use . However, for multi-phase situations is also used. Yet other expressions involve Bishop's parameter.

  • is the Biot coefficient. This obeys . For a multi-phase system, the Biot coefficient is often chosen to be . The Biot coefficient is interpreted physically by the following. If, by pumping fluid into a porous material, the porepressure is increased by , and at the same time a mechanical external force applies an incremental pressure equaling , then the volume of the porous solid remains static. (During this process, the porevolume and porosity will change, however, as quantified in porosity).

It is assumed that the elastic constitutive law reads (13) with being the thermal expansion coefficient of the drained porous skeleton, and being the usual total strain tensor ( is the deformation of the porous solid), which can be split into the elastic and plastic parts, , and being the elasticity tensor (the so-called drained version). The generalisation to large strain is obvious. The inverse of the constitutive law is (14) with being the compliance tensor.

It is assumed that the conservation of momentum is (15) where is the velocity of the solid skeleton, is the mass-density of the material (this is the undrained density: ), and are the components of the external force density (for example, the gravitational acceleration). Here any terms of have been explicitly ignored , and it's been assumed that to this order the velocity of each phase is identical to the velocity of the solid skeleton (otherwise there are terms involving on the left-hand side).

It is assumed that the effective stress not the total stress enters into the consitutive law (as above), and the plasticity, and the insitu stresses, and almost everywhere else. One exception is specifying Neumann boundary conditions for the displacements where the total stresses are being specified, as can be seen from Eq. (15). Therefore, MOOSE will use effective stress, and not total stress, internally. If one needs to input or output total stress, one must subtract from MOOSE's stress.

Chemical reactions

Aqueous chemistry

Aqueous equilibrium chemistry and precipitation/dissolution kinetic chemistry have been implemented in the same way as the chemical reactions module.

Adsorption and desorption

The fluid mass Eq. (2) contains contributions from adsorped species: is the mass of absorped species per volume of solid rock-grain material. Its dynamics involves no advective flux terms, as PorousFlow assumes that the adsorped species are trapped in the solid matrix. The governing equation is (16) The terms account for the porosity of the solid skeleton (so is the mass of adsorped species per volume of porous skeleton), the coupling to the solid mechanics is via the second term, and governs the adsorption-desorption process.

Currently, PorousFlow assumes that is a primary MOOSE variable (that is, defined in the Variables block of the MOOSE input file). This is in contrast to the remainder of PorousFlow where the primary variables can be arbitrary (so that variable switching and persistent variables can be used in difficult problems). Usually will have family=MONOMIAL and order=CONSTANT.

PorousFlow assumes that follows the Langmuir form: (17) Here is the mass-density rate (kg.m.s) of material moving from the adsorped state to the porespace. The notation is as follows.

  • is the so-called Langmuir density, which is adsorped-gas-mass per volume of solid rock-grain material (kg.m). In terms of the often used Langmuir volume, , it is gas density at STP.

  • is the Langmuir pressure (Pa)

  • is the relevant phase pressure (which will be the pressure of the gas phase). Currently, PorousFlow assumes that is a primary MOOSE variable (that is, defined in the Variables block of the MOOSE input file). This is in contrast to the remainder of PorousFlow where the primary variables can be arbitrary.

  • is the time constant. Two time constants may be defined: one for desorption, and one for adsorption, so

(18) A mollifier may also be defined to mollify the step-change between desorption and adsorption.


Each part of the governing equations above are implemented in separate Kernels. Simulations can then include any or all of the possible physics available in the Porous Flow module by simply adding extra Kernels to the input file.

Table 1: Available Kernels



  1. Simon A. Mathias, Jon G. Gluyas, Curtis M. Oldenburg, and Chin-Fu Tsang. Analytical solution for Joule-Thomson cooling during CO$_2$ geo-sequestration in depleted oil and gas reservoirs. International Journal of Greenhouse Gas Control, 4:806–810, 2010.[BibTeX]
  2. K. Pruess, C. Oldenburg, and G. Moridis. TOUGH2 User's Guide, Version 2.0. Technical Report LBNL-43134, Lawrence Berkeley National Laboratory, Berkeley CA, USA, 1999.[BibTeX]