Improving the Single Component Peng-Robinson Z-Factor Approach for Inerts
Outdated 4-Component EOS model. Note: Gas MW, Tc and Pc will be a function of hydrocarbon specific gravity

Improving the Single Component Peng-Robinson Z-Factor Approach for Inerts

EDITED 20-05-2024 - Significant improvements to fit quality with the inclusion of temperature dependant BIP's has been made since the article was first written below. To find the latest work - including plots and maps showing residuals - can be found on the GitHub site

--- Original article below for posterity ---


Following feedback from Curtis Whitson and Simon Tortike on my single component Peng Robinson Z-Factor calculation method, I explored the potential of extending the approach to explicitly incorporate inerts. This was driven by two main considerations: First, the accuracy of my original single-component model was inherently limited by the choice of critical pressure and temperature correlation. Second, as we increasingly encounter scenarios such as CCUS with high inert concentrations, a simplified yet accurate approach is needed to handle up to 100% inerts — beyond the applicable range for approaches such as Wichert & Aziz.

Methodology

Step 1: I gathered 68,668 density data points from the NIST database for pure vapor and supercritical states of CO2, H2S, and N2, across temperatures of 50-300°F and pressures of 14.7-15,000 psia. These densities were then converted into Z-Factors.

Step 2: I applied regression analysis to these data points using a Peng-Robinson equation of state (EOS), modifying the Volume Shift for CO2, N2, and H2S, and adjusting the OmegaA and OmegaB parameters for CO2. CO2 was the most challenging to model accurately, yet the approach achieved better than 1% average error and maintained less than 5% error for 99% of the data points, except near the critical point.

Step 3: I digitized 1,052 Z-factor measurements from 88 samples detailed in Wichert’s 1970 thesis, which covered mixtures containing 0 - 54.5% CO2, 0 - 73.9% H2S, and 0 - 25.2% N2. I then developed a four-component Peng-Robinson model and modified the coefficients of the Sutton critical property correlation for the hydrocarbon gas and adjusted the binary interaction coefficients between all four components. This optimization was performed with a Python-driven workflow, minimizing the overall root mean square error by systematically regressing the Sutton coefficients with Python (outer loop) and the binary interaction parameters with PhazeComp (inner loop).

Results

While the Peng Robinson formulation is made a bit more complex due to 4 components vs 1, as well as inclusion of binary interaction coefficients, it still requires no iteration and so remains computationally efficient and robust, continuing to tick the boxes I was going after. Match qualities remain good - as detailed below - up to and including 100% pure inert compositions.

Cross plots below detail the pure component inert matches, along with the Wichert Z-Factor matches.

Article content
Cross plot of calculated vs NIST Z-Factor for CO2
Article content
Cross plot of calculated vs NIST Z-Factor for H2S
Article content
Cross plot of calculated vs NIST Z-Factor for N2
Article content
Cross plot of calculated vs Wichert reported Z-Factors


Article content
Final 4-Component EOS model. Note: Gas MW, Tc and Pc will be a function of hydrocarbon specific gravity


Article content
Custom Tc & Pc calculation for hydrocarbon gas as a function of hydrocarbon MW

Additional Resources

All the datasets used for these regressions have been uploaded for public access. To replicate these findings, you will need to download and install Aaron Zicks’ PhazeComp software, which will run these models with the free functionality. I encourage those interested in deepening their understanding of EOS modelling to invest time in mastering this software.

Access the 4-Component Peng-Robinson Z-Factor Model on GitHub

A. Kayode Coker

Honorary Research Fellow at University of Wolverhampton

4mo

Hello All, I hope you’re well. I’m seeking help with EOS using Peng-Robinson with Python code on a problem involving the Joule-Thomson coefficient to determine the outlet pressures of a two-stage expansion system. I’II be most grateful for any help to resolve the Python code. I can discuss the problem with anyone who is versed in Python to contact me. Regards,

Like
Reply
Joop de Kok

Lead Reservoir Engineer CCS at EBN

8mo

This is great! I tested the density predictions for CO2 in CMG's GEM simulator, and the improvements in the relevant pressure and temperature range are very good compared to the default. I was wondering, in GEM there is also the possibility to include a temperature dependent volume shift. I guess it would be possible to further try to improve the match? I guess I would need to improve my python skills...

David Ogbe

Executive Director

8mo

Thanks Mark. I find your work to be insightful.

Like
Reply
Hakim Djema

MSc EOR, Fluids Reservoir & PVT Engineer

1y

Thank you for your work, Mark. Is it possible to modify the constants A and B of the gas fraction, knowing that they are immutable and part of the PR equation?

Like
Reply
Víctor Manuel Rondon Zuluaga

Analytics in Petroleum Engineering

1y

Sometimes is better start with low value BICs than start with default values. Nitrogen as underbalance drilling gain acceptance, is more frequent in gas reservoir compositions. Nitrogen, would split more gas when is used as injection, and maybe can be used as fracturing fluid becaused unlock lighter components that precedes higher MW fluid opened to sand face.

Like
Reply

To view or add a comment, sign in

More articles by Mark Burgoyne

  • Z-Factors for Natural Gas: A simple EOS based approach

    Prompted by preparation for an imminent internal PVT course that I will be delivering shortly, I dusted off the old…

    23 Comments
  • pyResToolbox - your Python Companion

    Doesn’t time fly…. It only seems a short while ago that I wrote an article detailing the beginning of my journey of…

    24 Comments
  • A PVT Journey – Key learnings so far

    As a practising Reservoir Engineer, I’ve always felt that I understood PVT. Like many, I use it almost daily, but…

    14 Comments
  • Black Oil Tables Behaving Badly: Taming negative compressibility

    Many practicing reservoir engineers out there will have come across this a few times. If lucky it’s only been in the…

    15 Comments
  • A Tale of Python and PVT

    In an earlier post, I’d shared how I challenge myself to undertake a project over each festive season holiday period…

    38 Comments
  • Loving the Lorenz - New life for an old parameter

    Since 1950, the Lorenz Coefficient has provided a practical way to quantify layered permeability heterogeneity. Simple…

    15 Comments
  • ResToolbox is dead... Long live ResToolbox2!

    Thanks for all your support over the past few years – many positive comments and some pleasant interactions in person…

    18 Comments

Insights from the community

Others also viewed

Explore topics