Gaining full understanding of the mass of uncertain variables and the range of objectives in a reservoir simulation model requires multiple realization workflows. At Ridgeway Kite we regard the need for a comprehensive multiple realization capability as a fundamental requirement in a simulator. Hence in 6X this is not a separate module/application or an “optional extra” that may also require a multitude of software licenses to run effectively. It is an integral part of the core system.
The current practice of reservoir simulation is as much about understanding the implication of what you don’t know, as it is about understanding the importance of what you do know. One approach enhances confidence in the predictive application of the model by calibrating it using a history matching process. The other seeks to quantify the impact of the inherent uncertainties in terms of sensitivity analysis of uncertain parameters to an objective.
Both approaches require multiple realizations of the model to be run in as short a time as possible in order to converge on a history match, or to understand the impact and range of uncertainties.
Modern computing clusters make the use of multiple realization workflows practical from a raw compute perspective. However, running thousands of simulation cases using a traditional simulator, designed originally for serial operation, will create a large number of output files that need further processing to generate useful results or insights. This processing step is still largely done in an ad hoc manner in many current simulators, often in serial, and hence limits the applications as well as failing to utilize the performance available with the cluster.
The Tornado chart above illustrates the relative sensitivity of multiple variables on the total oil in place
By uniquely implementing a multiple realization engine within 6X, using modern parallel techniques, Ridgeway Kite provides a step change in the usability, reliability, consistency and performance of these workflows in a fully integrated environment.
6X offers the following Multiple Realization capabilities:


 Sensitivities & Monte Carlo
 Experimental Design
 History Matching
 Development Optimization
 Well Placement Optimization
 Optimization under Uncertainty
 Objective Function Evaluation
 Probabilistic Multiple Solutions
 Uncertainty Quantification (Forecasting)

Sensitivities & Monte Carlo
Study the sensitivity of a model to uncertain variables. The user can define either an individual, combination or Monte Carlo set of runs. There are options to:


 Create a response surface (of all or a selected set of summary vectors)
 Output statistics from the response surface
 Output statistics from the simulation runs
 Create Tornado, variable sensitivity and distribution plots

Evaluation of the sensitivity of total production and its range against a series of variables
Experimental Design
Establish causeandeffect relationships between the model uncertainties and the simulation results. The following Experimental Designs have been implemented:


 Full Factorial (L2 & L3)
 Orthogonal Vectors
 Central Composite
 PlackettBurman
 BoxBehnken
 Latin Hypercube

The same options for creating response surfaces, etc. are available.
The use of a proxy model with results from a small number of simulations to show a statistical sample of probable total production.
History Matching
Match a simulation model to a set of observed pressure, volume or rate data. The user defines a history match objective function and an optimizer. The starting point of a history match is an Experimental Design. 6X has two optimizers: Kriging Genetic Algorithm; and, Estimation of Distribution Algorithm (Equal Width). The optimizers generate a set of additional runs to be performed at each iteration (loop). There are options to:


 Choose from a standard set of match quality components: volumes, rates, and pressures
 Select the type of the error terms: signed, absolute, and SQRT
 Create complex match quality definition by including scripting variables and defining custom match components
 Include an Investigation phase (before the Optimizer) where an additional set of runs are generated via an Artificial Neural Network or Kriging
 Stop and control the Optimizer by setting the maximum number of loops, the number or runs at each loop, the elapsed time and a tolerance
 Output the results to HTML, CSV and/or Excel files
 Keep the N best runs overall or per loop

The above figure shows the reduction of the objective function during a history match run.
Development Optimization
Similarly, for Development Optimization, the user defines a development optimization objective function and an optimizer. The development optimization objective function can be more complex than a history match objective function as it includes financial variables, such as CAPEX & OPEX costs, as well as price details.
The starting point of a development optimization is an Experimental Design. 6X has two optimizers: Kriging Genetic Algorithm; and, Estimation of Distribution Algorithm (Equal Width). The optimizers generate a set of additional runs to be performed at each iteration (loop). There are options to:


 Choose from a standard set of objective function types:

 DP: discounted/undiscounted production volume
 RF: Recovery factor
 NPV: Net Present Value
 IRR: Internal rate of return
 MAXEXP: Maximum exposure (maximum negative cashflow)
 PAYBACK: the payback period

 Create complex objective functions by including scripting variables in the functions
 Perform optimisation under uncertainty, in which, the objective function is calculated from the objective function’s response surface across a set of subsurface models
 Include an Investigation phase (before the Optimizer) where an additional set of runs are generated via an Artificial Neural Network or Kriging
 Stop and control the Optimizer by setting the maximum number of loops, the number or runs at each loop, the elapsed time and a tolerance
 Output the results to HTML, CSV and/or Excel files
 Keep the N best runs overall or per loop
 Choose from a standard set of objective function types:

The results from each simulation in maximizing production showing the best net resent value
Objective Function Evaluation
Evaluate a predefined objective function on a set of simulation cases. The user defines either a history match objective function or a development optimization objective function. There are options to:


 Evaluate the objective function for a set of cases from either a sensitivity or Experimental Design, a set of parameter values entered in the variable definition line or from a file, or from a base case deck with no variables
 Choose from a history matching or optimization type objective function (as discussed above)
 Create a response surface of the objective function
 Output statistics from the response surface
 Output the results to HTML, CSV and/or Excel files

Probabilistic Multiple Solutions
Perform clustering on cases obtained in a History Match or Development Optimization and select a set of distinctive cases from the clusters. The selected cases from history matching can be used in optimization under uncertainty and the selected cases from development optimization can be used as multiple development scenarios. There are options to:


 Define the kriging model
 Define the clustering method, e.g. the number of clusters and what case to choose from each cluster (best case or centroid )
 Forward simulate the centroid cases
 Output the results to HTML, CSV and/or Excel files

Uncertainty Quantification (Forecasting)
Perform forecasting on a set of cases defined by an Experimental Design or Sensitivity study. From a calculated response surface more runs are generated and the results of these runs can be used to improve the response surface until convergence to a tolerance. Distributions and statistics can then be obtained from the resulting response surface. There are options to:


 Define a response parameter from one or multiple mnemonics, well names and report dates in simulation results
 Use Linux wild cards for matching mnemonics, group and well names, and dates
 Select the type of the error terms: signed, absolute, and SQRT
 Choose from maximum, average or standard deviation aggregation type of error for runs in a loop
 Stop the iteration by setting the maximum number of loops and a tolerance for error
 Output cumulative selected percentiles and full probability distribution for response parameters
 Output the results to HTML, CSV and/or Excel files

Chart of cumulative probability distribution highlighting range for P10, P50, P90 production totals