Skip to content

Independent Phase Forecasting

The Secondary phase (gas when oil is primary, or oil when gas is primary) and the Water phase can now be forecast independently from the primary phase, each with its own method, decline model and parameter set. This lets you mix, for example, a Modified Hyperbolic decline on the primary phase with a GOR mathematical trend on the secondary phase and a WOR projection on the water phase, all in the same forecast.

Location: Analysis → Forecasting in four flows: Multi-Well DCA, Single-Well DCA, Type Well (User defined) and Type Well (From statistics).


1. Quick concepts

TermWhat it means
Primary phaseThe phase the DCA fits first — oil or gas (chosen at the top of the form).
Secondary phaseThe other hydrocarbon phase. If primary is oil, secondary is gas; if primary is gas, secondary is oil. Can be forecast via DCA Models, GOR or CGR.
Water phaseAlways water. Can be forecast via Water cut, DCA Models or WOR — or skipped entirely.
Forecast methodThe high-level strategy for a phase (DCA Models, GOR, CGR, Water cut, WOR). Selects which decline model and which parameters are shown below.
Decline modelThe mathematical shape inside a method (Hyperbolic, Constant, Manual trend, Auto trend, etc.).

The form is fully conditional — picking a method shows only the parameters that method needs, and picking a decline model inside that method narrows the parameters further. You never see fields that don’t apply to the choice you made.


2. Secondary phase

The Secondary phase block appears below the primary-phase DCA inputs in every flow. It is collapsed when the Forecast method is set to No secondary phase.

2.1 Forecast method

The top dropdown of the Secondary phase block selects the forecast method:

LabelWhen to use
DCA ModelsFit a decline curve directly to the secondary-phase rate. Use when the secondary phase has a clear, well-behaved decline of its own. Available in Multi-Well, Single-Well and Type Well (User defined).
GORProject the gas-oil ratio with a mathematical model; the secondary rate is derived from primary rate × GOR. Use when you trust the primary forecast and want the secondary tied to it. Available in every flow.
CGRSame idea as GOR but with the condensate-gas ratio. Use for gas-primary wells with condensate. Available in every flow.
No secondary phaseSkip the secondary forecast entirely.

2.2 DCA Models

Selecting DCA Models opens the standard decline-curve section, with its own decline-model dropdown:

  • Exponential
  • Hyperbolic
  • Modified Hyperbolic
  • Power Law Exponential
  • Stretched Exponential

The fields shown below depend on the model:

Decline modelFields
ExponentialDi
Hyperbolicb, Di
Modified Hyperbolicb, Di, Exp switch (by decline rate / by time), Exp switch value
Power Law Exponentialn, Decline rate at t=∞
Stretched Exponentialn, Di

Two checkboxes apply to all DCA Models:

  • Fix forecast to last historical value — anchors the start of the forecast to the last observed rate of the secondary phase.
  • Filter outliers — ignores statistical outliers when fitting.

2.3 GOR

Selecting GOR opens the GOR section, with its own decline-model dropdown:

Decline modelWhat it does
ConstantHolds a constant GOR forward. The value comes from the GOR constant sub-selector (see below).
ManualUses a user-defined trend: a parameter [1–20], GOR Initial Value, GOR Max, GOR Final, Np@BubblePoint (or Gp@DewPoint for gas-primary wells), Np@GOR Max and Np@GOR Final.
AutomaticFits the GOR trend automatically — no parameters to enter.

When the decline model is Constant, a sub-selector GOR constant appears:

OptionWhat it means
Last historical GORUse the GOR of the last historical point.
User definedUse the value typed in GOR Value.
Historical averageUse the mean GOR over the well’s history.

The Fix forecast to last historical value checkbox is shown for Manual and Automatic only — it is implicit in Constant.

2.4 CGR

Selecting CGR opens the CGR section, used when the primary phase is gas, with its own decline-model dropdown:

Decline modelWhat it does
ConstantHolds a constant CGR forward. The value comes from the CGR constant sub-selector (see below).
Manual trendUses a user-defined trend with a parameter, b exponent and CGR limit.
Auto trendFits the CGR trend automatically — no parameters to enter.
AutomaticFully automatic CGR projection.

