ComponentTransport

Introduction

ComponentTransport process is widely used to predict the distribution of chemical components in the subsurface, which is controlled by the groundwater flow (advection), the hydrodynamic dispersion and diffusion, the sorption on the solid phase, as well as the decay of component.

Mathematical framework

The governing equation implemented in OGS-6 is the so-called advective and diffusion equation (ADE), with the consideration of sorption and decay process. ADE is widely used to describe the concentration of chemical components in groundwater aquifer and porous media. The equations can be solved analytically in (simplified) 1D cases. For more complex geometry, especially with heterogeneous material properties, numerical solution is often preferred. The ComponentTransport process has the following assumptions.

  • The model domain is a porous media and it is fully saturated with water.
  • The fluid velocity in the porous media is assumed to be slow, and the flow process is regulated by Darcy’s law.
  • The sorption process redistributes the chemical component between the aqueous and solid phase.
  • When a decay coefficient is given, the decay of the chemical component follows first-order reaction kinetics equation.

For the flow process, the continuity equation for flowing fluid in a saturated porous medium is as follows $$ \frac{\partial \left(\phi \rho\right)}{\partial t} + \nabla \cdot \left(\textbf{q} \rho\right) + Q_{p} = 0, $$ where $\phi$ [-] is the porosity, $\rho$ [kg/m$^3$] is the fluid density, $t$ [s] is the time, $\textbf{q}$ [m/s] is the Darcy flux with laminar flow assumptions, and $Q_{p}$ [kg/m$^3$/s] is the source-sink term. According to Darcy’s Law, the flux $\textbf{q}$ is related to the pressure drop and gravitational body force through $$ \textbf{q} = - \frac{\textbf{k}}{\mu} \left(\nabla p - \rho \textbf{g}\right), $$ where $\textbf{k}$ [m$^2$] is the intrinsic permeability, $\mu$ [Pa$\cdot$s] is the fluid dynamic viscosity, and $\textbf{g}$ [m/s$^2$] is the gravity vector.

For each chemical component $\alpha = 1, .., N_p$, its corresponding advective and diffusion equation (ADE) reads, $$ \begin{equation} \frac{\partial \left(\phi R c_{\alpha}\right)}{\partial t} + \nabla \cdot \left( \textbf{q} c_{\alpha} - \textbf{D} \nabla c_{\alpha} \right) + Q_{c_{\alpha}} + \phi \lambda R c_{\alpha} = 0, \end{equation} $$ with the concentration $c_{\alpha}$ of the chemical component as the primary variable. $D$ [m$^2$/s] denotes the hydrodynamic dispersion tensor with the following relation

$$ D = (\phi D_{p} + \beta_T \lVert \textbf{q} \rVert) \textbf{I} + ( \beta_L - \beta_T ) \frac{\textbf{q} \textbf{q}^{T}}{\lVert \textbf{q} \rVert} $$

implemented, where $D_p$ [m$^2$/s] is the pore diffusion coefficient, $\beta_L$ and $\beta_T$ [m] are the longitudinal and transversal dispersion coefficients. $R$ [-] is the retardation factor defined as $$ R = 1 + \rho_{b} K_{D} / \phi $$ with the bulk density of the porous media $\rho_{b}$ [kg/m$^3$] and the distribution coefficient $K_{D}$ [m$^3$/kg], and $\lambda$ [1/s] is the first-order decay constant, $$ \lambda = ln 2 / t_{1/2} $$ where $t_{1/2}$ [s] is the half life of the decaying component.

Input parameters

The following table shows an overview of all input parameters available in the ComponentTransport process.

Parameter Symbol Unit Doxygen and Example
Porosity $\phi$ [-] Link,Example
Fluid density $\rho$ [kg/m$^{3}$] Link
Intrinsic permeability $\textbf{k}$ [m$^{2}$] Link,Example
Dynamic viscosity $\mu$ [Pa$\cdot$s] Link
Gravity vector (specific body force) $\textbf{g}$ [m/s$^{2}$]
Retardation factor $R$ [-] Example
First-order decay constant $\lambda$ [1/s] Example

Input file definition

Process definition

In the ComponentTransport process, the configuration is as follows.

  • <name>: name of the chemical component.
  • <type>: must be ComponentTransport.
  • <integration_order>: This is the order of the integration method for element-wise integration. In common cases set to 2.
  • <process_variables>: The primary variables of the ComponentTransport process are either <concentration> or <pressure>. For the variable concentration, the name of the chemical component is given. Like in the following example, there are 3 chemical components, i.e. Si, Al and Cl. The <pressure> process’ variable is also named ‘pressure’, see <process_variables> section outside of process’ definition.
<processes>
    <process>
        <name>hc</name>
        <type>ComponentTransport</type>
        <integration_order>2</integration_order>
        <process_variables>
            <concentration>Si</concentration>
            <concentration>Al</concentration>
            <concentration>Cl</concentration>
            <pressure>pressure</pressure>
        </process_variables>
        <specific_body_force>0 0</specific_body_force>
        <secondary_variables>
            <secondary_variable internal_name="darcy_velocity" output_name="darcy_velocity"/>
        </secondary_variables>
    </process>
</processes>

Component definition

Under the keyword <component>, the properties of the transported chemical component are defined. The parameters here are the pore diffusion coefficient, the retardation factor, and the decay rate. Below is an example of the Si component with the corresponding transport parameters.

<component>
    <name>Si</name>
    <properties>
        <property>
            <name>pore_diffusion</name>
            <type>Constant</type>
            <value>1</value>
        </property>
        <property>
            <name>retardation_factor</name>
            <type>Constant</type>
            <value>0</value>
        </property>
        <property>
            <name>decay_rate</name>
            <type>Parameter</type>
            <parameter_name>decay</parameter_name>
        </property>
    </properties>
</component>

Available benchmarks


This article was written by Haibing Shao, Renchao Lu. If you are missing something or you find an error please let us know.
Generated with Hugo 0.117.0 in CI job 390020 | Last revision: June 1, 2023
Commit: [ParameterLib] Add 'Raster' case to createParameter() 9551be1  | Edit this page on