Black Oil Equilibration

FLOW_CONDITION can be used to set up a hydrostatic equilibration that defines a distribution for pressure, saturation and temperature versus depth. Such a condition can be applied to the entire reservoir to initialize a study when used within INITIAL_CONDITION. Below is an example of a hydrostatic equilibration for a black oil model, with variable Pb and temperature:

FLOW_CONDITION equilibration
  TYPE
    PRESSURE HYDROSTATIC
  /
  PRESSURE 330.0 Bar
  DATUM_D 2480.0 m
  OGC_D 2430.0 m
  PCOG_OGC 0.5 Bar
  OWC_D 2470.0 m
  PCOW_OWC 0.5 Bar
  BUBBLE_POINT_TABLE
    D_UNITS m
    PRESSURE_UNITS Bar
    PBVD
      2430.0 333.0
      2470.0 335.0
    /
  END
  TEMPERATURE_TABLE
    D_UNITS m
    TEMPERATURE_UNITS C
    RTEMPVD
      2300.0 126.0
      2400.0 128.0
    /
  END
/

In this page we discuss the input sub-card supported in the equilibration for black oil models, as well as additional considaration on how the study is initialised:

DATUM_D

Depth of the reference datum. Require units. Defaults to 0.

PRESSURE

Reference pressure at datum. Must be entered or the code will return an error. Pressure units must be specified.

OWC_D

Defines the depth of the oil-water phase contact. Requires units. If not set defaults to 0

PCOW_OWC

Defines the capillary pressure between the water and the oil phases at the depth of the oil-water phase contact. It requires pressure units. If not set defaults to 0.

OGC_D

Defines the depth of the oil-gas phase contact. It requires units. If not set defaults to 0.

PCOG_OGC

Capillary pressure between the oil and the gas phases at the depth of the oil-gas phase contact. Requires pressure units. If not set default to 0.

BUBBLE_POINT_TABLE

The BUBBLE_POINT_TABLE defines the bubble point pressure (\(P_b\)) versus depth for all grid blocks associated with the hydrostatic equilibration. See example:

BUBBLE_POINT_TABLE
   D_UNITS m
   PRESSURE_UNITS Bar
   PBVD
     2430.0 333.0
     2470.0 335.0
  /
END

Units must be defined using D_UNITS and PRESSURE_UNITS. The data depth vs bubble point pressure are entered within the PBVD block.

The entries must be ordered for monotonically growing depths, and at least two entries are required for the internal interpolation to work. In the hydrostatic equilibration calculation, if for a given depth a bubble point pressure is found to be larger than the oil hydrostatic pressure, its value is reset to the hydrostatic oil pressure value to ensure \(P_b \leq P_o\).

To remove the PBVD table, the entire BUBBLE_POINT_TABLE block must be removed. If only the PBVD table is removed leaving the BUBBLE_POINT_TABLE block, the code returns an error as a PBVD is expected.

If the PBVD table is not defined, the datum and the oil-gas phase contact must have the same location ( DATUM_D = OGC_D), and the bubble point pressure below the OGC (i.e. undersaturated oil) is taken constant and equal to the pressure at datum. See example:

FLOW_CONDITION equilibration
  TYPE
   PRESSURE HYDROSTATIC
  /
  PRESSURE 327.0 Bar
  RTEMP 50 C
  DATUM_D 2430.0 m
  OGC_D     2430.0 m
  PCOG_OGC 0.5 Bar
  OWC_D 2470.0 m
  PCOW_OWC 0.5 Bar
/

RTEMP

Constant temperature value to assign to the reservoir. Note that currently only degrees Celsius are accepted, for any other temperature unit the software returns an error. RTEMP is an alternative to TEMPERATURE_TABLE, either one or the other can be supplied.

TEMPERATURE_TABLE

Define the temperature versus depth for all grid blocks associated with the hydrostatic equilibration. See example:

TEMPERATURE_TABLE
  D_UNITS m
  TEMPERATURE_UNITS C
  RTEMPVD
    2300.0 126.0
    2400.0 128.0
  /
END

Units must be defined using D_UNITS and TEMPERATURE_UNITS. The data depth vs temperature are entered within the RTEMPVD block. The entries must be ordered for monotonically growing depths, and at least two entries are required for the internal interpolation to work.

If the TEMPERATURE_TABLE is defined RTEMP cannot be supplied at the same time in the same flow condition, otherwise the code returns an error, as the temperature is ambiguously defined. To remove the RTEMPVD table, the entire TEMPERATURE_TABLE block must be removed. If only the RTEMPVD table is removed leaving the TEMPERATURE_TABLE block, the code returns an error as a RTEMPVD table is expected.

NUM_EQUIL_NODES

Defines the number of nodes used in the internal hydrostatic equilibration calculation. Below is an example:

FLOW_CONDITION equilibration
  TYPE
   PRESSURE HYDROSTATIC
  /
  PRESSURE 327.0 Bar
  RTEMP 50 C
  DATUM_D 2430.0 m
  OGC_D     2430.0 m
  PCOG_OGC 0.5 Bar
  OWC_D 2470.0 m
  PCOW_OWC 0.5 Bar
  NUM_EQUIL_NODES 2001
/

The reservoir vertical extension is divided into (NUM_EQUIL_NODES – 1) equispaced depth intervals, and the one-dimensional grid obtained is used to carry out the hydrostatic equilibration calculation. If not entered, NUM_EQUIL_NODES defaults to 501. In some cases it might be beneficial to test higher resolutions than the default one to get a more accurate initial state.

Saturation Initialisation

Away from the transition zones, in the gas-saturated region, the gas maximum saturation is computed as \(S_{g,max}=1–S_{wco}\), where \(S_{wco}\) is the connate water, which is the smallest saturation value entered in the SWFN table, or explicitly entered when using analytical water saturation functions.

Away from the transition zones, in the water-saturated region, the maximum water saturation is computed as \(S_{w,max}=1–S_{gco}\), where \(S_{gco}\) is gas connate saturation, which is the smallest saturation value in the SGFN table or explicitly entered when using analytical gas saturation functions. Note that usually \(S_{gco}=0\).

The minimum and maximum values entered in SWFN and SGFN table or in the analytical saturation functions should be consistent, i.e \(S_{g,max} =1 – S_{w,min}\) and \(S_{w,max} =1 – S_{g,min}\). If these maximum values are not respected, they are reset automatically by software.

In the oil region, the oil saturation is computed as \(S_o=1–S_w–S_g\). In case of overlap the oil-water and oil-gas transition zones, a negative oil saturation may result calculation. In this region the software assumes no presence of oil, i.e. \(S_o=0\) and \(S_w=1−S_g\), and solves a non-linear pressure equilibration in Sw using the water and gas capillary pressure functions:

\[P_{cow}(S_w)+P_{cog}(S_g=1−S_w)=P_g–P_w.\]

The overall equilibration calculation assumes that the oil is lighter than the water, and the gas is lighter than the oil. If the user input do not reflects such assumption, an error will be thrown.