Skip to content

Reservoir Simulation - Probabilistics

This module enables user to perform probabilistics analysis on one or more variables at once.

As shown in the GIF below, the probabilistic feature can be used to generate probabilistic simulation results for chosen variables by repeated sampling of the distributions selected for these variables and rerunning the numerical model - as many times as the chosen number of cases. The results generated will first be sorted by error to exclude the cases above the error threshold, and only the qualified cases are ordered for the computation of the P90, P50, P10 and the flowing confidence interval (shaded areas) in the displayed plots and summary results table.


At least one variable is required to perform this analysis. The number of cases can be changed with minimum of 1 and maximum of 300 cases.

There are four distribution types with different inputs required:

  1. Constant: Value
  2. Uniform: Minimum and maximum value
  3. Triangular: Minimum, peak, and maximum value
  4. Normal: Minimum (p90), maximum (p10), mean value and standard deviation
  5. Log-Normal: Minimum (p90), maximum (p10), mean value and standard deviation

"View Summary" button can be used to see the summary of p90, p50, p10, mean and standard deviation of the variables in numbers. One can also export the summary and/or the simulated results by clicking the "Export" button.

If you recall, the Numerical Model section has the following toggles -

Toggles for h and xe in numerical model settings

Here, if the toggles are switched on, the reservoir height and reservoir half-length are always enforced to be equal to fracture height (hf) and fracture half-length (xf) in all simulations - this includes simulation calls via cases in sensitivities and probabilistics.

The default behavior in the probabilistics feature when running probabilistics with xe (Reservoir half-length) and xf (Fracture half-length) -

  1. If you have xe=xf in the model (toggle is on) - Then any specified xe values are ignored for the given xf in probabilistics and xe is enforced to be equal to this xf in the probabilistics case. Base case xf is set as xe if xf is not provided.
  2. If you have xe not equal to xf (toggle is off) - Then specified values of xe are used, and if they are blank, the base case xe is used.

Essentially, sensitivities and probabilistics cannot override these toggles. To freely adjust xe and h, go to the history matching section and turn off these toggles on the Numerical Model card and click save before running sensitivities. Similar behavior when toggle is on/off for the other pair of variables - hf | h

1. Definition of P10, P50, P90

First cases are ordered/ranked by cumulative production at end of history.

  • Dry gas and wet gas are ranked by cumulative gas production at end of history.
  • Black oils, volatile oils, near-critical fluids and gas condensates are ranked by cumulative oil production at end of history.

In the software we have chosen to define p10 case as the 10th percentile best-case scenario. In a similar manner, p90 is the 90th percentile best case and p50 is the average.

Why do we do it like this?

We want the p10 case of gas to match the p10 case of water (and oil when relevant).

If we assumed a normal distribution at every point and used the rates to calculate the standard deviation for every point to define the p10 case in for each plot, then the p10 stems of gas, water and oil would have no physical connection between them. This would not make sense.

However, a normal distribution on every point (or a flowing confidence interval) provides a lot of insight as well. The colored area is meant to visualize this:

  • the middle of the dark area is the average,
  • edges of the dark area are one standard deviation outside,
  • edges of the light-colored area are two standard deviations outside.

What does this mean: if you run a new case with inputs inside the boundaries you have set, there is a ~95% probability that the simulation will exist within the entire colored area (roughly estimated as we do not account for covariances)

Summary: p10, p50 and p90 cases are the same physical simulations in every plot. Colored areas are the 1- and 2-sigmas confidence interval for a new simulation.

2. Error Calculation

whitson+ facilitates regression on parameters to minimize the sum of squares of weighted residuals in the context of observed data and corresponding predictions. The objective function in is defined as:

Here, represents the RMS residual error between observed measurement and its corresponding prediction, while is the user-assigned weighting factor for that residual. Ideally, these weighting factors should be inversely proportional to the standard deviations of the residuals. Minimizing in provides the maximum likelihood estimation of the model parameters, assuming independent and normally distributed residuals.

The default weighting factors are 1, while they can also be set to 0 (no importance), and 10 (high importance). Reported is a root-mean-square (RMS) residual error () defined as:

This metric is related to but is more easily interpreted.

The residuals are calculated as relative percentages using the formula:

where is the historical production value, is the simulated value, and is the reference value for observation . Historical production values that is 0 is excluded from the error calculation, while historical production values that has a higher error than 100% is set to 100% error (to avoid that individual outliers dominate the whole error calculation). A failed numerical run is attributed an error of 101%, ensuring that successful cases are always favored

3. Running Probabilistics - Targets, Objectives, Weights and Error Thresholds

In the Numerical Model - Probabilistics view, click on the Edit button on the probabilistics card. This opens a dialog box for probabilistic case settings and results are generated with three simple steps -

  1. Select Variables - Choose from a range of available variables to run probabilistic simulations.
  2. Set Limits - Choose the number of cases to run and set up a distribution (from the types above) for each chosen variable to sample values from.
  3. Weight Factors - Choose the main objective functions (matching oil rate, gas rate, water rate, BHP or all of them) to compute error against by enabling the weight factor for that stream. You can also add an error threshold here, where all cases resulting in errors above the error threshold will be excluded from the P90, P50 and P10 calculations.

Weight factors used in Numerical Model - History Matching

💡 Weight factors used in history matching are carried over to the probabilistic feature to rank cases.

In history matching, if you have manually increased the weights of certain/all parts of well pressure production history (default 1, high importance 10, no importance 0 - typically used for autofitting the numerical model parameters), the same is honored when calculating the total RMS error for each probabilistic case. If a stream is toggled off, the weight factors for that stream are all set to zero so it will not be used to calculate the total RMS error of the case.