PVT Table Module
The data required for generating the PVT table is already provided in the fluid definition module, when a well is created:
- Initial reservoir fluid composition (generated with any of the available methods)
- Initial reservoir pressure
- Reservoir temperature
- Surface process associated to the well (used to generate the black oil table)
PVT Table Generation
whitson+ provides black oil tables consistently extrapolated to a critical pressure (if possible). More details on the procedure used for generating black oil tables can be found here.
Surface Conditions for Volume Calculations
Surface gas and oil volumes are reported at standard conditions: 1 atmosphere (14.7 psia) and 15.56 C (60 F)
Fluid Properties at Initial Reservoir Conditions
The table at the top of the black oil table modules provides the fluid properties at initial reservoir pressure and temperature.
Reservoir Type
The reservoir can be one of three types:
- Initially, undersaturated oil reservoir (\(S_\mathrm{o} = 100 \%\) initially)
- Initially, undersaturated gas reservoir (\(S_\mathrm{g} = 100 \%\) initially)
- Initially, saturated two-phase reservoir (\(S_\mathrm{g} > 0\%\) and \(S_\mathrm{o} > 0 \%\) initially)
Total FVF
Total FVF is defined as:
\(B_\mathrm{t} = \frac{S_\mathrm{o}+S_\mathrm{g}}{\frac{S_\mathrm{o}}{B_\mathrm{o}}+\frac{S_\mathrm{g}}{B_\mathrm{gd}/r_\mathrm{s}}}\)
which for an undersaturated oil reservoir (\(S_\mathrm{g} = 0 \%\)) will simplify to \(B_\mathrm{t} = B_\mathrm{o}\) and for an undersaturated gas reservoir (\(S_\mathrm{o} = 0 \%\)) will simplify to \(B_\mathrm{t} = \frac{B_\mathrm{gd}}{r_\mathrm{s}}\). For a two-phase saturated case, the total FVF will represent a saturation weighted oil FVF.
Total Gas Formation Volume Factor
\(B_\mathrm{t} = \frac{S_\mathrm{o}+S_\mathrm{g}}{\frac{S_\mathrm{g}}{B_\mathrm{gd}}+\frac{S_\mathrm{o}}{B_\mathrm{o}/R_\mathrm{s}}}\)
which for an undersaturated oil reservoir (\(S_g=0%\)) will simplify to \(B_t = B_o/R_s\) and for an undersaturated gas reservoir (\(S_o=0%\)) will simplify to Bgd. For a two-phase saturated case, the total gas FVF will represent a saturation weighted gas FVF.
Total GOR
Total GOR is defined as:
\(R_\mathrm{t} = \frac{\frac{S_g}{B_{gd}}+\frac{S_o}{B_o/R_s}}{\frac{S_g}{B_{gd}/r_{s}}+ \frac{S_{o}}{B_{o}}}\)
which for an undersaturated oil reservoir (\(S_\mathrm{g} = 0 \%\)) will simplify to \(R_\mathrm{t} = R_\mathrm{s}\) and for an undersaturated gas reservoir (\(S_\mathrm{o} = 0 \%\)) will simplify to \(R_\mathrm{t} = \frac{1}{r_\mathrm{s}}\). For a two-phase saturated case, the total GOR will represent a saturation weighted GOR.
Info
Irrespective of reservoir type, total FVF (\(B_\mathrm{t}\)) and total GOR (\(R_\mathrm{t}\)) can be used directly to calculate original oil in place: \(N = \frac{HCPV}{FVF_\mathrm{tot}}\) and original gas in place: \(G = N \cdot R_\mathrm{t}\)
Saturation Pressures
The saturation pressure (bubblepoint or dewpoint) is always the saturation pressure of the fluid definition composition (\(z_{\mathrm{bo}i}\)).
Note
In the case of a saturated 2-phase reservoir, the initial reservoir pressure will be lower than the saturation pressure of \(z_{\mathrm{bo}i}\).
Reservoir Classification
- Black Oil: \(R_\mathrm{s}\) <= 1000 scf/STB
- Volatile Oil: \(R_\mathrm{s}\) > 1000 scf/STB and saturation pressure type is bubblepoint
- Gas Condensate: saturation pressure is dewpoint
- Wet Gas: no dewpoint at reservoir conditions, but produce liquids at surface
- Dry Gas: no dewpoint at reservoir conditions and no liquid production at surface
- Two-phase: \(S_\mathrm{g} > 0\%\) and \(S_\mathrm{o} > 0 \%\) initially
Reservoir Density
Reservoir densities are calculated based on black-oil properties as
- Reservoir oil density: \(\rho_\mathrm{o} = \frac{62.4 \gamma_o + 0.00136\gamma_g R_s}{B_o}\)
- Reservoir gas density: \(\rho_\mathrm{g} = \frac{62.4 \gamma_o + 0.00136\gamma_g (1/r_s)}{B_{gd}/r_s}\)
with \(\rho_\mathrm{o}\) in lbm/ft³, \(B_o\) and \(B_{gd}/r_s\) in RB/STB and \(R_s\) and \(1/r_s\) in scf/STB.
Note
The reservoir densities are calculated with the black oil table properties (not from EOS model).
Modified Black Oil PVT Properties
The Modified Black Oil PVT properties (\(B_o\), \(R_s\), \(\mu_o\), \(B_gd\), \(r_s\), \(\mu_g\)) correspond to the fluid properties for the well at initial reservoir conditions and are extracted from the black oil table for \(p = p_\mathrm{res, init}\).
- \(B_o\): Oil Formation Volume Factor
- \(R_s\): Solution GOR
- \(\mu_o\): Oil Viscosity
- \(B_{gd}\): Dry gas formation volume factor
- \(r_s\): Solution CGR
- \(\mu_g\): Gas Viscosity
The black oil tables are "modified black oil tables", which means that the solution CGR (\(r_s\)) is always included in the table. The tables are also extrapolated to a critical point (when possible, see here for further details.). Read more about black oil PVT here.
Export Formats
whitson+ supports several export formats of black oil tables:
- Eclipse
- IMEX
- ResFrac
- IHS
- Kappa
- Excel
Note
If there is an export format you are missing, send an e-mail to support@whitson.com and we'll implement it for you.
Eclipse Export Format
The ECLIPSE BO table created by whitson+ is a modified BO table
(it uses PVTG
keyword to provide \(r_\mathrm{s}\) values).
Two sections need to be modified:
TABDIMS
Keyword
Modify the TABDIMS
section in RUNSPEC
using the values for NPPVT
and NRPVT
provided in the exported BO table.
For example:
-- !-------------!
-- ! !
-- ! WARNING !
-- ! !
-- !-------------!
-- TABDIMS should be modified in the RUNSPEC section of your file, to increase the maximum entries in the BO table.
-- Replace TABDIMS in your file by numbers larger or equal (>=) to the ones provided below.
-- XXXX should be kept as currently specified in your TABDIMS keyword.
-- TABDIMS
-- XXXX XXXX XXXX 117 XXXX 87 /
-- NTSFUN NTPVT NSSFUN NPPVT NTFIP NRPVT
- Water Properties
Modify the water properties in the BO table directly.
-- PVTW Section
-- Default water properties are provided here.
-- These should be changed to appropriate values for your fluid system.
-- Pref (psia) Bw (rb/STB) cw (1/psia) Visco_w (cp) water viscosibility (1/psia)
PVTW
14.696 1 3.0E-6 0.5 0 /
Note
The ECLIPSE simulation model will run even if you don't change these values. Note that these values are default values and may not represent accurately the system being modeled.
Video here
ResFrac Export Format
The ResFrac BO table created by whitson+ is a modified BO table.
(it uses the variable name usemodifiedblackoilmodel
activate this).
There are two ways of importing a BOT in ResFrac
- From frontend: use the "import black oil table from whitson+" option in the Fluid Model Options Tab
- In simulation deck: copy paste text in the BOT file directly into the text file deck
Video here
IMEX Export Format
The IMEX BO table created by whitson+ is a modified BO table (it uses the MODEL VOLATILE_OIL as it is the most flexible option).
In the INITIAL (fluid initialization part of the IMEX file) it’s important to define both PB and PDEW with the associated initial saturation pressure. CON refers to constant compositions (while there are other alternatives that are described well in the IMEX manual).
*INITIAL
********************************************************************************
** Initial Conditions Section in CMG IMEX **
********************************************************************************
*VERTICAL *BLOCK_CENTER *WATER_OIL_GAS ** Use vertical equilibrium calculation.
*PB *CON 3000 ** bubblepoint pressure
*PDEW *CON 3000 ** dewpoint pressure
*REFDEPTH 8400. ** Give a reference depth and
*REFPRES 4800. ** associated pressure.
*DWOC 20000. ** Depth to water-oil contact
*DGOC 20000. ** Depth to gas-oil conttact
IHS Harmony Export Format
- We provide an Excel file formatted for a frictionless import into IHS.
- Follow the step by step guide below on how to import this table into Harmony.
- For a mass import of black oil tables (30-40 wells) we recommend to set up a database connection and an associated scheduler.
Kappa Export Format
Kappa can import Eclipse BO tables. Choose the "import from ECLIPSE" option in Kappa and import the BO table.
Saphir (Pressure Transient Analysis) & Topaze (Rate Transient Analysis)
Step-by-Step: Import black oil table into Topaze(RTA) and Saphir (PTA)
To input the BO tables from whitson+ into Topaze and Saphir, follow these steps:
- Choose the multiphase option
- Pick your reference fluid, either gas or oil
- Check the option to "Define advanced PVT"
- Click on the "Lab Flask" icon to input the black oil table
- From the import options, pick Eclipse and select the file exported from whitson+
- Pick "set the value of GOR / CGR in order to select the closest corresponding under-saturated set of data"
- Input the GOR or CGR (for oil or gas respectively) that you see in the fluid initialization section
- Press OK to close the PVT input window, and then next
- The analytical parameters (formation volume factor and viscosity) are taken from the BO table, and should not be changed. As a QC, you can check that these values are the same as what you get in the fluid initialization section. Go to the next screen.
- Under numerical parameters > Non-linear diffusion > Common functionalities > select "Use real PVT" to ensure that the input black oil table is used in your numerical model (non-linear)
Rubis (Multi Purpose Full Field Numerical Model)
Step-by-Step: Import black oil table into Rubis
To input the BO tables from whitson+ into Rubis, follow these steps:
- Click on the "Lab Flask" icon to input the black oil table
- From the import options, pick Eclipse and select the file exported from whitson+
- When prompted that the "Loaded file contains MBO model" Pick the PVT model that corresponds to the fluid you are importing, either "condensate gas" or "volatile oil". Even if your fluid is not a "volatile oil" or a "condensate gas", you should choose one of these options to ensure that Kappa software takes in the complete modified black oil tables for your analysis
- Pick "set the value of GOR / CGR in order to select the closest corresponding under-saturated set of data"
- Input the GOR or CGR (for oil or gas respectively) that you see in the fluid initialization section
- Under "Reference Parameters" input your initial reservoir pressure and reservoir temperature, the GOR should be the same as you input in step 5
- Press OK to close the PVT input window, and then "Finish"
- Now the PVT model is input and you can proceed to initialize your reservoir model, under
"Properties"> "Initial State".
- Pick "variable type" = composition
- Input the GOR of your fluid, from the fluid initialization section
SENSOR Export Format
The SENSOR BO table created by whitson+ is a modified BO table.
It uses the variable name PVTBO
and provides the saturated and the undersaturated table.
POWERS Export Format
The POWERS BO table by whitson+ is a modified BO table extrapolated to the critical point if found. It provides the saturated table for both oil and gas. For each saturated pressure in the oil table, the compressibility and viscosibility is calculated. This is used internally in GigaPOWERS and TeraPOWERS to calculate the PVT properties in the undersaturated region.
Compressibility (\(c_{o}\)) is calculated for each saturated point using the undersaturated data predicted by EOS, using the following equation
\(c_{o} = -\frac{log(\frac{B_{sat}}{B_{ref}})}{p_{sat}-p_{ref}}\)
- \(p_{sat}\): saturation pressure
- \(p_{ref}\): pressure closest to reservoir pressure if pres > psat, else first undersaturated pressure
- \(B_{sat}\): Bo at saturation pressure
- \(B_{ref}\): Bo closest to reservoir pressure if pres > psat, else first undersaturated Bo
Viscosibility (\(\mu_{o}\)) is calculated for each saturated point using the undersaturated data predicted by EOS, using the following equation
\(\mu_{o} = -\frac{log(\frac{\mu_{sat}}{\mu_{ref}})}{p_{sat}-p_{ref}}\)
- \(p_{sat}\): saturation pressure
- \(p_{ref}\): pressure closest to reservoir pressure if pres > psat, else first undersaturated pressure
- \(\mu_{sat}\): Viscosity at saturation pressure
- \(\mu_{ref}\): Viscosity closest to reservoir pressure if pres > psat, else first undersaturated viscosity
Excel
The Excel export format contains:
- All saturated data (original sample depletion and extrapolation)
- All under-saturated data
- Fluid initialization data (BO properties at initial reservoir pressure)
- Standards BO plots (BO properties for the initial in-situ reservoir fluid)
- Advanced BO plots (those plots are hidden by default in the exported Excel file)
Note
Advanced quality check plots are by default hidden in the excel file, but can be accessed by clicking "Unhide" and picking the relevant plots.
PVT / Fluid Map Workflow
To calculate and export the main PVT properties using whitson+ EOS for all the wells at once:
-
Download the mass upload file: Go to Wells, Mass upload, whitson, and click "Download excel template".
-
Use the mass upload file with: \(T_{res}\), \(p_{Ri}\) and \(GOR_{initial}\) for each well.
-
Upload the file: Go to Wells, Mass upload, whitson, and click "Upload excel file(.xlsx)".
-
Bulk Run: Go to Wells, select the wells, click Run, click "PVT", then Yes.
-
Bulk Export: Go to Wells, select the wells, click Export, click "Well Information Data", then Yes.
-
An excel file will be generated with all the PVT properties for the selected wells.
PVT Table Generation: Advanced Topics
Introduction
All PVT tables provided by whitson+ are modified (i.e. including solution CGR \(r_s\) / \(R_v\)), extrapolated BO tables. These tables consist of three parts:
- The depletion of the initial in-situ reservoir fluid
- The extrapolation (eventually to a critical point)
- Average surface densities for oil and gas
Note
A black oil table is a two-component PVT model (oil and gas). Three properties are defined for each component - Composition (\(R_s\) | \(r_s\)) - surface process dependent - Formation Volume Factor (\(B_o\) | \(B_{gd}\)) - surface process dependent - Viscosity (\(\mu_o\) | \(\mu_g\)) - surface process independent The following are assumed to be constant in a black oil table: - Surface oil and gas densities - Surface process (#stages, Tsep, psep) - Reservoir temperature
Required Input
The required input data for generating a modified black oil table is:
- the composition of the initial in-situ reservoir fluid (\(z_{\mathrm{bo}i}\))
- the reservoir temperature (\(T_\mathrm{res}\))
- a surface process (\(\underline{P}\)) (multi-stage process)
- an Equation of State (EOS) model tuned to the relevant PVT data
Procedure
Depleted Part of the Table
This part of the table includes mixtures with a saturation pressure ranging from standard pressure to the original saturation pressure of \(z_{\mathrm{bo}i}\).
A Constant Composition Experiment (CCE) is simulated using \(z_{\mathrm{bo}i}\). At each stage of the CCE, the equilibrium phases are processed through the surface process \(\underline{P}\) and the modified black-oil properties (\(B_o\), \(R_s\), \(\mu_o\), \(B_g\), \(r_s\), \(\mu_g\)) are calculated.
Extrapolated Part of the Table
This part of the table includes mixtures with a saturation pressure greater than the original saturation pressure of \(z_{\mathrm{bo}i}\). Those mixtures are obtained by extrapolating the initial in-situ composition \(z_{\mathrm{bo}i}\).
Search a Critical Mixture
Definition
A mixture is considered critical if all its K-values (\(K_i = \frac{y_i}{x_i}\) where \(y_i\) and \(x_i\) are respectively the gas and oil molar fraction of component \(i\)) are equal to 1 at its saturation pressure and reservoir temperature.
The procedure to find a critical mixture is as follows:
- Flash the initial in-situ reservoir composition (\(z_{\mathrm{bo}i}\)) at its original saturation pressure. The obtained equilibrium phase compositions are called (\(x_{\mathrm{bo}i}\)) and (\(y_{\mathrm{bo}i}\)).
- Re-combine the equilibrium phases using a ratio \(F_V\):
-
Calculate the saturation pressure of the resulting composition \(z_{\mathrm{c}i}\) and its K-values \(K_i\).
-
Calculate a RMS error (\(\delta_\mathrm{RMS}\)) quantifying the deviation from 1 of the K-values: where \(\mathcal{C}\) is the set of components (e.g. \(\mathcal{C} = \left[ \mathrm{N_2}, \mathrm{CO_2}, \mathrm{C_1}, ... \mathrm{C_{36+}}\right]\))
Minimize \(\delta_\mathrm{RMS}\) by changing \(F_V\).
Two cases can occur:
-
The final mixture \(z_{\mathrm{c}i}\) verifies the critical criterion (for all \(i \in \mathcal{C}, K_i = 1\)). In that case, \(z_{\mathrm{c}i}\) is a critical mixture.
-
The final mixture \(z_{\mathrm{c}i}\) does not verify the critical criterion. This usually indicates that the saturation calculation blows up at some point, see this for more details.
Swell Test Check
Finding a critical mixture by extrapolating the original in-situ composition is not sufficient to ensure a consistent extrapolated BO table. We run a swell test on the initial in-situ composition to check if the critical point is admissible. The swell test uses the initial in-situ composition (\(z_{\mathrm{bo}i}\)) as starting point and injects its incipient phase.
Three cases can occur.
Definition: correct/wrong side of the swell test
In the following section, we refer to the correct and wrong side of the swell test. Typically, in a swell test, the mixture saturation pressure increases until a maximum value (obtained for a fraction of incipient fluid injected called \(F_\mathrm{max}\)). The correct side of the swell test includes all fractions \(F\) verifying: The wrong side of the swell test includes fractions \(F\) verifying:
Case 1
A critical mixture was found using the method presented above and it is located on the "correct" side of the swell test, see the figure below.
In that case, whitson+ can provide an extrapolated BO table up to the critical mixture (\(z_{\mathrm{c}i}\)). Such a BO table offers a smooth transition from oil to gas mixtures, see picture below.
Case 2
A critical mixture was found using the method but it is located on the "wrong" side of the swell test, see the figure below.
In that case, the BO table will be extrapolated up to the saturation pressure of the found critical mixture (\(z_{\mathrm{c}i}\)), but by staying on the correct side of the swell test. This is not a critical mixture, so there is a gap between oil and gas properties at the highest pressure in the table, see picture below.
Case 3
The critical mixture search method failed to find a critical mixture and the swell test blows up at some point, see the figure below.
Note
Laboratory examples of swell tests that "blow up" / "do not close" are given in Chapter 8 of the SPE Phase Behavior Monograph by Whitson & Brule [@phasebehavior]
In that case, whitson+ will provide a BO table extrapolated up to the highest finite saturation pressure found on the correct side of the swell test. This saturation pressure is obtained for a mixture that we call \(z_{\mathrm{c}i}\). Note that \(z_{\mathrm{c}i}\) is not a critical mixture and therefore, there is a gap between oil and gas properties at that pressure, see this figure.
Depletion Experiment for the Extrapolated Part of the Table
A CCE (Constant Composition Expansion) experiment of \(z_{\mathrm{c}i}\) is simulated from its saturation pressure until the saturation pressure of the initial in-situ reservoir mixture (\(z_{\mathrm{bo}i}\)). At each stage of the CCE, the equilibrium phases are processed through the surface process \(\underline{P}\) and the modified black-oil properties (\(B_o\), \(R_s\), \(\mu_o\), \(B_g\), \(r_s\), \(\mu_g\)) are calculated.
Surface Densities
In the black-oil model, surface oil and gas densities (\(\rho_\mathrm{\bar{o}}\) and \(\rho_\mathrm{\bar{g}}\)) are assumed to be constant.
Oil and gas densities at reservoir conditions (\(p\) and \(T_\mathrm{res}\)) can be calculated from: and
where \(c_1\), \(c_2\), \(c_3\) and \(c_4\) are coefficients depending on the unit systems used.
whitson+ finds the optimal surface oil and gas densities (\(\rho_\mathrm{\bar{o}}\) and \(\rho_\mathrm{\bar{g}}\)) that minimize:
where:
-
\(\mathcal{P}\) is the set of pressure used in the depletion experiment (e.g. \(\mathcal{P} = \{5000, 4800, 4600, ..., 14.7 \}\)
-
\(\rho_\mathrm{o}^\mathrm{eos}(p)\) is the EOS-predicted oil density at (\(p\), \(T_\mathrm{res}\))
-
\(\rho_\mathrm{o}^\mathrm{calc}(p)\) is the calculated oil density at (\(p\), \(T_\mathrm{res}\)) using Eq. (\ref{eq:oil-den})
-
\(\rho_\mathrm{g}^\mathrm{eos}(p)\) is the EOS-predicted gas density at (\(p\), \(T_\mathrm{res}\))
-
\(\rho_\mathrm{g}^\mathrm{calc}(p)\) is the calculated gas density at (\(p\), \(T_\mathrm{res}\)) using Eq. (\ref{eq:gas-den})
-
\(W_\mathrm{o}\) and \(W_\mathrm{g}\) are weight factors depending on the reservoir type.
Reservoir Type | Value of \(W_\mathrm{o}\) | Value of \(W_\mathrm{g}\) |
---|---|---|
Under-saturated oil reservoir | 10 | 1 |
Under-saturated gas reservoir | 1 | 10 |
Saturated reservoir | 1 | 1 |
Non-Monotonic Behaviors
A non-monotonic behavior of \(R_\mathrm{s}\) may occur for lean reservoir fluids (e.g. gas condensates), as seen in the figure below. This is physically explained by the fact that the first droplets of condensate that drop out from the reservoir gas are very heavy and get lighter when pressure decrease, thus increasing \(R_\mathrm{s}\).
However, even though this behavior is physically correct, many reservoir simulators do not accept non-monotonic \(R_\mathrm{s}\) input in the BO tables. whitson+ checks for non-monotonic behaviors when generating BO tables. If such behavior is found, then whitson+ applies a modified procedure for both the depleted part of the table and the extrapolated part.
Depleted Part of the Table (non-monotonic Rs)
whitson+ will run two separate CCE simulations (one for oil, one for gas) with different compositions:
-
The BO properties of the gas phase are still obtained by simulating a CCE of \(z_{\mathrm{bo}i}\).
-
The BO properties of the oil phase are obtained by simulating a CCE of the incipient oil phase of \(z_{\mathrm{bo}i}\) (this mixture was previously called \(x_{\mathrm{bo}i}\)).
Extrapolated Part of the Table (non-monotonic Rs)
Since the depleted part of the BO table uses two fluids, (\(z_{\mathrm{bo}i}\) for the gas phase and \(x_{\mathrm{bo}i}\) for the oil phase, whitson+ will perform two separate extrapolations to avoid non-smooth behavior at the junction of the two parts of the BO table:
-
The procedure described here is applied to the gas phase.
-
For the oil phase, the extrapolation is performed by staying on the "wrong" side of the swell test. This ensures a smooth transition of the oil BO properties.
Warning
Non-monotonic behavior always leads to BO tables that are not entirely closed (meaning that there is a gap between oil and gas properties at the highest pressure), see this figure.
References
[4] [Whitson, C. H., & Brulé,M. R., SPE Phase Behavior Monograph, 2000.](https://store.spe.org/Phase-Behavior-P46.aspx