When the decline model is Constant, a sub-selector CGR constant appears:

OptionWhat it means
Last Historical CGRUse the CGR of the last historical point.
User definedUse the value typed in CGR Value.
Historical averageUse the mean CGR over the well’s history.

When the decline model is Manual trend, three fields appear:

  • a parameter
  • b exponent
  • CGR limit

Both Fix forecast to last historical value and Filter outliers checkboxes apply to all CGR decline models.


3. Water phase

The Water phase block appears below the Secondary phase block. It is collapsed when the Forecast method is set to No water phase.

3.1 Forecast method

LabelWhen to use
Water cutForecast water cut and derive water rate from oil rate × Wcut / (1 − Wcut). Default and most common choice.
DCA ModelsFit a decline curve directly to the water rate. Use when the water phase has its own clear behaviour, not coupled to oil.
WORProject the water-oil ratio with a mathematical model; water rate is derived from primary rate × WOR.
No water phaseSkip the water forecast entirely.

In Type Well (From statistics), the first option appears with the shorter label WCUT and behaves exactly the same.

3.2 Water cut

Selecting Water cut opens the Water-cut section. Inside it, a second dropdown labelled Wcut Forecast method picks the sub-method:

Wcut Forecast methodWhen to use
ManualProvide Initial value, Flowback time, b and Di explicitly.
ConstantHold Wcut constant; pick the source from the sub-selector below (User defined, Last historical Wcut or Historical average Wcut).
AutomaticFits a Wcut decline curve automatically.

When Wcut Forecast method is Constant and the sub-option is User defined, a numeric Wcut value appears (range 0–1). When it is Historical average Wcut, a Start time average appears (in days).

The Fix forecast to last historical value checkbox is shown for Manual and Automatic.

3.3 DCA Models

Same structure as Section 2.2 — five decline models and the same set of conditional parameters, but applied to the water phase.

Both Fix forecast to last historical value and Filter outliers apply.

3.4 WOR

Selecting WOR opens the WOR section with its own decline-model dropdown:

Decline modelWhat it does
ConstantHolds a constant WOR forward. The value comes from the WOR constant sub-selector.
Constant Last HistoricalUse the WOR of the last historical point.
Constant Historical AverageUse the mean WOR over the well’s history.
Manual trendUses a user-defined trend (a parameter, b exponent, WOR limit, Water cut limit).
Auto trendFits a trend automatically (WOR limit, Water cut limit).

When the decline model is Constant, a sub-selector WOR constant appears:

OptionWhat it means
Last Historical WORUse the WOR of the last historical point.
User definedUse the value typed in WOR Value.
Historical averageUse the mean WOR over the well’s history.

The Fix forecast to last historical value checkbox is shown for Manual trend and Auto trend.

3.5 WGR

Selecting WGR opens the WGR section with its own decline-model dropdown:

Decline modelWhat it does
ConstantHolds a constant WGR forward. The value comes from the WGR constant sub-selector.
Constant Last HistoricalUse the WGR of the last historical point.
Constant Historical AverageUse the mean WGR over the well’s history.
Manual trendUses a user-defined trend (a parameter, b exponent, WGR limit, Water cut limit).
Auto trendFits a trend automatically (WGR limit).

When the decline model is Constant, a sub-selector WGR constant appears:

OptionWhat it means
Last Historical WGRUse the WGR of the last historical point.
User definedUse the value typed in WGR Value.
Historical averageUse the mean WGR over the well’s history.

The Fix forecast to last historical value checkbox is shown for Manual trend and Auto trend.


4. Per-flow differences

The same Secondary and Water phase logic appears in Multi-Well DCA, Single-Well DCA, Type Well (User defined) and Type Well (From statistics), but with different field shapes and different sets of available options.

4.1 Multi-Well DCA

  • All DCA inputs are ranges (b min / b max, Di min / Di max, n min / n max). One value per well is picked from inside the range when the forecast is computed.
  • All Forecast methods and decline models documented in sections 2 and 3 are available without restriction.
  • Default Secondary forecast method: GOR with decline model Constant and constant value Last historical GOR.
  • Default Water forecast method: Water cut with Wcut Forecast method Automatic.

