CamPetro

Gas FVF and Z-Factor

On this page

Summary

The gas formation volume factor, Gas formation volume factor, is the reservoir volume that one standard cubic foot of gas occupies. It follows from the real-gas law with the compressibility factor Gas compressibility factor. The factor is estimated from the gas gravity with Sutton's pseudo-critical properties and an explicit equation of state, the Hall-Yarborough form, solved for the reduced density. Use it for a dry or lean gas when no laboratory Z-factor is available.

Inputs and outputs

Item Units
Input Reservoir pressure psia
Input Formation temperature °F
Input Gas gravity air = 1
Output Pseudo-critical temperature °R
Output Pseudo-critical pressure psia
Output Pseudo-reduced temperature dimensionless
Output Pseudo-reduced pressure dimensionless
Output Reduced density (Hall-Yarborough) dimensionless
Output Gas compressibility factor dimensionless
Output Gas formation volume factor rcf/scf

Equations

Pseudo-critical properties from the gas gravity (Sutton's correlation for hydrocarbon gases), with temperature in Rankine and pressure in psia:

\[ \Tpc = 169.2 + 349.5\,\gammaGas - 74\,\gammaGas^{2} \qquad\qquad \Ppc = 756.8 - 131\,\gammaGas - 3.6\,\gammaGas^{2} \]

The pseudo-reduced properties are

\[ \Tpr = \frac{\Tform + 459.67}{\Tpc} \qquad\qquad \Ppr = \frac{\Pres}{\Ppc} \]

Hall and Yarborough write the real-gas equation of state in terms of a reduced density \(\Yhy\). With \(t = 1/\Tpr\) and \(A = 0.06125\,t\,\exp\!\left[-1.2\,(1-t)^2\right]\), the density is the root of

\[ F(\Yhy) = -A\,\Ppr + \frac{\Yhy + \Yhy^{2} + \Yhy^{3} - \Yhy^{4}}{(1-\Yhy)^{3}} - \left(14.76\,t - 9.76\,t^{2} + 4.58\,t^{3}\right)\Yhy^{2} + \left(90.7\,t - 242.2\,t^{2} + 42.4\,t^{3}\right)\Yhy^{\,2.18 + 2.82\,t} = 0 \]

and the compressibility factor and the formation volume factor follow:

\[ \Zfac = \frac{A\,\Ppr}{\Yhy} \qquad\qquad \Bgas = 0.02827\,\frac{\Zfac\,\left(\Tform + 459.67\right)}{\Pres} \quad \text{(rcf/scf)} \]

The constant 0.02827 is \(p_{sc}/T_{sc}\) for 14.7 psia and 520 °R. The calculator solves \(F = 0\) by bisection on the interval 0 to 0.99, which always converges. Newton iteration from a small starting value is the usual choice and is faster, but it can step outside the valid range for low reduced temperature and high reduced pressure.

Symbol Variable Units Typical range
\(\gamma_g\) Gas gravity air = 1 0.55 to 1.3
\(T_f\) Formation temperature °F 75 to 350
\(p\) Reservoir pressure psia 500 to 20000
\(T_{pc}\) Pseudo-critical temperature °R 350 to 500
\(p_{pc}\) Pseudo-critical pressure psia 570 to 700
\(T_{pr}\) Pseudo-reduced temperature dimensionless 1.2 to 3
\(p_{pr}\) Pseudo-reduced pressure dimensionless 0 to 15
\(Y\) Reduced density (Hall-Yarborough) dimensionless 0 to 0.5
\(Z\) Gas compressibility factor dimensionless 0.7 to 1.4
\(B_g\) Gas formation volume factor rcf/scf 0.002 to 0.02

Single-value calculator

Behavior

The Z-factor falls below 1 at moderate pressure, where attraction between molecules makes the gas more compressible than an ideal gas, and then rises above 1 at high pressure, where molecular volume dominates. At 200 °F and a gas gravity of 0.7, Z is 0.922 at 1,000 psia, 0.886 at 3,000, 0.999 at 5,000 and 1.254 at 8,000 psia. A heavier gas has a lower Z in the dip: at 3,000 psia the gravities 0.6, 0.7 and 0.8 give 0.920, 0.886 and 0.851. The order reverses at high pressure: at 8,000 psia the same three give 1.234, 1.254 and 1.280. The formation volume factor itself falls steeply with pressure, almost as 1/p: at 200 °F and 0.7 gravity it is 0.0172, 0.00550, 0.00373 and 0.00292 rcf/scf at 1,000, 3,000, 5,000 and 8,000 psia. At the same pressure it rises with temperature, from 0.00337 at 150 °F to 0.00409 at 250 °F at 5,000 psia.

Parameter guidance

Gas gravity is the specific gravity of the produced gas relative to air, from a gas analysis or from the separator gas of a test; typical dry gas values are 0.55 to 0.7 and rich gas reaches 0.8 or more. Temperature is the reservoir temperature from Reservoir Pressure and Temperature. Pressure is the reservoir pressure, absolute, at the depth of the interval. The correlation for pseudo-critical properties is for hydrocarbon gases. Hydrogen sulfide and carbon dioxide change them and need a correction such as that of Wichert and Aziz, and nitrogen is usually corrected as well; with large fractions of those gases, use a laboratory Z-factor. For a condensate gas use the well-stream gravity, and note that the surface condensate yield must be added separately. The Hall-Yarborough form is considered reliable for pseudo-reduced temperature between about 1.2 and 3 and pseudo-reduced pressure up to about 15 or so; outside those bounds the calculator still returns a number, but it should not be trusted.

Worked example

A lean gas with gravity 0.70 at 200 °F, evaluated along a pressure decline, and the Bg that would result from assuming Z = 1 (the ideal gas):

import math
g, T = 0.70, 200.0
tpc = 169.2 + 349.5 * g - 74 * g ** 2
ppc = 756.8 - 131 * g - 3.6 * g ** 2
tabs = T + 459.67
t = tpc / tabs                      # 1 / Tpr
A = 0.06125 * t * math.exp(-1.2 * (1 - t) ** 2)
c1 = 14.76 * t - 9.76 * t ** 2 + 4.58 * t ** 3
c2 = 90.7 * t - 242.2 * t ** 2 + 42.4 * t ** 3
c3 = 2.18 + 2.82 * t
print(f"Tpc = {tpc:.1f} R, Ppc = {ppc:.1f} psia, Tpr = {tabs / tpc:.3f}")

def z_hy(p):
    ppr = p / ppc
    f = lambda y: -A * ppr + (y + y**2 + y**3 - y**4) / (1 - y) ** 3 - c1 * y**2 + c2 * y ** c3
    lo, hi = 1e-12, 0.99
    for _ in range(80):
        mid = 0.5 * (lo + hi)
        lo, hi = (lo, mid) if f(mid) > 0 else (mid, hi)
    y = 0.5 * (lo + hi)
    return ppr, y, A * ppr / y

print(f"{'p (psia)':>9} {'Ppr':>6} {'Y':>7} {'Z':>6} {'Bg (rcf/scf)':>13} {'Bg if Z=1':>10}")
for p in (500, 1000, 2000, 3000, 5000, 8000, 10000):
    ppr, y, z = z_hy(p)
    bg = 0.02827 * z * tabs / p
    print(f"{p:9d} {ppr:6.2f} {y:7.4f} {z:6.3f} {bg:13.6f} {0.02827 * tabs / p:10.6f}")
ppr, y, z = z_hy(5000)
bg = 0.02827 * z * tabs / 5000
print(f"at 5000 psia: Bg = {bg * 1000:.2f} rcf/Mscf = {bg / 5.614583 * 1000:.3f} rb/Mscf; expansion factor 1/Bg = {1 / bg:.0f} scf/rcf")

Output

Tpc = 377.6 R, Ppc = 663.3 psia, Tpr = 1.747
 p (psia)    Ppr       Y      Z  Bg (rcf/scf)  Bg if Z=1
      500   0.75  0.0222  0.958      0.035728   0.037298
     1000   1.51  0.0460  0.922      0.017202   0.018649
     2000   3.02  0.0964  0.880      0.008207   0.009324
     3000   4.52  0.1438  0.886      0.005505   0.006216
     5000   7.54  0.2123  0.999      0.003728   0.003730
     8000  12.06  0.2707  1.254      0.002923   0.002331
    10000  15.08  0.2960  1.434      0.002674   0.001865
at 5000 psia: Bg = 3.73 rcf/Mscf = 0.664 rb/Mscf; expansion factor 1/Bg = 268 scf/rcf

Assumptions and limitations

  • The gas is a dry or lean natural gas of mostly hydrocarbon composition. The pseudo-critical correlation is a function of gravity alone, which is only valid when the gas composition follows a typical hydrocarbon trend.
  • Non-hydrocarbon components (H2S, CO2, N2) are not corrected. They can shift Z by several percent and change the formation volume factor by the same amount.
  • The equation of state is an empirical fit to the Standing-Katz chart. It is reliable in the range stated in the parameter guidance and weaker near the critical point and at very high pressure.
  • Pressure and temperature are single values for the interval. Z and Bg change with depth, and a deep, thick interval needs a pressure-depth profile.
  • The factor is for a single-phase gas. A gas condensate below its dew point has a liquid phase, and the factor of the produced wellstream does not describe it.

QC checks

  • Z is near 1 at low pressure, dips below 1 at a few thousand psia for a typical gas, and returns above 1 at high pressure. A Z that keeps decreasing, or a Z above 1.5 at moderate pressure, indicates an input out of range.
  • Bg is about 0.003 to 0.01 rcf/scf for a gas reservoir of 3,000 to 8,000 psia at normal temperatures. A value above 0.05 suggests the pressure was entered in the wrong units, such as psig or MPa.
  • The solver gives the same Z with bisection and with Newton iteration. A second equation of state, such as Dranchuk-Abou-Kassem, is a useful independent check and typically agrees within a few percent in the normal range of the correlations.
  • Compare with a laboratory Z-factor or a gas analysis measured at the reservoir temperature. A difference of more than a few percent calls for a composition correction.
  • Pressure is in psia and temperature is absolute (Rankine) inside the calculation.

Going Deeper

Z-factors were traditionally read from the Standing-Katz chart, which is a plot of Z against reduced pressure for lines of reduced temperature. Equations that reproduce the chart came with computers. Hall and Yarborough fitted one in 1973, and Dranchuk and Abou-Kassem fitted an eleven-coefficient equation in 1975; both are solved for a reduced density by iteration and they agree closely in the usual range. Sutton's 1985 correlation improved the pseudo-critical properties for gases with a high molecular weight, where the older gravity relations underestimated them. A different, simpler approach is to fit a polynomial of Z against pressure to a laboratory constant-composition expansion and use that. In unconventional gas, the gas in place of a shale is not described by free-gas volume alone: adsorbed gas adds to it and is covered with the organic matter in the TOC topic. Wet gas and condensate reservoirs need the produced liquids added with a yield, and a near-critical fluid needs a compositional model.

References

  1. Hall, K.R. and Yarborough, L., 1973. A new equation of state for Z-factor calculations. Oil and Gas Journal, 71(25), 82–92.
  2. Sutton, R.P., 1985. Compressibility factors for high-molecular-weight reservoir gases. SPE 14265, SPE Annual Technical Conference and Exhibition, Las Vegas, NV.
  3. Standing, M.B. and Katz, D.L., 1942. Density of natural gases. Transactions of the AIME, 146, 140–149.
  4. Dranchuk, P.M. and Abou-Kassem, J.H., 1975. Calculation of Z factors for natural gases using equations of state. Journal of Canadian Petroleum Technology, 14(3), 34–36.

Python reference implementation

Python reference implementation

The Python reference implementation is available to registered users with a verified email address. Register or sign in to view it.