Gas Well Deliverability Test: Rawlins-Schellhardt Back-Pressure Method in Python

Gas well deliverability test concept artwork showing a gas well and pressure response

By Saad Iqbal

gas well deliverability test concept artwork for upstream oil and gas engineering
Concept artwork. Use the calculations, data and assumptions in the article for engineering interpretation.

A four point flow after flow gas well deliverability test comes back with an absolute open flow (AOF) that looks 30% too optimistic, and the nomination desk is already asking for the number before the midday deadline. Possible causes include gauge or rate errors, insufficient stabilization, and a back pressure curve exponent n fitted by eye off a log log plot instead of regressed properly, or a Δp² column calculated from gauge pressure instead of absolute pressure.

Get the Rawlins Schellhardt back pressure method right once, in code, and every future test runs the same way, with the same regression, every time, no more re deriving C and n in a spreadsheet at 11 p.m. before a pipeline nomination.

What You Need Before You Start

This walkthrough assumes you already ran the field test. You need:

  • Stabilized flow after flow or isochronal test data: at least three, ideally four, rate/pressure pairs
  • Reservoir (static, shut in) pressure Pr, in absolute psia
  • Stabilized flowing bottomhole pressure Pwf for each flow rate, in absolute psia
  • Python 3 with numpy installed (pip install numpy)
  • A sanity check on units, mixing gauge and absolute pressure is a preventable source of error in the fitted exponent

What a Gas Well Deliverability Test Actually Measures

A gas well deliverability test exists to answer one practical question: how much gas can this well produce against a given pipeline or sales line pressure, and what’s the absolute ceiling if backpressure dropped to zero? That ceiling, the AOF, feeds directly into pipeline nominations, regulatory allowable calculations in states that still cap production by deliverability, and well spacing or interference studies where you need a consistent, repeatable number across every well in a field.

A test run once and never revisited is close to useless for any of those purposes; what matters is a method that gives the same answer every time it’s applied to the same kind of data.

Rawlins and Schellhardt published their empirical back pressure equation in 1935, and despite nearly a century of more rigorous alternatives (laminar inertial turbulent analysis, isochronal and modified isochronal testing), it’s still the workhorse method because it needs so little: four stabilized rate/pressure pairs and a shut in pressure. It ties those points together with:

qsc = C (Pr² − Pwf²)n

where qsc is the stabilized gas rate at standard conditions, C is the stabilized performance coefficient (well- and reservoir specific), and n is the flow exponent. n sits between 0.5 (fully turbulent, non Darcy flow dominates near the wellbore) and 1.0 (laminar, Darcy flow). Everything below is about getting C and n from real test data without eyeballing a chart.

Step 1: Run the gas well deliverability test

Flow-after-flow gas well deliverability test with four stabilized flow rate steps

Flow the well at four successively higher choke settings, holding each rate until the flowing bottomhole pressure stabilizes before moving to the next step. Record the stabilized rate q and flowing pressure Pwf at each step, plus the reservoir’s static (shut in) pressure Pr measured before the test started.

Step 2: Calculate gas well deliverability test pressure differences

Table calculating delta p squared for gas well deliverability test points

For each flow point, compute Δp² = Pr² − Pwf², always in absolute psia. Using a worked example with Pr = 2,450 psia:

Rate (MMscf/d)Pwf (psia)Δp² (psia²)
1.22,365409,275
2.52,2101,118,400
3.82,0151,942,275
5.11,7802,834,100

Step 3: Tabulate gas well deliverability test data

Table of stabilized flow rates and bottomhole pressures for gas well deliverability test

Put the four (rate, Δp²) pairs in one clean table before you plot or regress anything. This is also where a bad gauge reading or a rate that never truly stabilized usually jumps out, a point that sits far off the trend of the other three is worth re flowing rather than forcing into the fit.

Step 4: Fit the gas well deliverability test curve

Log-log plot of flow rate versus delta p squared with fitted backpressure curve slope n

Taking logs of the Rawlins Schellhardt equation turns it into a straight line: log(q) = log(C) + n·log(Δp²). Plot log(q) against log(Δp²) and the slope of the best fit line is n, not a slope read off a ruler on graph paper, but a proper least squares regression. That’s the whole reason to automate this step: eyeballing a four point log log plot is exactly where a 0.74 turns into a “close enough” 0.85, and that error compounds directly into the AOF.

Step 5: Extrapolate gas well deliverability test AOF

Extrapolated absolute open flow potential AOF determination from backpressure curve at atmospheric pressure

AOF is the rate the equation predicts if you could flow the well all the way down to atmospheric pressure (14.7 psia) at the wellbore. Extend the fitted line to Δp² = Pr² − 14.7² (effectively Pr², since 14.7² is negligible by comparison) and read off q. Record this theoretical extrapolation in the deliverability file. A pipeline nomination requires the operating rate at the actual network pressure, with facility, well integrity and regulatory constraints applied.

Automate the Whole Test in Python

The regression and the AOF extrapolation are both a few lines once you stop doing them by hand. This uses Python and numpy’s polynomial fit on the log transformed data, which is exactly the least squares line you’d want from the log log plot:

import numpy as np

# Flow-after-flow test data (field units: MMscf/d, psia)
q = np.array([1.2, 2.5, 3.8, 5.1])          # stabilized rates, MMscf/d
pwf = np.array([2365, 2210, 2015, 1780])    # flowing bottomhole pressure, psia
pr = 2450.0                                  # shut-in reservoir pressure, psia

delta_p2 = pr**2 - pwf**2                    # psia^2, must use absolute pressure