4.2 Single-Well DCA

  • All DCA inputs are single values (b, Di, n, Tpeak, qi).
  • All Forecast methods and decline models from Multi-Well are available.
  • Pre-fill from a Multi-Well forecast: when you open Single-Well DCA for a well that already has a Multi-Well forecast, the Secondary and Water phase fields are pre-filled with:
    • The method, decline model and checkboxes you used in Multi-Well.
    • The per-well fitted DCA values for that specific well (b, n, Di, qi, Tpeak).
    • If a value was not fitted per well, the midpoint of the Multi-Well min/max range is used as a starting point.
    • GOR, CGR and WOR sub-options (Constant value, Manual parameters, limits, etc.) are copied verbatim from the Multi-Well forecast.
  • EUR BOE is shown as an additional result row in the form (alongside EUR Oil, EUR Gas, EUR Water, EUR Liquid). The unit follows the project’s BOE unit setting.

4.3 Type Well (User defined)

Type Wells represent a hand-crafted “what-if” curve rather than a fit to a specific well’s history, so several data-driven options are intentionally hidden:

SectionHidden options
Secondary — Forecast methodSame as Multi-Well (DCA Models, GOR, CGR, No secondary phase)
Secondary — GOR decline modelOnly Constant and Manual are available (Automatic hidden)
Secondary — GOR constantOnly User defined is available (Last historical GOR and Historical average hidden)
Secondary — CGR decline modelOnly Constant and Manual trend are available (Auto trend and Automatic hidden)
Secondary — CGR constantOnly User defined is available (Last Historical CGR and Historical average hidden)
Secondary — DCA Models checkboxesFix forecast to last historical value and Filter outliers are hidden
Water — Wcut Forecast methodOnly Manual and Constant are available (Automatic hidden)
Water — Wcut constantOnly User defined is available
Water — WOR decline modelOnly Constant and Manual trend are available (Constant Last Historical, Constant Historical Average and Auto trend hidden)
Water — WOR constantOnly User defined is available
Water — WGR decline modelOnly Constant and Manual trend are available (Constant Last Historical, Constant Historical Average and Auto trend hidden)
Water — WGR constantOnly User defined is available
Water — DCA Models checkboxesFix forecast to last historical value and Filter outliers are hidden

EUR BOE is shown as an additional result row in Type Well (User defined) when available, alongside EUR Oil / Gas / Water / Liquid.

Everything else behaves the same as Single-Well.

4.4 Type Well (From statistics)

The statistics-based Type Well builds an aggregate type curve from the statistics of a well group, so even more options are hidden than in the User-defined flow:

SectionHidden options
Secondary — Forecast methodDCA Models is hidden (only GOR, CGR and No secondary phase are available)
Secondary — GOR decline modelOnly Constant and Manual are available (Automatic hidden)
Secondary — GOR constantOnly User defined is available
Secondary — CGR decline modelOnly Constant and Manual trends are available
Secondary — CGR constantOnly User defined is available
Water — Forecast methodFirst option appears as WCUT. Only WCUT and No water phase are available — DCA Models and WOR are hidden
Water — Wcut Forecast methodOnly Manual and Constant are available (Automatic hidden)
Water — Wcut constantOnly User defined is available

Because WOR is unavailable here, the WOR section described in 3.4 does not appear. Likewise, the Secondary phase DCA Models section is unreachable.


5. Common workflows

Workflow A — Switching the secondary method on a Multi-Well forecast

  1. Open Multi-Well DCA and configure the primary phase as usual.
  2. Scroll to the Secondary phase block.
  3. Pick GOR, CGR or DCA Models in the Forecast method dropdown — the decline-model dropdown below changes accordingly.
  4. Pick a decline model and fill in the parameters shown.
  5. Repeat for the Water phase block.
  6. Run the forecast. All wells use the same method, with per-well fitted values inside the ranges you provided.

Workflow B — Tuning one well in Single-Well after a Multi-Well run

  1. With a Multi-Well forecast already computed, open Single-Well DCA and pick the well from the well selector.
  2. The form is pre-filled with the Multi-Well configuration and that well’s fitted values for both Secondary and Water phases.
  3. Edit only the field(s) you want to change — method, decline model, single DCA value, sub-option, etc.
  4. Re-run the Single-Well forecast for that well; the rest of the Multi-Well forecast is untouched.

