bluebonnet.fluids.fluid ======================= .. py:module:: bluebonnet.fluids.fluid .. autoapi-nested-parse:: Calculate fluid PVT properties. Attributes ---------- .. autoapisummary:: bluebonnet.fluids.fluid.PRESSURE_STANDARD bluebonnet.fluids.fluid.TEMPERATURE_STANDARD Classes ------- .. autoapisummary:: bluebonnet.fluids.fluid.Fluid Functions --------- .. autoapisummary:: bluebonnet.fluids.fluid.build_pvt_gas bluebonnet.fluids.fluid.pseudopressure Module Contents --------------- .. py:data:: PRESSURE_STANDARD :value: 14.7 STP pressure (14.7 psi) .. py:data:: TEMPERATURE_STANDARD :value: 60 STP Temperature (60 degrees F) .. py:function:: build_pvt_gas(gas_values: collections.abc.Mapping, gas_dryness: str, maximum_pressure: float = 14000) -> pandas.DataFrame Build a table of PVT properties for use in the flow module. :param gas_values: keys include 'N2','H2S','CO2', 'Gas Specific Gravity', 'Reservoir Temperature (deg F)' :type gas_values: dictionary :param gas_dryness: One of 'wet gas' or 'dry gas' :type gas_dryness: str :param maximum_pressure: initial reservoir pressure to calculate up to. :type maximum_pressure: float :returns: pvt_table :rtype: pd.DataFrame .. py:class:: Fluid Fluid PVT properties. :param temperature: reservoir temperature (in F) :type temperature: float :param api_gravity: oil gravity in degrees API :type api_gravity: float :param gas_specific_gravity: Gas gravity relative to air :type gas_specific_gravity: float :param solution_gor_initial: initial reservoir gas-oil ratio in scf/bbl :type solution_gor_initial: float :param salinity: water salinity in weight percent total dissolved solids :type salinity: float :param water_saturation_initial: initial water saturation (V/V) :type water_saturation_initial: float .. py:attribute:: temperature :type: float Temperature in F .. py:attribute:: api_gravity :type: float Oil API gravity .. py:attribute:: gas_specific_gravity :type: float Gas specific gravity .. py:attribute:: solution_gor_initial :type: float Initial gas-oil ratio .. py:attribute:: salinity :type: float :value: 0.0 Salinity (total dissolved solids) .. py:attribute:: water_saturation_initial :type: float :value: 0.0 Initial water saturation .. py:method:: water_FVF(pressure: numpy.typing.NDArray[float] | float) -> numpy.typing.NDArray[float] | float Water formation volume factor (B-factor) from McCain. :param pressure: water pressure in psia :type pressure: np.ndarray :returns: **b_w** -- b-factor in reservoir bbl / standard bbl :rtype: ndarray .. py:method:: water_viscosity(pressure: numpy.typing.NDArray | float) Water viscosity from McCain (1991). :param pressure: water pressure in psia :type pressure: ndarray :returns: **mu_w** -- viscosity in centipoise :rtype: float .. py:method:: gas_FVF(pressure: numpy.typing.NDArray | float, temperature_pseudocritical: float, pressure_pseudocritical: float) -> numpy.typing.NDArray | float Gas formation volume factor (Bg) from Dranchuk and Abou-Kassem (1975). :param pressure: reservoir pressure in psia :type pressure: ndarray :param temperature_pseudocritical: pseudocritical temperature in Fahrenheit. :type temperature_pseudocritical: float :param pressure_pseudocritical: pseudocritical pressure in psia :type pressure_pseudocritical: float :returns: **b_g** -- b-factor (reservoir barrels / scf) :rtype: ndarray .. py:method:: gas_viscosity(pressure: numpy.typing.NDArray | float, temperature_pseudocritical: float, pressure_pseudocritical: float) -> numpy.typing.NDArray | float Calculate the viscosity for gas using Sutton's Fudamental PVT Calculations (2007). :param pressure: reservoir pressure in psia :type pressure: float :param temperature_pseudocritical: pseudocritical temperature in Fahrenheit. :type temperature_pseudocritical: float :param pressure_pseudocritical: pseudocritical pressure in psia :type pressure_pseudocritical: float :returns: **mu_g** -- viscosity_gas (centipoise) :rtype: ndarray .. rubric:: Examples >>> Fluid(400, 35, 0.65, 0).viscosity_gas(100, -102, 649) 0.01652719692109309 .. py:method:: oil_FVF(pressure: numpy.typing.NDArray | float) -> numpy.typing.NDArray | float Calculate the oil formation volume factor (Bo) using Standing. :param pressure: reservoir pressure (psia) :type pressure: float :returns: **b_o** -- :math:`b_o`, the formation volume factor (V/V) :rtype: ndarray .. py:method:: oil_viscosity(pressure: numpy.typing.NDArray | float) -> numpy.typing.NDArray | float Calculate the oil viscosity using Beggs-Robinson. :returns: **mu_o** -- :math:`\mu_o`, the oil viscosity :rtype: ndarray .. py:method:: pressure_bubblepoint() -> float Calculate the bubble point pressure using Standing. :returns: **p_bubble** -- Bubble point pressure in psia. :rtype: float .. rubric:: Examples >>> Fluid(200, 35, 0.8, 650).pressure_bubblepoint() 2627.2017021875276 .. py:function:: 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] Calculate the pseudopressure using Al-Hussainy's relation. :param pressure: :type pressure: NDArray, psi :param viscosity: :type viscosity: NDArray, cp :param z_factor: :type z_factor: NDArray, dimensionless :returns: **m** -- pseudopressure, psia^2 / cp :rtype: NDArray