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.
: oil formation volume factor
: gas formation volume factor
: gas/oil ratio
: 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:
and the phase densities are
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
whereas the densities of the two hydrocarbon phases are
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, GEOS must be built with -DENABLE_PVTPACKAGE=ON
(default).
The following attributes are supported:
XML Element: BlackOilFluid
Name |
Type |
Default |
Description |
---|---|---|---|
checkPVTTablesRanges |
integer |
1 |
Enable (1) or disable (0) an error when the input pressure or temperature of the PVT tables is out of range. |
componentMolarWeight |
real64_array |
required |
Component molar weights |
componentNames |
string_array |
{} |
List of component names |
hydrocarbonFormationVolFactorTableNames |
groupNameRef_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 |
groupNameRef_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 |
groupName |
required |
A name is required for any non-unique nodes |
phaseNames |
groupNameRef_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>