Workflow C — Building a Type Well with explicit GOR + WOR

  1. Open Type Well → User defined and configure the primary DCA.
  2. In Secondary phase, pick GOR and decline model Manual.
  3. Enter the GOR profile (a parameter, GOR Initial, GOR Max, GOR Final, Np@BubblePoint, Np@GOR Max, Np@GOR Final).
  4. In Water phase, pick WOR and decline model Manual trend.
  5. Enter a parameter, b exponent, WOR limit and Water cut limit.
  6. Save the Type Well. It will project gas from oil × GOR and water from oil × WOR, both with your hand-built shapes.

Workflow D — Disabling a phase

  1. In the relevant block, set the Forecast method dropdown to No secondary phase or No water phase.
  2. All other fields collapse; the forecast will report zero rate for that phase.

6. FAQ

Does the “Secondary phase” change from gas to oil depending on the primary phase? Yes. The secondary phase is whichever hydrocarbon is not the primary phase. A gas-primary well’s secondary phase is oil. The dropdown labels stay the same, but the GOR semantics swap accordingly (Gp@DewPoint instead of Np@BubblePoint, for example).

I picked GOR but the constant dropdown still says “Last historical WOR”. That label appears on the Water phase WOR block, not the Secondary phase GOR block. Make sure you are looking at the right section.

I edited the secondary phase in Single-Well, but my Multi-Well forecast didn’t change. Correct — Single-Well edits live in their own forecast. To push a Single-Well change back into a Multi-Well forecast, re-run Multi-Well with the new parameters.

Why is “Automatic” missing from WOR / CGR / GOR in Type Well? Type Wells are meant to be hand-crafted curves, not fits to a specific well’s history. The Automatic / Auto trend options are hidden because they need a specific well’s data to fit against.

Why does the Water Phase appear as “WCUT” in Type Well (From statistics) but “Water cut” everywhere else? The label is intentionally shorter in the From-statistics flow. The behaviour is the same.

Can the primary, secondary and water phases use three different decline models? Yes. The three blocks are fully independent. A primary Modified-Hyperbolic + secondary GOR Manual + water WOR Auto trend is a valid combination.

The water-rate and secondary-rate charts show the decline parameters of which phase? They show the parameters of their own phase when that phase is forecast with DCA Models. Earlier versions always showed the primary-phase parameters; this has been fixed.

Does “Filter outliers” affect the primary phase? No. The Secondary and Water “Filter outliers” checkboxes are scoped to their own phase. The primary phase has its own outlier filter in the primary block.

My Single-Well form opened with a default GOR Value after I selected a well. Is that the Multi-Well value? The form copies the GOR method, decline model and sub-option from Multi-Well. The GOR Value field, however, is only used when the sub-option is User defined — if Multi-Well used a different sub-option, the value stays at its default. Change the sub-option in Single-Well if you want to override.


Technical Appendix: Mathematical Formulations and Calculation Methods

This appendix provides the exact mathematical formulations used by the forecasting engine across the various calculation modules (condensate_gas_ratio.py, decline_curve_analisis.py, forecast_water.py, gas_oil_ratio.py, water_gas_ratio.py, and water_oil_ratio.py).

1. Decline Curve Analysis Models (DCA Models)

When a phase is configured to use DCA Models, the forecasting engine applies one of the following classic rate-time relationships:

  • Exponential Decline: q(t)=qieDitq(t) = q_i \cdot e^{-D_i \cdot t} Where q(t)q(t) is the calculated production rate at forecast time tt, qiq_i is the theoretical initial rate, and DiD_i is the nominal decline rate.

  • Hyperbolic Decline: q(t)=qi(1+bDit)1/bq(t) = \frac{q_i}{(1 + b \cdot D_i \cdot t)^{1/b}} Where bb is the hyperbolic exponent parameter (0<b10 < b \le 1).

  • Power Law Exponential Decline (SPE 116731): q(t)=qie(tτ)nDtq(t) = q_i \cdot e^{-\left(\frac{t}{\tau}\right)^n - D_{\infty} \cdot t} Where τ\tau is the characteristic transition time, nn is the time exponent, and DD_{\infty} is the decline rate at infinite time.

  • Stretched Exponential Decline: q(t)=qie(tτ)nq(t) = q_i \cdot e^{-\left(\frac{t}{\tau}\right)^n} A specialized variation omitting the infinite-time terminal decline component.


