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 twophase 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 twophase 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 twophase 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 twophase 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 2phase 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
 Twophase: \(S_\mathrm{g} > 0\%\) and \(S_\mathrm{o} > 0 \%\) initially
Reservoir Density
Reservoir densities are calculated based on blackoil 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 email 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.0E6 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 wateroil contact
*DGOC 20000. ** Depth to gasoil 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 (3040 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)
StepbyStep: 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 undersaturated 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 > Nonlinear diffusion > Common functionalities > select "Use real PVT" to ensure that the input black oil table is used in your numerical model (nonlinear)
Rubis (Multi Purpose Full Field Numerical Model)
StepbyStep: 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 undersaturated 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 undersaturated data
 Fluid initialization data (BO properties at initial reservoir pressure)
 Standards BO plots (BO properties for the initial insitu 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 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 insitu reservoir fluid
 The extrapolation (eventually to a critical point)
 Average surface densities for oil and gas
Note
A black oil table is a twocomponent 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 insitu reservoir fluid (\(z_{\mathrm{bo}i}\))
 the reservoir temperature (\(T_\mathrm{res}\))
 a surface process (\(\underline{P}\)) (multistage 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 blackoil 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 insitu composition \(z_{\mathrm{bo}i}\).
Search a Critical Mixture
Definition
A mixture is considered critical if all its Kvalues (\(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 insitu 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}\)).
 Recombine the equilibrium phases using a ratio \(F_V\):

Calculate the saturation pressure of the resulting composition \(z_{\mathrm{c}i}\) and its Kvalues \(K_i\).

Calculate a RMS error (\(\delta_\mathrm{RMS}\)) quantifying the deviation from 1 of the Kvalues: 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 insitu composition is not sufficient to ensure a consistent extrapolated BO table. We run a swell test on the initial insitu composition to check if the critical point is admissible. The swell test uses the initial insitu 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 insitu 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 blackoil properties (\(B_o\), \(R_s\), \(\mu_o\), \(B_g\), \(r_s\), \(\mu_g\)) are calculated.
Surface Densities
In the blackoil 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 EOSpredicted 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:oilden})

\(\rho_\mathrm{g}^\mathrm{eos}(p)\) is the EOSpredicted 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:gasden})

\(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}\) 

Undersaturated oil reservoir  10  1 
Undersaturated gas reservoir  1  10 
Saturated reservoir  1  1 
NonMonotonic Behaviors
A nonmonotonic 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 nonmonotonic \(R_\mathrm{s}\) input in the BO tables. whitson^{+} checks for nonmonotonic 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 (nonmonotonic 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 (nonmonotonic 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 nonsmooth 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
Nonmonotonic 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.
\bibliography
References
[4] [Whitson, C. H., & Brulé,M. R., SPE Phase Behavior Monograph, 2000.](https://store.spe.org/PhaseBehaviorP46.aspx