bluebonnet.fluids.fluid

Calculate fluid PVT properties.

Attributes

PRESSURE_STANDARD

STP pressure (14.7 psi)

TEMPERATURE_STANDARD

STP Temperature (60 degrees F)

Classes

Fluid

Fluid PVT properties.

Functions

build_pvt_gas(→ pandas.DataFrame)

Build a table of PVT properties for use in the flow module.

pseudopressure(→ numpy.typing.NDArray[numpy.float64])

Calculate the pseudopressure using Al-Hussainy's relation.

Module Contents

bluebonnet.fluids.fluid.PRESSURE_STANDARD = 14.7

STP pressure (14.7 psi)

bluebonnet.fluids.fluid.TEMPERATURE_STANDARD = 60

STP Temperature (60 degrees F)

bluebonnet.fluids.fluid.build_pvt_gas(gas_values: collections.abc.Mapping, gas_dryness: str, maximum_pressure: float = 14000) pandas.DataFrame[source]

Build a table of PVT properties for use in the flow module.

Parameters:
  • gas_values (dictionary) – keys include ‘N2’,’H2S’,’CO2’, ‘Gas Specific Gravity’, ‘Reservoir Temperature (deg F)’

  • gas_dryness (str) – One of ‘wet gas’ or ‘dry gas’

  • maximum_pressure (float) – initial reservoir pressure to calculate up to.

Returns:

pvt_table

Return type:

pd.DataFrame

class bluebonnet.fluids.fluid.Fluid[source]

Fluid PVT properties.

Parameters:
  • temperature (float) – reservoir temperature (in F)

  • api_gravity (float) – oil gravity in degrees API

  • gas_specific_gravity (float) – Gas gravity relative to air

  • solution_gor_initial (float) – initial reservoir gas-oil ratio in scf/bbl

  • salinity (float) – water salinity in weight percent total dissolved solids

  • water_saturation_initial (float) – initial water saturation (V/V)

temperature: float

Temperature in F

api_gravity: float

Oil API gravity

gas_specific_gravity: float

Gas specific gravity

solution_gor_initial: float

Initial gas-oil ratio

salinity: float = 0.0

Salinity (total dissolved solids)

water_saturation_initial: float = 0.0

Initial water saturation

water_FVF(pressure: numpy.typing.NDArray[float] | float) numpy.typing.NDArray[float] | float[source]

Water formation volume factor (B-factor) from McCain.

Parameters:

pressure (np.ndarray) – water pressure in psia

Returns:

b_w – b-factor in reservoir bbl / standard bbl

Return type:

ndarray

water_viscosity(pressure: numpy.typing.NDArray | float)[source]

Water viscosity from McCain (1991).

Parameters:

pressure (ndarray) – water pressure in psia

Returns:

mu_w – viscosity in centipoise

Return type:

float

gas_FVF(pressure: numpy.typing.NDArray | float, temperature_pseudocritical: float, pressure_pseudocritical: float) numpy.typing.NDArray | float[source]

Gas formation volume factor (Bg) from Dranchuk and Abou-Kassem (1975).

Parameters:
  • pressure (ndarray) – 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:

ndarray

gas_viscosity(pressure: numpy.typing.NDArray | float, temperature_pseudocritical: float, pressure_pseudocritical: float) numpy.typing.NDArray | float[source]

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

Parameters:
  • pressure (float) – reservoir pressure in psia

  • temperature_pseudocritical (float) – pseudocritical temperature in Fahrenheit.

  • pressure_pseudocritical (float) – pseudocritical pressure in psia

Returns:

mu_g – viscosity_gas (centipoise)

Return type:

ndarray

Examples

>>> Fluid(400, 35, 0.65, 0).viscosity_gas(100, -102, 649)
0.01652719692109309
oil_FVF(pressure: numpy.typing.NDArray | float) numpy.typing.NDArray | float[source]

Calculate the oil formation volume factor (Bo) using Standing.

Parameters:

pressure (float) – reservoir pressure (psia)

Returns:

b_o\(b_o\), the formation volume factor (V/V)

Return type:

ndarray

oil_viscosity(pressure: numpy.typing.NDArray | float) numpy.typing.NDArray | float[source]

Calculate the oil viscosity using Beggs-Robinson.

Returns:

mu_o\(\mu_o\), the oil viscosity

Return type:

ndarray

pressure_bubblepoint() float[source]

Calculate the bubble point pressure using Standing.

Returns:

p_bubble – Bubble point pressure in psia.

Return type:

float

Examples

>>> Fluid(200, 35, 0.8, 650).pressure_bubblepoint()
2627.2017021875276
bluebonnet.fluids.fluid.pseudopressure(pressure: numpy.typing.NDArray[numpy.float64], viscosity: numpy.typing.NDArray[numpy.float64], z_factor: numpy.typing.NDArray[numpy.float64]) numpy.typing.NDArray[numpy.float64][source]

Calculate the pseudopressure using Al-Hussainy’s relation.

Parameters:
  • pressure (NDArray, psi)

  • viscosity (NDArray, cp)

  • z_factor (NDArray, dimensionless)

Returns:

m – pseudopressure, psia^2 / cp

Return type:

NDArray