# log(q) = log(C) + n*log(delta_p2)  -->  straight-line regression
log_q = np.log10(q)
log_dp2 = np.log10(delta_p2)
n, log_c = np.polyfit(log_dp2, log_q, 1)
c = 10**log_c

print(f"n = {n:.4f}")
print(f"C = {c:.4e}  (MMscf/d per psia^2 raised to n)")

# Absolute open flow: extrapolate Pwf down to atmospheric pressure
p_atm = 14.7
delta_p2_aof = pr**2 - p_atm**2
aof = c * delta_p2_aof**n
print(f"AOF = {aof:.2f} MMscf/d")

Running this on the worked example above gives n ≈ 0.75, C ≈ 7.731 × 10-5, and AOF ≈ 8.85 MMscf/d, a flow exponent comfortably inside the 0.5–1.0 range, which is itself a useful sanity check on the test data (see pitfalls below).

Gas well deliverability test verification and common pitfalls

  • Check n is between 0.5 and 1.0. A value outside that range can indicate a units mix up (gauge vs. absolute pressure) or a flow point that wasn’t actually stabilized.
  • Use absolute pressure everywhere. Forgetting to add atmospheric pressure to a gauge reading shifts every Δp² and silently drags n off its true value.
  • Don’t force a 4-point fit through a bad point. If one point sits well off the regression line, re test that rate before trusting the AOF.
  • Compare against an isochronal or modified isochronal test if you have one. A flow after flow test on a low permeability well can understate deliverability if later points never truly stabilized; the method is the same, but the stabilization time matters more.
  • Sanity check AOF against prior tests. A jump of more than 15–20% from the well’s last test, with no stimulation or workover in between, is worth re running the regression on raw data before it goes on a nomination.
  • Watch for superficial velocity effects at the top rate. If the highest rate point was run with visible liquid carryover or a choke near its travel limit, that point can pull n toward 0.5 even on a well that’s mostly laminar at normal operating rates, flag it rather than silently accepting a lower AOF.

Isochronal and modified isochronal gas well deliverability test procedures use equal duration flow periods to estimate the transient slope. A separate stabilized flow point anchors the stabilized coefficient C. Do not treat the intercept of a transient regression as the stabilized C. The Python example above is for stabilized flow after flow data; an isochronal workflow requires this additional calibration before extrapolating AOF.

Combine the gas back pressure relationship with tubing performance using nodal analysis in Python to find the operating point. The Vogel IPR equation is an oil well model and should not be fitted to this gas test. For gas well liquid carrying capacity, review Turner screening.

The core idea carries far beyond one test: a deliverability number is only as trustworthy as the regression behind it. Code the fit once, and every future test on every well runs through the same, auditable math.

Gas well deliverability test quality and interpretation

Confirm the pressure datum. Reservoir and flowing pressures must represent the same reference depth and use absolute units. A tubing head pressure is not a flowing bottomhole pressure. If bottomhole values are calculated from a wellbore model, document temperature, gas properties and liquid assumptions. A pressure conversion error can affect every point while still producing an apparently straight regression.

Check the rate basis. Store the standard pressure and temperature used by the meter. Confirm whether rates represent dry or wet gas and whether separator corrections have already been applied. C depends on the rate and pressure units used in the fit. Changing from MMscf/d to scf/d changes the coefficient by a factor of one million; the exponent alone does not identify the unit convention.

Inspect the gas well deliverability test residuals. Calculate predicted rate at each measured pressure and compare it with the recorded rate. Plot both log space residuals and relative rate errors. Least squares in logarithmic space emphasizes relative differences and does not necessarily minimize absolute rate error. Weighting can be useful when meter uncertainty changes with rate, but the weighting rule must be documented.

Separate fit quality from extrapolation confidence. Four points can lie close to a line while the zero back pressure extrapolation remains uncertain. AOF may be far beyond the highest tested rate. Liquid behavior, additional non Darcy losses, changing fluid properties and operating restrictions can invalidate a distant extension. Report the tested rate range alongside AOF and avoid presenting the extrapolated number as demonstrated capacity.

Use the gas well deliverability test at the expected operating pressure. Evaluate q = C(Pr² − Pwf²)n only for physically meaningful pressures with 0 < Pwf < Pr. Then solve the inflow and outflow intersection. Pipeline back pressure is a surface constraint; it does not equal Pwf. Include the tubing, choke and gathering network pressure losses when determining a sustainable delivery rate.

Revisit the gas well deliverability test after material changes. Reservoir depletion, stimulation, liquid accumulation and completion changes can alter performance. A new coefficient should be supported by new measurements rather than an arbitrary adjustment to an old test. Compare the pressure and rate ranges of repeat tests before interpreting a changed AOF as damage or improvement.

What should the final gas well deliverability test report contain? Include measured points, stabilization criteria, gauge and meter information, pressure datum, rate basis, regression method, fitted C and n, residuals and the atmospheric pressure convention. State whether the curve is stabilized or transient. Keep the raw data and script version so another engineer can reproduce the result.

Saad Iqbal Avatar

About the author

Saad Iqbal

Petroleum Engineer · Well Intervention & Stimulation Specialist

Saad Iqbal is a petroleum engineer and well intervention and stimulation specialist with more than a decade of field experience in hydraulic fracturing, coiled tubing, CSG, tight sandstone and shale developments. He explores practical AI, automation and data-driven engineering for safer, smarter upstream operations.

Discover more from EnergyMindAI

Subscribe now to keep reading and get access to the full archive.

Continue reading