bluebonnet.flow.reservoir
reservoir: scaling solutions for hydrofractured wells.
This module calculates the scaling curves, using flow properties and finite difference methods.
Module Contents
Classes
Class for building scaling solutions of production from hydrofractured wells. |
|
Single-phase real fluid reservoir. |
|
Oil-gas reservoir simulation. |
|
Reservoir with three phases: oil, gas, and water all flowing. |
- class bluebonnet.flow.reservoir.IdealReservoir[source]
Class for building scaling solutions of production from hydrofractured wells.
This maintains simulation parameters and fluid properties.
- Parameters:
nx (int) – number of spatial nodes
pressure_fracface (float | NDArray) – drawdown pressure at x=0 (psi)
pressure_initial (float) – reservoir pressure before production (psi)
fluid (FlowProperties) – reservoir fluid PVT/flow properties
- nx: int
number of spatial nodes
- pressure_fracface: float | npt.NDArray
drawdown pressure at \(x=0\) (psi)
- pressure_initial: float
reservoir pressure before production (psi)
- fluid: bluebonnet.flow.flowproperties.FlowProperties
reservoir fluid PVT/flow properties
- simulate(time: numpy.ndarray)[source]
Calculate simulation pressure over time.
- Parameters:
time (ndarray) – times to solve for pressure
- recovery_factor(time: ndarray | None = None, density=False) numpy.ndarray[source]
Calculate recovery factor over time.
If time has is not specified, requires that simulate has been run
- Parameters:
time (ndarray, Optional) – times to calculate recovery factor at
- Returns:
recovery – recovery factor over time
- Return type:
ndarray
- class bluebonnet.flow.reservoir.SinglePhaseReservoir[source]
Bases:
IdealReservoirSingle-phase real fluid reservoir.
- simulate(time: numpy.ndarray[float], pressure_fracface: ndarray[float] | None = None)[source]
Calculate simulation pressure over time.
- Parameters:
time (ndarray) – times to solve for pressure
pressure_fracface (Iterable[float] | None, optional) – pressure at frac-face over time. Defaults to None, which is no change
- Raises:
ValueError – wrong length changing pressure at frac-face:
- class bluebonnet.flow.reservoir.TwoPhaseReservoir[source]
Bases:
SinglePhaseReservoirOil-gas reservoir simulation.
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
- Sw_init: float
- class bluebonnet.flow.reservoir.MultiPhaseReservoir[source]
Bases:
SinglePhaseReservoirReservoir with three phases: oil, gas, and water all flowing.
- Parameters:
nx (int) – number of spatial nodes
pressure_fracface (float | NDArray) – drawdown pressure at x=0 (psi)
pressure_initial (float) – reservoir pressure before production (psi)
fluid (FlowProperties) – reservoir fluid PVT/flow properties
So_init (float) – oil saturation at the beginning
Sw_init (float) – water saturation
Sg_init (float) – gas saturation
- So_init: float
Initial oil saturation.
- Sw_init: float
Initial water saturation.
- Sg_init: float
Initial gas saturation.
- abstract simulate(time: numpy.ndarray)[source]
Calculate simulation pressure over time.
- Parameters:
time (ndarray) – times to solve for pressure
- alpha_scaled(pseudopressure: numpy.ndarray, saturation: numpy.ndarray) numpy.ndarray[source]
Calculate scaled diffusivity given pseudopressure and saturations.
- Parameters:
pseudopressure (ndarray) – scaled pseudopressure
saturation (ndarray) – record array with So, Sg, Sw records
- Returns:
alpha – scaled diffusivity
- Return type:
ndarray