Skip to main content

Open-source Python library for petroleum & reservoir engineering — PVT, IPR, decline, multiphase flow, material balance, petrophysics (Archie/Simandoux/Timur), rate transient analysis (Blasingame / Agarwal-Gardner / NPI), drilling (API 5C3 collapse, Barlow burst), production (Turner/Coleman/Katz/Gilbert), economics, well log I/O. MIT licensed.

Project description

petropt — The Python Library for Petroleum Engineering

PyPI License: MIT Tests Python 3.10+

Free, open-source petroleum engineering tools for Python. MIT licensed — use anywhere, no restrictions.

Online Calculators · Documentation

Install

pip install petropt

Quick Start

import petropt

# Load a production dataset
df = petropt.datasets.load_sample_production()

# PVT: Standing bubble point pressure
pb = petropt.correlations.standing_bubble_point(api=35, gas_sg=0.65, temp=200)

# Decline: Arps hyperbolic forecast
import numpy as np
t = np.arange(0, 60)
q = petropt.correlations.arps_decline(qi=1000, di=0.05, b=0.5, t=t)

# IPR: Vogel inflow performance
ipr = petropt.correlations.vogel_ipr(qmax=1500, pr=3500, num_points=50)

# Petrophysics: water saturation from resistivity
sw = petropt.petrophysics.archie_sw(rt=20.0, phi=0.20, rw=0.05)

# RTA: Blasingame variables for type-curve matching
bg = petropt.rta.blasingame_variables(t, q, cum, pwf, pi=3000)

# Economics: NPV of a well
npv = petropt.economics.npv(cash_flows=[-500000, 80000, 70000, 60000], discount_rate=0.10, periods_per_year=1)

What's Inside

Correlations (50+ functions)

  • PVT — Standing bubble point/Rs/Bo, Beggs-Robinson viscosity, Sutton & Piper pseudocritical, Hall-Yarborough & Dranchuk Z-factor, Lee-Gonzalez-Eakin gas viscosity, gas Bg/density/compressibility
  • Water PVT — McCain Bw/viscosity/density, Osif compressibility, gas solubility
  • IPR — Vogel, Fetkovich, Rawlins-Schellhardt (C&n), PI-based, composite (Vogel + PI)
  • Decline Curves — Arps (exponential, hyperbolic, harmonic), cumulative production, EUR
  • Multiphase Flow — Beggs-Brill pressure gradient (all flow patterns, any inclination)
  • Hydraulics — Darcy-Weisbach with Churchill friction factor
  • Relative Permeability — Corey, Brooks-Corey, LET models (oil/water/gas)
  • Material Balance — Gas P/Z, Havlena-Odeh, OOIP estimation, drive indices
  • Volumetrics — STOIIP, GIIP, drainage radius, recovery factor

Petrophysics

  • Vshale — linear, Larionov (Tertiary / older), Clavier
  • Porosity — density, sonic (Wyllie / Raymer-Hunt-Gardner), neutron-density, effective
  • Water saturation — Archie, Simandoux, Indonesian (Poupon-Leveaux)
  • Permeability — Timur, Coates (NMR)
  • Pay — cutoff-based net pay, NTG, pay-weighted averages, hydrocarbon pore thickness

Rate Transient Analysis (RTA)

  • Transforms — pressure-normalized rate, material balance time
  • Type curves — Blasingame, Agarwal-Gardner, NPI variables
  • Flowing material balance — contacted OOIP/OGIP from producing-well data
  • Linear flow — sqrt(t) analysis, sqrt(k)·xf extraction from fracture wells

Drilling

  • Well control — hydrostatic, ECD, MAASP, kill mud weight, ICP/FCP (Driller's / Wait-and-Weight)
  • Hydraulics — annular velocity, nozzle TFA, bit pressure drop
  • Tubulars — Barlow burst with API 0.875 factor, full API 5C3 collapse (yield / plastic / transition / elastic regimes)

Production Engineering

  • Liquid loading — Turner (1969) and Coleman (1991) critical droplet-lift velocities
  • Flow assurance — Katz hydrate formation temperature, Hammerschmidt methanol/MEG/ethanol inhibitor dosing
  • Piping — API RP 14E erosional velocity
  • Choke flow — Gilbert (1954) critical-flow rate correlation

Economics

  • NPV, IRR, payback period, oil & gas monthly cashflow (WI/NRI/severance/opex/capex)

I/O

  • LAS files — Read well logs to pandas DataFrame (wraps lasio)
  • Production CSV — Auto-detect date/oil/gas/water columns from any naming convention

Datasets

  • Petrobras 3W — Labeled well events for fault detection (CC BY 4.0)
  • NPD Wellbore — Norwegian Continental Shelf well metadata (NLOD)
  • Sample Production — Bundled 2-well, 12-month dataset for demos

Notebooks

  • student_intro.ipynb — Your first petroleum dataset in Python
  • decline_analysis.ipynb — Arps decline curve analysis tutorial

Why petropt?

petropt pyResToolbox DIY scripts
License MIT (use anywhere) GPL (copyleft) N/A
Datasets Built-in (3W, NPD, samples) No No
LAS reader Yes No Manual
Student notebooks Yes No No
Web calculators tools.petropt.com No No
Economics NPV, IRR, cashflow No Manual
Hosted & visual tools.petropt.com — paid web app with calculators (decline curves, PVT, well economics, LAS viewer) and a built-in workspace by Groundwork Analytics

petropt is MIT licensed — use it freely in commercial products, research, classrooms, and AI applications. No copyleft restrictions.

History

This repository was first initiated 8 years ago, in July 2018 (see master branch for the original placeholder). Most of the code was developed and used privately over the years. We consolidated the collected work and released the open-source version on April 24, 2026.

For AI Builders

pip install petro-mcp  # MCP server that wraps petropt for Claude/ChatGPT/LLMs

Links

Citation

If you use petropt in academic work, please cite:

Shirangi, M.G. (2026). petropt: The Python Library for Petroleum Engineering.
https://github.com/petropt/petropt

License

MIT — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

petropt-0.3.4.tar.gz (87.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

petropt-0.3.4-py3-none-any.whl (81.3 kB view details)

Uploaded Python 3

File details

Details for the file petropt-0.3.4.tar.gz.

File metadata

  • Download URL: petropt-0.3.4.tar.gz
  • Upload date:
  • Size: 87.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for petropt-0.3.4.tar.gz
Algorithm Hash digest
SHA256 df9b06a0addb31044e19879b8daf30a4440a7ccf7f5282a06bcc1a0861606457
MD5 e53bde621d1d310791561694b30d74df
BLAKE2b-256 37f1bb00cad80deac394aa5265a34323b90140dd0b7838148a045cbcee5802a5

See more details on using hashes here.

File details

Details for the file petropt-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: petropt-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 81.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for petropt-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f4bc9118d8e9709b31ce7f035f3f3f6f939eb774bc19ecd396ba0a995d121612
MD5 8cd4a32c5d4e9e9cdab424eb44737acb
BLAKE2b-256 36e5800e11cd3ee2dcf442cf6edc0f90f84d261a4ca56b07ea90085079c1da5c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page