Two-phase flow in vertical equilibrium, solved on a coarse grid of vertical columns. More...
#include <tuple>#include <dumux/discretization/method.hh>#include <dumux/porousmediumflow/2p/model.hh>#include <dumux/porousmediumflow/2pve/volumevariables.hh>Go to the source code of this file.
This model describes immiscible two-phase flow of a wetting phase \(w\) and a less dense nonwetting phase \(n\) in a formation of height \(H\), for instance the injection of CO2 into a saline aquifer. The phases are assumed to be segregated by gravity and in hydrostatic equilibrium in the vertical direction (vertical equilibrium) [79]. The mass balance equations are solved on a horizontal grid of dimension one lower than the formation. Each coarse cell represents a vertical column on a separate full-dimensional fine grid, and the vertical distribution of the saturations, pressures and mobilities is reconstructed in each column on the fine grid. See [23] for a detailed description of the model.
On the coarse level, the mass balance of each phase \(\alpha \in \{ w, n \}\) reads
\[\frac{\partial (\Phi \varrho_\alpha \bar S_\alpha)}{\partial t} - \nabla_h \cdot \left\{ \varrho_\alpha \bar\lambda_\alpha K_I \nabla_h P_\alpha \right\} - q_\alpha = 0, \]
where:
Coarse cell volumes and face areas are horizontal measures, and the column height \( H \) is the extrusion factor of storage, fluxes and sources. The problem therefore returns height averages: source returns \( q_\alpha / H \), the source per unit volume of the formation, and neumann returns the boundary flux integrated over the column height divided by \( H \), the flux per unit area of the vertical boundary face. Accordingly, the volume variables return the column averages \( \Phi / H \) and \( K_I / H \) as porosity() and permeability(), and the integrals as porosityIntegral() and permeabilityIntegral(). No solid state or energy equation is used; the prescribed temperature determines the fluid properties. The velocity output is the column-average Darcy velocity in m/s.
The coarse grid has only horizontal coordinates, so its gravity vector is zero. Vertical gravity is supplied by the fine-level spatial parameters and enters through the reconstruction. The primary variables are \( P_w \) and \( \bar S_n \). Extrapolating the hydrostatic nonwetting-phase pressure to the bottom of the column gives the coarse-level capillary pressure
\[P_n - P_w = p_e - (\varrho_w - \varrho_n) g z_p, \]
where \( p_e \) is the entry pressure, \( g \) the norm of the gravitational acceleration and \( z_p \) the gas plume distance, the height of the lower boundary of the mobile nonwetting phase. If the mobile nonwetting phase fills the column down to its bottom, the capillary fringe extends below the column and \( z_p < 0 \).
Above the gas plume distance, the wetting-phase saturation follows from the Brooks-Corey capillary pressure [21] in hydrostatic equilibrium,
\[S_w(z) = S_{wr} + (1 - S_{wr} - S_{nr}) \left( 1 + \frac{(\varrho_w - \varrho_n) g (z - z_p)}{p_e} \right)^{-\lambda}, \]
with the residual saturations \( S_{wr} \) and \( S_{nr} \) and the Brooks-Corey parameter \( \lambda \). Between the minimum gas plume distance of all previous time steps \( z_{p,\min} \) and \( z_p \), the nonwetting phase is residually trapped and \( S_w = 1 - S_{nr} \) [38]. Below \( z_{p,\min} \), \( S_w = 1 \). The gas plume distance is the height for which the vertical integral of this saturation profile equals \( H \bar S_w \). The fine-level mobilities are the cell averages of the Brooks-Corey relative permeabilities for this profile divided by the viscosities.
The current implementation has the following restrictions:
These are restrictions of the current implementation and are not general restrictions of vertical-equilibrium models.
A problem using this model has to provide fineLevelView(), returning the Dumux::TwoPVEFineLevelView that connects the coarse level to the fine level, and spatial parameters deriving from Dumux::TwoPVESpatialParams. After each time step, the fine-level solution and the history of the columns have to be updated with Dumux::TwoPVEFineLevelView::updateSol, and cached coarse-level volume variables have to be updated afterwards.
Classes | |
| struct | Dumux::Properties::FineGrid< TypeTag, MyTypeTag > |
| Full-dimensional grid used only for the vertical reconstruction. More... | |
| struct | Dumux::Properties::FineGridGeometry< TypeTag, MyTypeTag > |
| Finite-volume geometry of the reconstruction grid. More... | |
| struct | Dumux::Properties::TTag::TwoPVE |
| The type tag for the two-phase vertical-equilibrium model, derived from the two-phase model. More... | |
| struct | Dumux::Properties::VolumeVariables< TypeTag, TTag::TwoPVE > |
| Set the VE volume variables. More... | |
Namespaces | |
| namespace | Dumux |
| namespace | Dumux::Properties |
| The energy balance equation for a porous solid. | |
| namespace | Dumux::Properties::TTag |
| Type tag for numeric models. | |