bluebonnet.fluids.gas

Gas pvt properties, using Dranchuk and Abou-Kassem’s correlations.

Functions

make_nonhydrocarbon_properties(→ numpy.typing.NDArray)

Create an array of the nonhydrocarbon molecules present.

z_factor_DAK(→ float)

Calculate the z-factor for gas using Dranchuk and Abou-Kassem (1975).

z_factor_hallyarbrough(→ float)

Get Z-factor for gas from Hall-Yarbrough's iterative approach.

b_factor_DAK(→ float)

Calculate the b-factor for gas using Dranchuk and Abou-Kassem (1975).

density_DAK(→ float)

Calculate the density for gas using Dranchuk and Abou-Kassem (1975).

compressibility_DAK(→ float)

Calculate the compressibility for gas using Dranchuk and Abou-Kassem (1975).

viscosity_Sutton(→ float)

Calculate the viscosity for gas using Sutton's Fudamental PVT Calculations (2007).

pseudocritical_point_Sutton(→ tuple[float, float])

Calculate the pseudocritical pressure and temperature from Sutton (2007).

pseudopressure_Hussainy(→ float)

Calculate the pseudopressure for gas using Al Hussainy (1966).

Module Contents

bluebonnet.fluids.gas.make_nonhydrocarbon_properties(nitrogen: float, hydrogen_sulfide: float, co2: float, *others: dict[str, float]) numpy.typing.NDArray[source]

Create an array of the nonhydrocarbon molecules present.

Parameters:
  • nitrogen (float) – compositional fraction of N2

  • hydrogen_sulfide (float) – compositional fraction of H2S

  • co2 (float) – compositional fraction of CO2

  • *others (list(tuple)) –

    list of tuples of (name, compositional fraction, molecular weight,

    critical temperature (in R), critical pressure (psia))

    for other non-hydrocarbon molecules

Returns:

non_hydrocrabon_properties – structured array of non-hydrocarbon fluid properties

Return type:

NDArray

Examples

>>> make_nonhydrocarbon_properties(0.03, 0.012, 0.018)
bluebonnet.fluids.gas.z_factor_DAK(temperature: float, pressure: float, temperature_pseudocritical: float, pressure_pseudocritical: float) float[source]

Calculate the z-factor for gas using Dranchuk and Abou-Kassem (1975).

Parameters:
  • temperature (float) – reservoir temperature in Fahrenheit.

  • pressure (float) – reservoir pressure in psia

  • temperature_pseudocritical (float) – pseudocritical temperature in Fahrenheit.

  • pressure_pseudocritical (float) – pseudocritical pressure in psia

Returns:

z_fact – z_factor (dimensionless)

Return type:

float

Examples

>>> z_factor_DAK(400, 100, -102, 649)
0.9969013621293381
bluebonnet.fluids.gas.z_factor_hallyarbrough(pressure: float, temperature: float) float[source]

Get Z-factor for gas from Hall-Yarbrough’s iterative approach.

Parameters:
  • p (float | NDArray[np.float64]) – pressure (psi)

  • t (float) – temperature (Rankine)

Returns:

zfact – z-factor

Return type:

float:

References

Hall-Yarbrough estimation

bluebonnet.fluids.gas.b_factor_DAK(temperature: float, pressure: float, temperature_pseudocritical: float, pressure_pseudocritical: float, temperature_standard: float = 60, pressure_standard: float = 14.7) float[source]

Calculate the b-factor for gas using Dranchuk and Abou-Kassem (1975).

Parameters:
  • temperature (float) – reservoir temperature in Fahrenheit.

  • pressure (float) – reservoir pressure in psia

  • temperature_pseudocritical (float) – pseudocritical temperature in Fahrenheit.

  • pressure_pseudocritical (float) – pseudocritical pressure in psia

Returns:

b_g – b-factor (reservoir barrels / scf)

Return type:

float

Examples

>>> b_factor_DAK(400, 100, -102, 649, 60, 14.7)
0.04317415921420302
bluebonnet.fluids.gas.density_DAK(temperature: float, pressure: float, temperature_pseudocritical: float, pressure_pseudocritical: float, specific_gravity: float) float[source]

Calculate the density for gas using Dranchuk and Abou-Kassem (1975).

