Two-phase (immiscible) Darcy flow in vertical equilibrium. More...
Two-phase flow in vertical equilibrium, solved on a coarse grid of vertical columns.
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 | |
| class | Dumux::TwoPVEColumnMapping< CoarseGridGeometry, FineGridGeometry, Scalar > |
| Maps horizontal coarse cells to vertically stacked fine cells using horizontal projection. More... | |
| struct | Dumux::TwoPVEColumnState< Scalar > |
| The state of a coarse-level column from which the fine-level quantities are reconstructed. More... | |
| class | Dumux::TwoPVEFineLevelElementState< GridGeometry, Scalar, FluidSystem > |
| The quantities of a fine-level element reconstructed from the state of its coarse-level column. More... | |
| struct | Dumux::TwoPVEFineLevelFieldStorage< GridGeometry, Scalar, FluidSystem > |
| Stores the reconstructed quantities of all fine-level elements for output. More... | |
| struct | Dumux::TwoPVEColumnHistory< Scalar > |
| The gas plume distance of a coarse-level column at the last time step and its minimum over all previous time steps. More... | |
| class | Dumux::TwoPVEFineLevelView< CoarseGridGeometry, FineGridGeometry, Scalar, FluidSystem, Indices, SolutionVector, SpatialParamsFine > |
| Connects the coarse level of the two-phase VE model to its fine level. More... | |
| struct | Dumux::TwoPVE::GasPlumeDistancesData< Scalar > |
| The gas plume distance of a column and its minimum over all previous time steps. More... | |
| struct | Dumux::TwoPVE::PhaseDensitiesData< Scalar > |
| The densities of the wetting and the nonwetting phase. More... | |
| struct | Dumux::TwoPVE::PhaseViscositiesData< Scalar > |
| The viscosities of the wetting and the nonwetting phase. More... | |
| struct | Dumux::TwoPVE::ResidualSaturationsData< Scalar > |
| The residual saturations of the wetting and the nonwetting phase. More... | |
| struct | Dumux::TwoPVE::BrooksCoreyParametersData< Scalar > |
| The parameters of the Brooks-Corey material law. More... | |
| class | Dumux::TwoPVEQuantityReconstruction< Scalar, FluidSystem > |
| Reconstructs the fine-level quantities of a column from its coarse-level quantities assuming vertical equilibrium. More... | |
| class | Dumux::TwoPVESpatialParams< GridGeometry, FineGridGeometry, Scalar, SpatialParamsFine, Implementation > |
| The base class for the coarse-level spatial parameters of the two-phase VE model. More... | |
| class | Dumux::TwoPVEVolumeVariables< Traits > |
| Contains the quantities which are constant within a coarse-level finite volume in the two-phase VE model. More... | |
Files | |
| file | columnmapping.hh |
| Manages the maps between the coarse and fine level. | |
| file | elementstatefine.hh |
| Mimics the volume variables structure of DuMux applied to the fine level of the VE scheme. | |
| file | fieldstoragefine.hh |
| I/O container for storing fine-level quantities, used for vtk output. | |
| file | finelevelview.hh |
| Provides access to all fine-level concepts and containers. | |
| file | model.hh |
| Two-phase flow in vertical equilibrium, solved on a coarse grid of vertical columns. | |
| file | quantityreconstruction.hh |
| Reconstructs quantities from the coarse to the fine level of the VE scheme. | |
| file | spatialparams.hh |
| The base class for the coarse-level spatial parameters of the two-phase VE model. | |
| file | volumevariables.hh |
| Contains the quantities which are constant within a finite volume in the two-phase VE model. | |