Part 1 established the characterised fluid — 12 components with Tc, Pc, ω, BIPs and volume shifts computed from MW and SG using Kesler-Lee correlations, all verified against commercial software exactly.
This part builds the PR3 EOS engine and computes the untuned bubble point pressure. The implementation follows Peneloux (1982) and Peng-Robinson (1976) exactly. All results are verified against the commercial software untuned output of 200.84 bar at 107°C.
Three implementation details are not explicitly documented in the software manual or standard references. Each is identified and verified here.
The Peng-Robinson EOS describes fluid pressure as a function of molar volume:
Two parameters per component at reservoir temperature T = 380.15 K:
Attractive parameter ai:
Covolume bi:
with ΩA = 0.45724, ΩB = 0.077796, R = 83.14472 cm³·bar/(mol·K).
PR3 kappa — the third parameter:
Standard PR2 uses a quadratic κ that becomes unreliable for heavy components. PR3 switches to a cubic formula at ω > 0.491:
For this fluid the cubic formula activates for C16+ (ω = 1.374). This is the primary reason PR3 is used for heavy oils — PR2 underestimates attraction forces for large acentric factors.
| Component | Tr | κ | α | ai (cm⁶·bar/mol²) | bi (cm³/mol) |
|---|---|---|---|---|---|
| N₂ | 3.012 | 0.436 | 0.462 | 6.84×10⁵ | 24.05 |
| CO₂ | 1.248 | 0.708 | 0.841 | 3.34×10⁶ | 26.68 |
| C1 | 1.994 | 0.395 | 0.701 | 1.75×10⁶ | 26.78 |
| C2 | 1.245 | 0.524 | 0.882 | 5.33×10⁶ | 40.45 |
| C3 | 1.028 | 0.603 | 0.983 | 1.00×10⁷ | 56.34 |
| iC4 | 0.932 | 0.650 | 1.046 | 1.51×10⁷ | 72.37 |
| nC4 | 0.894 | 0.674 | 1.075 | 1.62×10⁷ | 72.44 |
| iC5 | 0.826 | 0.711 | 1.134 | 2.24×10⁷ | 87.87 |
| nC5 | 0.810 | 0.745 | 1.155 | 2.39×10⁷ | 90.13 |
| C6 | 0.749 | 0.812 | 1.230 | 3.33×10⁷ | 109.05 |
| C7-C15 | 0.593 | 1.061 | 1.547 | 8.78×10⁷ | 181.44 |
| C16+ | 0.383 | 2.153 | 3.316 | 1.49×10⁹ | 925.84 |
Van der Waals mixing rules with BIPs from Part 1:
The Peneloux volume shifts from Part 1 enter as:
At P = 213 bar, T = 380.15 K, the dimensionless mixture parameters are:
The PR cubic in Z:
Per the Peneloux (1982) formulation, the cubic is solved with Braw, the unshifted covolume parameter. The volume shift is not incorporated into the cubic coefficients.
At P = 213 bar, Braw = 1.402. This gives a single real root Zraw = 1.624 — physically correct for a compressed liquid above its bubble point. As pressure decreases toward the bubble point, Braw drops and two roots appear.
The distinction between Braw and Beff matters practically: using Beff in the cubic gives incorrect root locations and therefore incorrect fugacity coefficients.
The commercial software does not report Zraw. It reports the Peneloux-corrected quantities:
This is verified by back-calculation from the reported Z = 1.0793 at bubble point:
Which is exactly the root of the PR cubic at P = 200.8 bar with Braw. The density computed from Vreported matches to 0.3%.
| Quantity | Raw (unshifted) | Shifted | Commercial software |
|---|---|---|---|
| Zliquid | 1.534 | 1.079 | 1.0793 |
| Vliquid (cm³/mol) | 241.4 | 169.8 | 169.800 |
| Density (kg/m³) | 516 | 735 | 732.7 |
The PR fugacity coefficient for component i:
where dai = 2·Σⱼ zⱼaᵢⱼ.
No volume shift term appears. Z and B here are Zraw and Braw respectively. Peneloux (1982) proved that the shift cancels exactly in the fugacity ratio φᵢᴸ/φᵢᵛ — it therefore has no effect on K-values or bubble point pressure. This is why the untuned bubble point can be reproduced exactly without knowing the volume shifts.
| Component | ln(φᵢ) | φᵢ | Volatility |
|---|---|---|---|
| N₂ | 1.247 | 3.480 | High |
| C1 | 0.556 | 1.743 | High — primary driver of bubble point |
| CO₂ | −0.070 | 0.932 | Moderate |
| C3 | −1.284 | 0.277 | Low |
| C6 | −3.402 | 0.033 | Very low |
| C7-C15 | −6.298 | 0.002 | Negligible |
| C16+ | −23.776 | ~0 | Anchors liquid phase |
At bubble point the liquid composition equals the feed (xi = zi) and the incipient vapour satisfies:
The solution procedure uses Wilson K-values as initial estimates, successive substitution to convergence, and Brent's method on the outer pressure loop.
The residual scan confirms a sign change between 200 and 210 bar:
| P (bar) | Residual |
|---|---|
| 150 | +0.149 |
| 170 | +0.078 |
| 190 | +0.024 |
| 200 | +0.002 |
| 210 | −0.018 |
| 230 | −0.051 |
Brent's method converges to:
| Component | zi | yi | Ki (Python) | Ki (Reference) |
|---|---|---|---|---|
| N₂ | 0.00410 | 0.01186 | 2.892 | 2.8917 |
| CO₂ | 0.03799 | 0.05061 | 1.332 | 1.3322 |
| C1 | 0.39916 | 0.79733 | 1.998 | 1.9975 |
| C2 | 0.06072 | 0.06293 | 1.036 | 1.0364 |
| C3 | 0.05449 | 0.03830 | 0.703 | 0.7029 |
| C6 | 0.02342 | 0.00496 | 0.212 | 0.2116 |
| C7-C15 | 0.19774 | 0.00829 | 0.042 | 0.0419 |
| C16+ | 0.15903 | ~0 | ~0 | 4.49×10⁻⁶ |
All K-values match the commercial software output to 4 significant figures.
Three details not explicitly stated in the software manual, all consistent with Peneloux (1982):
| Detail | Standard assumption | Correct implementation |
|---|---|---|
| B in cubic solver | Use Beff (shifted) | Use Braw — per Peneloux (1982) |
| Z and V reported | Raw PR values | Shifted: subtract cmix·P/RT |
| Volume shift in fugacity | Applied | Not applied — cancels in φᴸ/φᵛ |
The untuned EOS gives 200.84 bar. The lab measurement is 213.1 bar — a gap of 12.3 bar (6.1%). This is expected for a default characterisation with no regression. In Part 3 we close this gap by adjusting the critical properties of the pseudocomponents to match the lab bubble point.
Full Jupyter notebooks: github.com/eskoantg/PVTi_cross_check
Volve dataset: equinor.com/energy/volve-data-sharing
See Part 1 for data sources and disclaimer.
| Symbol | Description | Units |
|---|---|---|
| P | Pressure | bar |
| T | Temperature | K |
| R | Universal gas constant (83.14472) | cm³·bar/(mol·K) |
| V | Molar volume | cm³/mol |
| Z | Compressibility factor | — |
| ai | Pure-component attractive parameter | cm⁶·bar/mol² |
| bi | Pure-component covolume | cm³/mol |
| ci | Peneloux volume shift | cm³/mol |
| si | Dimensionless shift parameter | — |
| αi | Temperature correction function | — |
| κi | PR kappa function | — |
| ω | Acentric factor | — |
| Tr | Reduced temperature = T/Tc | — |
| Tc | Critical temperature | K |
| Pc | Critical pressure | bar |
| ΩA | EOS constant (0.45724) | — |
| ΩB | EOS constant (0.077796) | — |
| amix | Mixture attractive parameter | cm⁶·bar/mol² |
| bmix | Mixture covolume | cm³/mol |
| cmix | Mixture volume shift | cm³/mol |
| A | Dimensionless mixture attractive parameter | — |
| Braw | Dimensionless unshifted covolume | — |
| Beff | Dimensionless shifted covolume | — |
| kij | Binary interaction parameter | — |
| dai | Partial derivative of amix w.r.t. composition | cm⁶·bar/mol² |
| zi | Overall mole fraction | — |
| xi | Liquid mole fraction | — |
| yi | Vapour mole fraction | — |
| Ki | K-value (equilibrium ratio) | — |
| φi | Fugacity coefficient | — |