2. Hydrocarbon Ratio Calculations (Secondary Phase)

2.1 Gas-Oil Ratio (GOR)

The relationship between gas and oil phases can be projected through several sub-options:

  • Instantaneous Ratio (Historical Baseline): GOR=qgasqoil\text{GOR} = \frac{q_{\text{gas}}}{q_{\text{oil}}}

  • Manual Trend Model (Modified SPE-197096-MS): Fitted against forecast time tt to model transient fluid behaviors: GOR(t)=GORf(GORiGORf)eat\text{GOR}(t) = \text{GOR}_f \cdot \left(\frac{\text{GOR}_i}{\text{GOR}_f}\right)^{e^{-a \cdot t}} Where GORi\text{GOR}_i is the initial ratio, GORf\text{GOR}_f is the target final ratio, and aa is the curvature parameter controlling the inflection slope.

  • Automatic Trend Model (Oil Primary): Combines the time-dependent transient curve with coefficients optimized against the well’s specific peak rates and estimated ultimate recovery (EUR) milestones.

2.2 Condensate-Gas Ratio (CGR)

For retrograd gas systems where gas is the primary phase, the associated oil/condensate is calculated using:

  • Instantaneous Calculation: CGR=qoilqgas\text{CGR} = \frac{q_{\text{oil}}}{q_{\text{gas}}}

  • Exponential Trend Model: Modeled as a function of cumulative primary production (NpN_p or GpG_p) rather than time alone: CGR(Np)=aebNp\text{CGR}(N_p) = a \cdot e^{b \cdot N_p} Where aa and bb are the intercept and exponent parameters derived from regression analysis.


3. Water Phase Relationship Models

3.1 Water-Oil Ratio (WOR)

The water advancement profile is traditionally matched against cumulative oil production to represent physical reservoir displacement features:

  • Instantaneous Calculation: WOR=qwaterqoil\text{WOR} = \frac{q_{\text{water}}}{q_{\text{oil}}}

  • Automatic Exponential WOR Trend (WOR Auto): The software executes a first-order polynomial fit (least-squares linear regression) on the log-transformed historical data: ln(WOR)=ln(a)+bNp\ln(\text{WOR}) = \ln(a) + b \cdot N_p Extrapolating this into the future yields the forecast equation: WOR(Np)=aebNp\text{WOR}(N_p) = a \cdot e^{b \cdot N_p} Where NpN_p is the cumulative oil production.

3.2 Water-Gas Ratio (WGR)

For gas-dominated wells, water production is explicitly modeled against the primary gas rates: WGR=qwaterqgas\text{WGR} = \frac{q_{\text{water}}}{q_{\text{gas}}}


4. Fluid Rate Cross-Conversions and Safeguards

To maintain perfect volumetric balance across all selected forecasting configurations, the platform implements strict mathematical conversion rules:

  • Deriving Water Rate from Water Cut (fwf_w): qwater=fwqoil1fwq_{\text{water}} = \frac{f_w \cdot q_{\text{oil}}}{1 - f_w}

  • Calculating Water Cut (fwf_w) from Rates: fw=qwaterqoil+qwaterf_w = \frac{q_{\text{water}}}{q_{\text{oil}} + q_{\text{water}}}

  • Deriving Water Rate from WOR: qwater=WORqoilq_{\text{water}} = \text{WOR} \cdot q_{\text{oil}}

  • Numerical Stability Safeguards: To guarantee convergence and avoid code execution termination due to math errors during multi-well automated processing, any division by zero or empty array element is explicitly caught and replaced using numerical masks: rate[isnan(rate)isinf(rate)]=0.0\text{rate}[\text{isnan}(\text{rate}) \mid \text{isinf}(\text{rate})] = 0.0 Additionally, forecasted Water Cut is structurally capped between [0.0,1.0][0.0, 1.0].