The Hydro-Thermal (HT) process models coupled groundwater flow and heat transport in porous media. Both sub-processes are described by parabolic partial differential equations that are coupled through temperature-dependent fluid properties (density, viscosity) and the advective heat transport term.
Both the flow and heat transport processes are derived from integral conservation laws. Starting with the conservation of mass (or energy), we write:
$$ \frac{\partial}{\partial t} \int_{\Omega} S(u) \, d\Omega = -\int_{\Gamma} \mathbf{J} \cdot \mathbf{n} \, d\sigma + \int_{\Omega} Q \, d\Omega $$where $S(u)$ is the volume density of the conserved quantity, $\mathbf{J}$ is the flux, $\mathbf{n}$ is the outward normal, and $Q$ represents sources/sinks.
Applying the divergence theorem (Gauss) to convert the boundary integral to a volume integral:
$$ \int_{\Omega} \left[ \frac{\partial S(u)}{\partial t} + \nabla \cdot \mathbf{J} - Q \right] d\Omega = 0 $$Since this holds for any domain $\Omega$, the strong form follows:
$$ \frac{\partial S(u)}{\partial t} + \nabla \cdot \mathbf{J} - Q = 0 $$Substituting constitutive laws for flux $\mathbf{J}$ (such as Darcy’s law for groundwater and Fourier’s law for heat) yields the specific governing equations.
The Darcy velocity is given by:
$$ \mathbf{q} = -\frac{\boldsymbol{\kappa}}{\mu(T)} \left( \nabla p + \varrho_f(T) g \mathbf{e}_z \right) $$The pressure equation including fluid compressibility reads:
$$ \left( \frac{\phi}{\varrho_f} \frac{\partial \varrho_f}{\partial p} + S \right) \frac{\partial p}{\partial t} - \nabla \cdot \left[ \frac{\boldsymbol{\kappa}}{\mu(T)} \nabla \Psi \right] - Q = 0 $$where $\Psi = p + \varrho_f(T) g z$ is the piezometric head, $S$ is the storage coefficient, $\phi$ is the porosity, and $Q$ is a source/sink term.
Derivation of the storage term: Applying the balance equation framework with $S(p) = \phi \varrho_f(p,T)$ (fluid mass per unit volume) yields:
$$ \frac{\partial \phi \varrho_f}{\partial t} - \nabla \cdot \left[ \frac{\boldsymbol{\kappa}}{\mu} \nabla \Psi \right] - Q = 0 $$Assuming the solid matrix is incompressible ($\partial \phi/\partial t = 0$), the storage term expands as:
$$ \frac{\partial \phi \varrho_f}{\partial t} = \phi \left( \frac{\partial \varrho_f}{\partial p} \frac{\partial p}{\partial t} + \frac{\partial \varrho_f}{\partial T} \frac{\partial T}{\partial t} \right) $$Under the Boussinesq approximation, the temperature dependence of density in storage is neglected, and fluid compressibility $\partial \varrho_f/\partial p$ is assumed constant, allowing the definition of an effective storage coefficient $S = \phi \frac{\partial \varrho_f}{\partial p}$. Temperature dependence is retained only in the buoyancy term through $\varrho_f(T)$ in the piezometric head.
where:
| Symbol | Definition |
|---|---|
| $c_p = \varrho_f \phi c_f + \varrho_s (1 - \phi) c_s$ | Volumetric heat capacity of the mixture |
| $\boldsymbol{\lambda} = \boldsymbol{\lambda}^{\mathrm{cond}} + \boldsymbol{\lambda}^{\mathrm{disp}}$ | Hydrodynamic thermo-dispersion tensor |
| $\boldsymbol{\lambda}^{\mathrm{cond}}$ | Effective thermal conductivity (from the medium’s thermal_conductivity MPL property, e.g. EffectiveThermalConductivityPorosityMixing) |
| $\boldsymbol{\lambda}^{\mathrm{disp}} = \varrho_f c_f \left[ \alpha_T \lVert\mathbf{q}\rVert \mathbf{I} + (\alpha_L - \alpha_T) \frac{\mathbf{q} \mathbf{q}^T}{\lVert\mathbf{q}\rVert} \right]$ | Thermal dispersivity |
| $\alpha_L$, $\alpha_T$ | Longitudinal and transversal thermo-dispersivities |
The fluid density $\varrho_f(T, p)$ and viscosity $\mu(T)$ couple the hydraulic and thermal equations. Fluid compressibility $\partial\varrho_f/\partial p$ enters the storage term, and temperature-dependent density drives buoyancy.
Note: The classical Boussinesq (Oberbeck–Boussinesq) approximation, where density variations appear only in the buoyancy term, can be recovered by choosing a density model with no pressure dependence (i.e. $\partial\varrho_f/\partial p = 0$, e.g. a constant or temperature-only dependent density) and omitting the solid_thermal_expansion configuration.
Both equations are discretized into the standard form $\mathbf{M} \dot{\mathbf{u}} + \mathbf{K} \mathbf{u} = \mathbf{f}$.
The weak form is obtained by multiplying the strong form by a test function $v \in H_0^1(\Omega)$ and integrating over the domain:
$$ \int_{\Omega} v \left[ \left( \frac{\phi}{\varrho_f} \frac{\partial \varrho_f}{\partial p} + S \right) \frac{\partial p}{\partial t} - \nabla \cdot \left[ \frac{\boldsymbol{\kappa}}{\mu} \nabla \Psi \right] - Q \right] d\Omega + \int_{\Gamma_N} v g_N \, d\sigma = 0 $$Integration by parts applied to the diffusion term:
$$ \int_{\Omega} v \nabla \cdot \left[ \frac{\boldsymbol{\kappa}}{\mu} \nabla \Psi \right] d\Omega = -\int_{\Omega} \nabla v^T \frac{\boldsymbol{\kappa}}{\mu} \nabla \Psi \, d\Omega + \int_{\Gamma} v \frac{\boldsymbol{\kappa}}{\mu} \nabla \Psi \cdot \mathbf{n} \, d\sigma $$Applying the Neumann boundary condition and setting $v=0$ on Dirichlet boundaries yields the weak form:
$$ \int_{\Omega} v \left( \frac{\phi}{\varrho_f} \frac{\partial \varrho_f}{\partial p} + S \right) \frac{\partial p}{\partial t} d\Omega + \int_{\Omega} \nabla v^T \frac{\boldsymbol{\kappa}}{\mu} \nabla \Psi \, d\Omega - \int_{\Omega} v Q \, d\Omega - \int_{\Gamma_N} v g_N \, d\sigma = 0 $$Substituting the Galerkin discretization $p \approx \sum_j N_j a_j$ and choosing $v = N_i$ recovers the matrix form $\mathbf{M}^p \dot{\mathbf{a}} + \mathbf{K}^p \mathbf{a} = \mathbf{f}^p$ presented above.
When solid_thermal_expansion is configured, an additional thermal expansion source term is added to the load vector:
where $\alpha_B$ is the Biot constant, $\alpha_s$ is the solid thermal expansion coefficient, and $\dot{T}$ is approximated by backward finite differences.
The HT process is declared in the <processes> block of the project file.
<process>
<name>HydroThermal</name>
<type>HT</type>
<integration_order>2</integration_order>
<process_variables>
<temperature>T</temperature>
<pressure>p</pressure>
</process_variables>
<specific_body_force>0 -9.81</specific_body_force>
<secondary_variables>
<secondary_variable name="darcy_velocity"/>
</secondary_variables>
</process>To use the staggered coupling scheme, add:
<coupling_scheme>staggered</coupling_scheme>In the staggered scheme, the heat transport equation (process ID 0) and the hydraulic equation (process ID 1) are solved sequentially.
The HT process requires two process variables: temperature and pressure.
Each should have 1 component.
For more details, see Process variables.
The HT process requires properties for the porous medium, the liquid phase, and the solid phase.
| Property name | Units | SI | Notes |
|---|---|---|---|
permeability |
[L$^2$] | [m$^2$] | Intrinsic permeability tensor |
porosity |
[-] | [-] | Porous medium porosity |
thermal_conductivity |
[M$\cdot$L/(T$^3\cdot\Theta$)] | [W/(m$\cdot$K)] | Effective thermal conductivity of the medium |
thermal_longitudinal_dispersivity |
[L] | [m] | Longitudinal thermo-dispersivity $\alpha_L$ |
thermal_transversal_dispersivity |
[L] | [m] | Transversal thermo-dispersivity $\alpha_T$ |
| Property name | Units | SI | Notes |
|---|---|---|---|
density |
[M/L$^3$] | [kg/m$^3$] | Fluid mass density $\large^{\star}$ |
viscosity |
[M/(L$\cdot$T)] | [Pa$\cdot$s] | Dynamic fluid viscosity $\large^{\star}$ |
specific_heat_capacity |
[L$^2$/(T$^2\cdot\Theta$)] | [J/(kg$\cdot$K)] | Specific heat capacity of the fluid |
thermal_conductivity |
[M$\cdot$L/(T$^3\cdot\Theta$)] | [W/(m$\cdot$K)] | Thermal conductivity of the fluid |
$\large^{\star}$ Functional dependencies (e.g. on temperature) can be specified. See the OGS User Guide.
| Property name | Units | SI | Notes |
|---|---|---|---|
density |
[M/L$^3$] | [kg/m$^3$] | Solid mass density |
specific_heat_capacity |
[L$^2$/(T$^2\cdot\Theta$)] | [J/(kg$\cdot$K)] | Specific heat capacity of the solid |
thermal_conductivity |
[M$\cdot$L/(T$^3\cdot\Theta$)] | [W/(m$\cdot$K)] | Thermal conductivity of the solid |
storage |
[L$\cdot$T$^2$/M] | [1/Pa] | Storage coefficient |
The gravity vector is specified as:
<specific_body_force>0 -9.81</specific_body_force>Optional coupling of thermal expansion effects on the pore pressure:
<solid_thermal_expansion>
<thermal_expansion>alpha_s</thermal_expansion>
<biot_constant>biot</biot_constant>
</solid_thermal_expansion>where alpha_s and biot are parameter names defined in the <parameters> block.
For lower-dimensional fracture elements, an aperture size parameter can be specified:
<aperture_size>
<parameter>fracture_aperture</parameter>
</aperture_size>Surface flux output can be configured:
<calculatesurfaceflux>
...
</calculatesurfaceflux>The HT process supports numerical stabilisation methods for advection-dominated transport.
See the OGS benchmark gallery for Hydro-Thermal examples.
This article was written by Thomas Fisher, Dmitri Naumov, Fabien Magri, Marc Walther, Tianyuan Zheng, Olaf Kolditz. If you are missing something or you find an error please let us know.
Generated with Hugo 0.150.1
in CI job 743172
|
Last revision: February 5, 2026
Commit: [py,cmake] Allow Python 3.14. 4d949dd99c
| Edit this page on