Black-oil fluid model

Overview

In the black-oil model three pseudo-components, oil (o), gas (g) and water (w) are considered. These are assumed to be partitioned across three fluid phases, named liquid (l), vapor (v) and aqueous (a).

Phase behavior is characterized by the following quantities which are used to relate properties of the fluids in the reservoir to their properties at surface conditions.

  • B_o: oil formation volume factor
  • B_g: gas formation volume factor
  • R_s: gas/oil ratio
  • R_v: oil/gas ratio

By tables, that tabulate saturated and undersaturated oil and gas properties as functions of pressure and solution ratios.

Dead oil

In dead-oil each component occupies only one phase. Thus, the following partition matrix determines the components distribution within the three phases:

\begin{bmatrix}
y_{gv} & y_{gl} & y_{ga}\\
y_{ov} & y_{ol} & y_{oa}\\
y_{wv} & y_{wl} & y_{wa}
\end{bmatrix}
= \begin{bmatrix}
1 & 0 & 0 \\
0  & 1 & 0 \\
0 & 0 & 1
\end{bmatrix}

and the phase densities are

\rho_{l} = & \, \frac{\rho_{o}^{STC}}{B_{o}} \\
\rho_{v} = & \, \frac{\rho_{g}^{STC}}{B_{g}}.

Live oil

The live oil fluid model make no assumptions about the partitioning of the hydrocarbon components and the following composition matrix can be used

\begin{bmatrix}
y_{gv} & y_{gl} & y_{ga}\\
\\
y_{ov} & y_{ol} & y_{oa}\\
\\
y_{wv} & y_{wl} & y_{wa}
\end{bmatrix}
= \begin{bmatrix}
\frac{\rho_{g}^{STC}}{\rho_{g}^{STC} + \rho_{o}^{STC} r_{s}} & \frac{\rho_{g}^{STC} R_{s}}{\rho_{o}^{STC} + \rho_{g}^{STC} R_{s}} & 0 \\
\\
\frac{\rho_{o}^{STC} r_{s}}{\rho_{g}^{STC} + \rho_{o}^{STC} r_{s}} & \frac{\rho_{o}^{STC}}{\rho_{o}^{STC} + \rho_{g}^{STC} R_{s}} & 0 \\
\\
0 & 0 & 1
\end{bmatrix}

whereas the densities of the two hydrocarbon phases are

\rho_{l} = & \, \frac{\rho_{o}^{STC} + \rho_{g}^{STC} R_{s}}{B_{o}} \\
\rho_{v} = & \, \frac{\rho_{g}^{STC} + \rho_{o}^{STC} R_{v}}{B_{g}}

See Petrowiki for more information.

Parameters

Both types are represented by <BlackOilFluid> node in the input. Under the hood this is a wrapper around PVTPackage library, which is included as a submodule. In order to use the model, GEOSX must be built with -DENABLE_PVTPACKAGE=ON (default).

The following attributes are supported:

Name Type Default Description
componentMolarWeight real64_array required Component molar weights
componentNames string_array {} List of component names
hydrocarbonFormationVolFactorTableNames string_array {}
List of formation volume factor TableFunction names from the Functions block.
The user must provide one TableFunction per hydrocarbon phase, in the order provided in “phaseNames”.
For instance, if “oil” is before “gas” in “phaseNames”, the table order should be: oilTableName, gasTableName
hydrocarbonViscosityTableNames string_array {}
List of viscosity TableFunction names from the Functions block.
The user must provide one TableFunction per hydrocarbon phase, in the order provided in “phaseNames”.
For instance, if “oil” is before “gas” in “phaseNames”, the table order should be: oilTableName, gasTableName
name string required A name is required for any non-unique nodes
phaseNames string_array required List of fluid phases
surfaceDensities real64_array required List of surface mass densities for each phase
tableFiles path_array {} List of filenames with input PVT tables (one per phase)
waterCompressibility real64 0 Water compressibility
waterFormationVolumeFactor real64 0 Water formation volume factor
waterReferencePressure real64 0 Water reference pressure
waterViscosity real64 0 Water viscosity

Supported phase names are:

Value Comment
oil Oil phase
gas Gas phase
water Water phase

Example

<Constitutive>
  <BlackOilFluid name="fluid1"
                 fluidType="LiveOil"
                 phaseNames="{ oil, gas, water }"
                 surfaceDensities="{ 800.0, 0.9907, 1022.0 }"
                 componentMolarWeight="{ 114e-3, 16e-3, 18e-3 }"
                 tableFiles="{ pvto.txt, pvtg.txt, pvtw.txt }"/>
</Constitutive>