bluebonnet.flow.flowproperties
Flow properties for reservoir fluids.
Pressure (or pseudo-pressure) changes affect all sorts of things. This module includes structures for storing these pressure-dependent properties in order to aid the reservoir simulators in the reservoir module.
Module Contents
Classes
Flow properties for the system. |
|
Flow properties where only viscosity and compressibility vary with pressure. |
|
Flow properties for the system. |
|
Flow properties for a multiphase system. |
Functions
|
Rescale pseudopressure to be 1 at p_i and 0 at p_frac. |
|
Calculate hydraulic diffusivity for a multiphase (two or three phase) system. |
|
Calculate mobility for three phase system. |
|
Calculate three-phase compressibility. |
|
Calculate pseudopressure over pressure for three-phase fluid. |
|
Brooks-Corey power-law relative permeability. |
|
Make two-phase relative permeability curves from Brooks-Corey. |
Attributes
Alias for |
|
Stores the parameters for a Brooks-Corey relative permeability model. |
- class bluebonnet.flow.flowproperties.FlowProperties(pvt_props: collections.abc.Mapping[str, numpy.ndarray], p_i: float)[source]
Flow properties for the system.
This is used to translate from scaled pseudopressure to diffusivity and to capture the effect of expansion
- pvt_props
has accessors for pseudopressure, alpha, compressibility, viscosity, z-factor
pseudopressure: pseudopressure in psi^2/centipoise
pressure: pore pressure
alpha: hydraulic diffusivity
compressibility: total compressibility
viscosity: dynamic viscosity \(\mu\)
z-factor: compressibility factor, \(Z = p/\rho R T\)
m-scaled: pseudopressure scaled by initial pseudopressure
- Type:
Mapping
- m_i
pseudopressure that corresponds to initial reservoir pressure
- Type:
float
- m_scaled_func
calculates scaled pseudopressure from pressure
- Type:
function
- alpha_func
calculated hydraulic diffusivity from scaled pseudopressure
- Type:
function
- bluebonnet.flow.flowproperties.FlowPropertiesOnePhase
Alias for
FlowProperties
- class bluebonnet.flow.flowproperties.FlowPropertiesSimple(pvt_props: collections.abc.Mapping[str, numpy.ndarray], p_i: float)[source]
Bases:
FlowPropertiesFlow properties where only viscosity and compressibility vary with pressure.
- class bluebonnet.flow.flowproperties.FlowPropertiesTwoPhase(pvt_props: collections.abc.Mapping[str, numpy.ndarray], p_i: float)[source]
Bases:
FlowPropertiesFlow properties for the system.
This is used to translate from scaled pseudopressure to diffusivity and to capture the effect of expansion
References
Ruiz Maraggi, L.M., Lake, L.W. and Walsh, M.P., 2020. “A Two-Phase Non-Linear One- Dimensional Flow Model for Reserves Estimation in Tight Oil and Gas Condensate Reservoirs Using Scaling Principles.” In SPE Latin American and Caribbean Petroleum Engineering Conference. OnePetro. https://doi.org/10.2118/199032-MS
- classmethod from_table(pvt_props: collections.abc.Mapping, kr_props: collections.abc.Mapping, reference_densities: dict, phi: float, Sw: float, p_i: float)[source]
Create FlowProperties from tables.
Using fluid properties from a PVT table and a relative permeability table, builds an interpolator for alpha from pseudopressure
- Parameters:
df_pvt (Mapping) –
table of PVT properties by pressure with co-varying So
columns: pseudopressure, pressure, Bo, Bg, Bw, Rs, Rv, mu_o, mu_g, mu_w, So
df_kr (Mapping) –
table of relative permeabilities
columns: So, Sg, Sw, kro, krg, krw
reference_densities (dictionary of strings pointing to floats) – density at STP for oil, gas, and water rho_o0: oil, rho_g0: gas, rho_w0: water
phi (float) – formation porosity (varies from 0 to 1)
Sw (float) – water saturation (assumes Sw below or equal to Swirr)
fvf_scale (float) – formation volume factor scale for recovery factor
- bluebonnet.flow.flowproperties.rescale_pseudopressure(df_pvt: collections.abc.Mapping[str, numpy.ndarray], p_frac: float, p_i: float) collections.abc.Mapping[str, numpy.ndarray][source]
Rescale pseudopressure to be 1 at p_i and 0 at p_frac.
- Parameters:
df_pvt (Mapping[str,ndarray]) – table of PVT properties, including at least “pressure” and “pseudopressure”
p_frac (float) – pressure at the frac face
p_i (float) – initial reservoir pressure
- Returns:
df_pvt – new table of PVT properties
- Return type:
Mapping[str,ndarray]
- bluebonnet.flow.flowproperties.alpha_multiphase(pressure: numpy.ndarray, So: numpy.ndarray, phi: float, Sw: float, pvt: dict, kr: dict) numpy.ndarray[source]
Calculate hydraulic diffusivity for a multiphase (two or three phase) system.
- Parameters:
pressure (ndarray) – absolute pressure for the cells
So (ndarray) – Oil saturation for the cells
phi (float) – porosity (assumed constant), in range from 0 to 1
Sw (float) – Water saturation (assumed constant)
pvt (dict) –
PVT properties including
rho_x0: density at reference pressure
mu_x: viscosity (function of pressure)
Bx: formation volume factor (function of pressure) for the x-components o (oil), g (gas), w (water)
Rv, Rs: dissolved and free gas (functions of pressure)
kr (dict) –
relative permeability for x-phases (o, g, w)
krx: relative permeability (function of So)
- Returns:
alpha_t – total hydraulic diffusivity
- Return type:
ndarray
- bluebonnet.flow.flowproperties.lambda_combined_func(pressure: numpy.ndarray, So: numpy.ndarray, pvt: dict, kr: dict) numpy.ndarray[source]
Calculate mobility for three phase system.
- Parameters:
pressure (ndarray) – absolute pressure for the cells
So (ndarray) – Oil saturation for the cells
pvt (dict) –
PVT properties including
rho_x0: density at reference pressure
mu_x: viscosity (function of pressure)
Bx: formation volume factor (function of pressure) for the x-components o (oil), g (gas), w (water)
Rv, Rs: dissolved and free gas (functions of pressure)
kr (dict) –
relative permeability for x-phases (o, g, w)
krx: relative permeability (function of So)
- Returns:
lambda_t – mobility for the cells
- Return type:
ndarray
- bluebonnet.flow.flowproperties.compressibility_combined_func(pressure: numpy.ndarray, So: numpy.ndarray, phi: float, Sw: float | ndarray, pvt: dict) numpy.ndarray[source]
Calculate three-phase compressibility.
- Parameters:
pressure (ndarray) – absolute pressure for the cells
So (ndarray) – Oil saturation for the cells
pvt (dict) –
PVT properties including
rho_x0: density at reference pressure
mu_x: viscosity (function of pressure)
Bx: formation volume factor (function of pressure) for the x-components o (oil), g (gas), w (water)
Rv, Rs: dissolved and free gas (functions of pressure)
kr (dict) –
relative permeability for x-phases (o, g, w)
krx: relative permeability (function of So)
- Returns:
cp – Total fluid compressibility for the cells
- Return type:
ndarray
- bluebonnet.flow.flowproperties.pseudopressure_threephase(pressure: numpy.ndarray, So: numpy.ndarray, pvt: dict, kr: dict) numpy.ndarray[source]
Calculate pseudopressure over pressure for three-phase fluid.
- Parameters:
pressure (ndarray) – absolute pressure for the cells
So (ndarray) – Oil saturation for the cells
pvt (dict) –
PVT properties including
rho_x0: density at reference pressure
mu_x: viscosity (function of pressure)
Bx: formation volume factor (function of pressure) for the x-components o (oil), g (gas), w (water)
Rv, Rs: dissolved and free gas (functions of pressure)
kr (dict) –
relative permeability for x-phases (o, g, w)
krx: relative permeability (function of So)
- Returns:
pseudopressure
- Return type:
ndarray
- class bluebonnet.flow.flowproperties.FlowPropertiesMultiPhase(df: collections.abc.Mapping[str, numpy.ndarray])[source]
Bases:
FlowPropertiesFlow properties for a multiphase system.
This is used to translate from scaled pseudopressure and saturations to diffusivity and to capture the effect of expansion
- Parameters:
df (Mapping) –
has columns for pseudopressure, alpha, So, Sg, Sw
pseudopressure: pseudopressure scaled from 0 for frac face, 1 for initial reservoir conditions
alpha: hydraulic diffusivity (needn’t be scaled)
So: oil saturation
Sg: gas saturation
Sw: water saturation
fvf_scale (dict) – includes Bo,Bg,Bw at initial conditions divided by FVF at the frac face
- bluebonnet.flow.flowproperties.RelPermParams
Stores the parameters for a Brooks-Corey relative permeability model.
- Parameters:
n_o (float) – Exponent for oil relative permeability
n_w (float) – Exponent for water relative permeability
n_g (float) – Exponent for gas relative permeability
S_or (float) – Residual saturation for oil (zero permeability point)
S_wc (float) – Residual saturation for water (zero permeability point)
S_gc (float) – Residual saturation for gas (zero permeability point)
k_ro_max (float) – Maximum relative permeability of the oil phase
k_rw_max (float) – Maximum relative permeability of the water phase
k_rg_max (float) – Maximum relative permeability of the gas phase
- bluebonnet.flow.flowproperties.relative_permeabilities(saturations: numpy.ndarray, params: RelPermParams) numpy.ndarray[source]
Brooks-Corey power-law relative permeability.
\[\begin{split}k_{ro} = k_{ro,max}\left(\frac{S_o - S_{or}}{1-S_{or}-S_{wr}-S_{gr}}\right) \\ k_{rw} = k_{rw,max}\left(\frac{S_w - S_{wr}}{1-S_{or}-S_{wr}-S_{gr}}\right) \\ k_{rg} = k_{rg,max}\left(\frac{S_g - S_{gr}}{1-S_{or}-S_{wr}-S_{gr}}\right)\end{split}\]- Parameters:
saturations (ndarray, specifically a record array) – records include So, Sg, Sw
params (RelPermParams) – Includes Corey exponents, residual saturations, and max relative permeabilities
- Returns:
k_rel – records include k_o, k_w, k_g (aka oil, water, gas)
- Return type:
numpy record array
References
Brooks, R.H. and Corey, A.T. 1964. Hydraulic Properties of Porous Media. Hydrology Papers, No. 3, Colorado State U., Fort Collins, Colorado.
- bluebonnet.flow.flowproperties.relative_permeabilities_twophase(params: RelPermParams, Sw: float = 0.1) pandas.DataFrame[source]
Make two-phase relative permeability curves from Brooks-Corey.
- Parameters:
params (RelPermParams) – Includes Corey exponents, residual saturations, and max relative permeabilities
- Returns:
df_kr – k_rx for saturations. Includes the columns “So”,”Sw”,”Sg”,”kro”,”krw”,”krg”
- Return type:
pd.DataFrame
Examples
>>> relperm_params = RelPermParams( n_o=1, n_g=1, n_w=1, S_or=0, S_gc=0, S_wc=0.1, k_ro_max=1, k_rw_max=1, k_rg_max=1 ) >>> relative_permeabilities_twophase(relperm_params, 0.1)