bluebonnet.flow.reservoir¶
reservoir: scaling solutions for hydrofractured wells.
This module calculates the scaling curves, using flow properties and finite difference methods.
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. |
Module Contents¶
- 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 | numpy.typing.NDArray¶
drawdown pressure at \(x=0\) (psi)
- pressure_initial: float¶
reservoir pressure before production (psi)
- fluid: bluebonnet.flow.flowproperties.FlowProperties | None = None¶
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: numpy.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: numpy.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 = 0.0¶
- 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 = 1.0¶
Initial oil saturation.
- Sw_init: float = 0.0¶
Initial water saturation.
- Sg_init: float = 0.0¶
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