The Liquid-Flow-Process models saturated single-phase flow, which can be of variable density, in porous and fractured media. It may be used for modeling water flow but can be equally used to model flow of other liquids and also gas as long as flow follows the Darcy regime. However, the natural application of the Liquid-Flow-Process is in modeling groundwater flow. As such, the documentation above specifically targets hydrogeologists. In the context of groundwater modeling, it is important to note that the pressure-based variant of the groundwater flow equation is implemented in OGS, which may not be the most intuitive for hydrogeologists. To this end, the documentation above aims, among other things, to give conversions between the pressure-based and the hydraulic-head based formulations of the groundwater flow equation as well as it outlines how to use the Liquid-Flow-Process to natively model the hydraulic head-based formulation of the groundwater flow equation commonly used in hydrogeology.
The LiquidFlow process can solve the fluid-flow equation in two variants.
The more general formulation is the mass-balance version of the equation:
$$ \left( \rho_w \frac{\partial n_e}{\partial p_w} + n_e \frac{\partial \rho_w }{\partial p_w} \right) \frac{\partial p_w}{\partial t} -\nabla \cdot \left( \rho_w \frac{\mathbf{K}_0}{\mu_w} \left( \nabla p_w - \rho_w \mathbf{g} \right)\right) = \rho_w W_0. \qquad \text{(mass)} $$This variant accounts for compressible (density-dependent) flow. It is selected by including the following tag in the project file:
<equation_balance_type>mass</equation_balance_type>Dividing the mass balance equation by $\rho_w$ and assuming density is constant in space (such that $\nabla \cdot (\rho_w \, \cdot) \approx \rho_w \, \nabla \cdot (\cdot)$) gives the volume-balance form. Substituting the OGS storage coefficient $\beta_s = \partial n_e / \partial p_w$ yields:
$$ \left(\beta_s + \frac{n_e}{\rho_w} \frac{\partial \rho_w }{\partial p_w} \right) \frac{\partial p_w}{\partial t} -\nabla \cdot \left(\frac{\mathbf{K}_0}{\mu_w} \left( \nabla p_w - \rho_w \mathbf{g} \right)\right) = W_0. $$In the code, the volume balance mode enforces a constant (pressure-independent) fluid density, i.e. $\partial \rho_w / \partial p_w \equiv 0$. The equation therefore simplifies to:
$$ \begin{equation} \beta_s \frac{\partial p_w}{\partial t} -\nabla \cdot \left(\frac{\mathbf{K}_0}{\mu_w} \left( \nabla p_w - \rho_w \mathbf{g} \right)\right) = W_0. \qquad \text{(volume, default)} \end{equation} $$This is the default formulation. To explicitly select it, set the following tag in the project file:
<equation_balance_type>volume</equation_balance_type>with the Darcy velocity as secondary variable:
$$ \begin{equation} \mathbf{q} = - \frac{\mathbf{K_0}}{\mu_w} \left( \nabla p_w - \rho_w \mathbf{g} \right) \end{equation} $$where the subscript $w$ denotes “water”. The following table lists all variables used in the equations:
| Symbols | Units | SI | Definition |
|---|---|---|---|
| $\beta_s = \partial n_e / \partial p_w$ | [LT²/M] | [1/Pa] | storage coefficient of OGS |
| $\mu_w$ | [M/LT] | [Pa s] | dynamic fluid viscosity |
| $\rho_w$ , ($\rho^f$) | [M/L³] | [kg/m³] | fluid density |
| $\nabla$ | [1/L] | [1/m] | divergence, gradient operator |
| $g$ | [L/T²] | [m/s²] | gravitational acceleration coefficient |
| $\mathbf{g}$ | [L/T²] | [m/s²] | gravitational acceleration vector (0,0,g) |
| $h$ | [L] | [m] | hydraulic head |
| $\mathbf{K_0}$ | [L²] | [m²] | intrinsic permeability |
| $\mathbf{K}$ | [L/T¹] | [m/s] | hydraulic conductivity |
| $n_e$ | [-] | [-] | effective porosity |
| $p_w$ , ($p^f$) | [M/LT²] | [Pa] | liquid phase (i.e. water) pressure |
| $S_0$ | [1/L] | [1/m] | specific storage coefficient in hydrogeology |
| $t$ | [T] | [s] | time |
| $W_0$ | [1/T] | [1/s] | source/sink term |
Please note that in OGS the gravitational acceleration vector is defined as $\mathbf{b} = - \mathbf{g}$. Thus, if one wants to work with the pressure-based variant of groundwater flow, the input for the gravitational acceleration in 3D is:
<specific_body_force> 0 0 -9.81</specific_body_force>It is important to note that OGS also has a “storage” coefficient, which is defined as such: $\beta_s = \partial n_e / \partial p_w$. One can show that for equation (1) under the assumption $\partial \rho_w / \partial p_w = 0$ the following relation holds: $\beta_s = S_0/(\rho_w g)$, relating the specific storage of hydrogeology to the storage implemented in OGS.
Consequently, the hydrogeological variant of the groundwater equation with hydraulic head $h$ as process variable can be achieved by applying the following measures:
<specific_body_force>Then:
Thus, one effectively models the groundwater flow equation in the following form:
$$ \begin{equation} S_0 \frac{\partial h}{\partial t} - \nabla \cdot (\mathbf{K} \nabla h) = W_0. \end{equation} $$A detailed derivation of the Liquid-Flow equations and further information on its various formulations can be found in Governing Equations for the LiquidFlow-Process in OpenGeoSys.
The Liquid-Flow equation is discretized using the finite element method. The discrete system takes the form:
$$ \begin{equation} \mathbf{M}_e \frac{d\mathbf{p}_e}{dt} + \mathbf{K}_e \mathbf{p}_e = \mathbf{b}_e \end{equation} $$where the element matrices depend on the chosen equation balance type as follows.
| Volume balance (default) | Mass balance | |
|---|---|---|
| $\mathbf{M}_e$ | $\displaystyle\int_{\Omega^e} \mathbf{N}^T \beta_s \mathbf{N} \, d\Omega$ | $\displaystyle\int_{\Omega^e} \mathbf{N}^T \!\left(\rho_w \beta_s + n_e \frac{\partial \rho_w}{\partial p_w}\right)\! \mathbf{N} \, d\Omega$ |
| Volume balance (default) | Mass balance | |
|---|---|---|
| $\mathbf{K}_e$ | $\displaystyle\int_{\Omega^e} (\nabla \mathbf{N})^T \frac{\mathbf{K_0}}{\mu} (\nabla \mathbf{N}) \, d\Omega$ | $\displaystyle\int_{\Omega^e} (\nabla \mathbf{N})^T \frac{\rho_w \mathbf{K_0}}{\mu} (\nabla \mathbf{N}) \, d\Omega$ |
| Volume balance (default) | Mass balance | |
|---|---|---|
| $\mathbf{b}_e$ | $\displaystyle\int_{\Omega^e} (\nabla \mathbf{N})^T \frac{\mathbf{K_0}}{\mu} \rho_w \mathbf{g} \, d\Omega$ | $\displaystyle\int_{\Omega^e} (\nabla \mathbf{N})^T \frac{\rho_w^2 \mathbf{K_0}}{\mu} \mathbf{g} \, d\Omega$ |
prj fileLiquid Flow process has to be declared in the project file prj in the processes block. For example in the following way:
<process>
<name>LiquidFlow</name>
<type>LIQUID_FLOW</type>
<integration_order>2</integration_order>
<process_variables>
<process_variable>pressure</process_variable>
</process_variables>
<secondary_variables>
<secondary_variable internal_name="darcy_velocity" output_name="v"/>
</secondary_variables>
<specific_body_force>0.0 0.0</specific_body_force>
</process>For Liquid-Flow fluid and porous medium properties need to be specified.
| Property name | Units | SI | Notes |
|---|---|---|---|
density |
[M/L³] | [kg·m⁻³] | Fluid mass density $\large^{\star}$ |
viscosity |
[M/LT] | [Pa·s] | Dynamic fluid viscosity $\large^{\star}$ |
$\large^{\star}$ functional dependencies can be specified. See the OGS User Guide
| Property name | Units | SI | Notes |
|---|---|---|---|
porosity |
[-] | [-] | Porous medium porosity $\large^{\star}$ |
permeability |
[L²] | [m²] | Intrinsic permeability $\large^{\star}$ |
reference_temperature |
[$\Theta$] | [K] | Reference temperature for fluid properties |
storage |
[LT²/M] | [m·s²/kg] | Specific storage coefficient $\beta_s$ |
$\large^{\star}$ functional dependencies can be specified. See the OGS User Guide
See the OGS benchmark gallery for Liquid-Flow examples.
See the OGSTools documentation for complete workflows (Jupyter Notebooks) covering geometric description, meshing, project generation, simulation, and visualization of results.
This article was written by Philipp Selzer, Tom Fischer, Olaf Kolditz. If you are missing something or you find an error please let us know.
Generated with Hugo 0.154.5
in CI job 743084
|
Last revision: March 10, 2026
Commit: [cmake] Introduced clang base preset. 222b33c5f
| Edit this page on