Parameters:
  • temperature (float) – reservoir temperature in Fahrenheit.

  • pressure (float) – reservoir pressure in psia

  • temperature_pseudocritical (float) – pseudocritical temperature in Fahrenheit.

  • pressure_pseudocritical (float) – pseudocritical pressure in psia

  • specific_gravity (float) – specific gravity relative to air (molecular weight/ molecular weight)

Returns:

rho_g – density_gas (lb / cubic ft)

Return type:

float

Examples

>>> density_DAK(400, 100, -102, 649, 0.65) # returns 0.2143
bluebonnet.fluids.gas.compressibility_DAK(temperature: float, pressure: float, temperature_pseudocritical: float, pressure_pseudocritical: float) float[source]

Calculate the compressibility for gas using Dranchuk and Abou-Kassem (1975).

Parameters:
  • temperature (float) – reservoir temperature in Fahrenheit.

  • pressure (float) – reservoir pressure in psia

  • temperature_pseudocritical (float) – pseudocritical temperature in Fahrenheit.

  • pressure_pseudocritical (float) – pseudocritical pressure in psia

Returns:

c_g – compressibility (1 / psi)

Return type:

float

Examples

>>> compressibility_DAK(400, 104.7, -102, 649)
0.009576560643021937
bluebonnet.fluids.gas.viscosity_Sutton(temperature: float, pressure: float, temperature_pseudocritical: float, pressure_pseudocritical: float, specific_gravity: float) float[source]

Calculate the viscosity for gas using Sutton’s Fudamental PVT Calculations (2007).

Parameters:
  • temperature (float) – reservoir temperature in Fahrenheit.

  • pressure (float) – reservoir pressure in psia

  • temperature_pseudocritical (float) – pseudocritical temperature in Fahrenheit.

  • pressure_pseudocritical (float) – pseudocritical pressure in psia

  • specific_gravity (float) – specific gravity relative to air (density/density)

Returns:

mu_g – viscosity_gas (centipoise)

Return type:

float

Examples

>>> viscosity_Sutton(400, 100, -102, 649, 0.65)
0.01652719692109309
bluebonnet.fluids.gas.pseudocritical_point_Sutton(specific_gravity: float, non_hydrocarbon_properties: numpy.typing.NDArray, fluid: str = 'wet gas') tuple[float, float][source]

Calculate the pseudocritical pressure and temperature from Sutton (2007).

Parameters:
  • specific_gravity (float) – specific gravity relative to air (molecular weight / molecular weight)

  • non_hydrocarbon_properties (np.NDArray) – record array of non-hydrocarbon fluid properties MUST HAVE H2S as second row, CO2 as third row

  • fluid (string) – whether the gas is ‘dry gas’ or ‘wet gas’

Returns:

  • pseudocritical_temp (float) – temperature_pseudocritical (F)

  • pseudocritical_p (float) – pressure_pseudocritical (psia)

Examples

>>> non_hydrocarbon_properties = make_nonhydrocarbon_properties(0.03, 0.012, 0.018)
>>> points_pseudocritical_Sutton(0.65, non_hydrocarbon_properties, "dry gas")
(-102.21827232417752, 648.510797253794)
>>> non_hydrocarbon_properties = make_nonhydrocarbon_properties(0.05, 0.01, 0.04)
>>> points_pseudocritical_Sutton(0.8, non_hydrocarbon_properties, "wet gas")
(-72.20351526841193, 653.2582064200534)
bluebonnet.fluids.gas.pseudopressure_Hussainy(temperature: float, pressure: float, temperature_pseudocritical: float, pressure_pseudocritical: float, specific_gravity: float, pressure_standard: float = 14.7) float[source]

Calculate the pseudopressure for gas using Al Hussainy (1966).

Parameters:
  • temperature (float) – reservoir temperature in Fahrenheit.

  • pressure (float) – reservoir pressure in psia

  • temperature_pseudocritical (float) – pseudocritical temperature in Fahrenheit.

  • pressure_pseudocritical (float) – pseudocritical pressure in psia

  • specific_gravity (float) – specific gravity relative to air (density/density)

Returns:

m – pseudopressure (psi^2 / centipoise)

Return type:

float

Examples

>>> pseudopressure_Hussainy(400, 100, -102, 649, 0.65)
593363.7626437937