MRST - MATLAB Reservoir Simulation Toolbox

Release Notes for MRST 2017a

Highlights of MRST 2017a

  • Wells and boundary conditions in AD solvers has been rewritten from the ground up, including support for multisegment wells with support for inflow control devices and nonlinear pressure drop models for friction. We now also support boundary conditions and source terms for problems with dissolved gas and vaporized oil.
  • Functionality for computing sensitivities of petrophysical parameters (permeability, porosity, transmissibility, relative permeability) using adjoints. Objective functions for well mismatch is included, suitable for history matching-type workflows.
  • Plotting functionality has been improved with better unit support, more types of data and ternary and tetrahedral plots.
  • The contributed dual-porosity module has been rewritten and extended with a large amount of new features, including a large library of different transfer and shape functions from the literature.
  • Numerous bug fixes and minor improvements.


  • The Sleipner dataset from CO2-lab has been added to the dataset manager
  • tesselationGrid now supports dataset with variable number of nodes per cell
  • plotWell has support for plotting producers and injectors in different colors
  • New routine incompHydrostaticPressure for computing hydrostatic pressure distribution
  • New routines ternaryAxis and tetrahedralAxis for plotting ternary diagrams in 2D and 3D.
  • mrstExamples: Better support for folders with spaces on Windows.
  • Max function in ADI class now support single inputs
  • ADI variables now return doubles for certain operations (e.g. taking a subset with no derivatives in that subset). This change may break some code that depends on this behavior, but it does increase the efficiency of the class.
  • ADI has been optimized to reduce execution speed for many problems.
  • ADI: Function reduceToDouble added, for downgrading ADI objects to doubles when no derivatives are present.
  • For consistency, the use of "cat" to combine equations of type ADI is no longer recommended. combineEquations is a more robust alternative that behaves the same for both doubles and ADI.
  • plotGrid & plotCellData: Default EdgeColor has been removed. The routine will now use the system default.
  • plotNodeData added to MRST core for plotting of data on nodes. This routine was previously located in the vemmech module.
  • verticalWell: Support for 2D grids. Please note that this support comes with a few assumptions, as noted in the revised documentation. For the most accurate well modelling, 3D grids should be preferred.
  • addWell: Improved error messages and support for logical masks to define cells (in addition to explicit cell lists).
  • addWell: The "c" field for components has been added. See releasenotes for the "ad-eor" module.

Solvers Based on Automatic Differentiation

Module ad-core

Treatment of wells has been rewritten from the ground up. Models with wells now couple to the new FacilityModel which handles different wells. Support for multisegment wells, VFP-tables and non-equilibrium wells has been added. Each well can be implemented as a separate class, see e.g. SimpleWell. This should be considered a early preview of coming functionality and interfaces and functionality is subject to change.

As a consequence of the previous point, the interface to wells has changed significantly. Generally, the coupling is much cleaner for most models as there is no longer need to extract values belonging to the well cells.

  • Support for dissolution and vaporization in boundary conditions and source terms has been implemented. The interface with respect to sources and boundary conditions has changed as a result. Several new functions has been added to ReservoirModel to support these new features.
  • Added computeSensitivitiesAdjoint routine. See optimization change log for more details.
  • Models have added more features for validation and setup prior to simulation. State, model and drivingForces can all be checked (and changed, for state and model).
  • CPR solvers now have a option for trueIMPES decoupling
  • State is always updated a final time when stepFunctionIsLinear. This fixes a bug where fluxes would not be updated when the sequential ad solvers were used in incompressible mode. This issue was discovered by Daniel Wong at Heriot-Watt University.
  • NonLinearSolver: Support for backtracking linesearch in case of convergence issues.
  • Verbose convergence output: A small indicator has been added to indicate if a specific residual has converged or not.
  • SimpleCPRAD has been added. This is a simpler and faster implementation of CPR that does not use dynamic row summing. This solver is not suited for problems with phase transfer between phases, but is faster for e.g. dead oil cases and other immiscible problems.
  • upscaleSchedule now supports boundary conditions and source terms.
  • NonLinearSolver: Better estimation of timestep length when very small timesteps were used to complete control steps.
  • plotWellSols now supports metric, strict SI, lab and field units.

Module ad-fi

Minor updates to ensure examples still run. Module should still be considered deprecated and may be removed in a future release.

Module ad-props

  • Unused functions has been removed from the fluid objects produced by "initDeckADIFluid". This includes the functions BW, BO, BG which should be replaced by 1./bW, 1./bO and 1./bG respectively in code. The function "relPerm" has also been removed, as this functionality has in latest releases been computed directly from ReservoirModel. We have removed these functions in an effort to ensure consistency, as the previous implementation had multiple function handles corresponding to essentially the same parameters.
  • initDeckADIFluid has added options for unifying region treatment. This is useful for running subset of models, or applying a fluid region to a different grid than the one the regions were defined for.
  • dinterpReg: Bugfix for string comparison. Previously, this function would use the first region if region 58 was specified. 

Module ad-blackoil 

  • New example "multisegmentWellExample" demonstrating the use of multisegment wells with valves on a simple black-oil case.

  • Updated support for boundary conditions and source terms. Support for dissolved gas and oil has been formalized and support for boundary conditions at reservoir conditions has been added.

Module blackoil-sequential

  • Corrected injection rates for oil injection (when disgas is present) and gas injection (when vapoil is present).
  • Example for sequential solution of the EGG model.

Module ad-eor

  • The wells now use the .c field to determine both polymer and surfactant concentrations, instead of per-model names like "poly" and "surfactant". Existing scripts that set up wells from within MRST should be updated. Wells from input files are automatically updated.
  • Support for boundary conditions for all solvers (polymer/surfactant). 

Other Simulation Tools and Utilities

Module coarsegrid

  • partitionMETIS can now return the partitioning matrix used.

Module book

  • New examples added, including examples for multiphase flow and inspection of black-oil PVT data.

Module mrst-gui

  • colorizedHistogram added: Routine for plotting colorized histograms (i.e. by colormap)
  • editStructGUI added: Interactive GUI for setting scalar fields of a struct
  • plotToolbar now has support for plotting data on nodes

Module deckformat

  • Generalise Verification of Repeat Description. The previous check (\d\*\d) was too simplistic and failed on valid inputs like n*-0.001 or n*.687. This is now supported.
  • Fix Number of Records in 'ROCK' Keyword. The number of ROCK records is NTROCC, not NTPVT. We thank Kwangwon for the bug report.
  • Tentative support for COPY keyword. Tentative support for ROCKOPTS keyword.

Module co2lab

  • Added examples from recent publications
  • Directory structure has been re-organized to be easier to navigate.
  • Some examples have been partially rewritten to improve legibility.

Module dfm

  • Avoid issues for 2D grids with gravity defined as a 3D vector.

Module steady-state

  • Bugfix: Support for periodic upscaling with mimetic fine-scale solver. Previously, this would result in an error.

Module upscaling

  • upscaleTrans has been rewritten from the ground up and has several new options for flow-based transmissibility upscaling. For an example of usage, see the revised simulatorWorkflowExample in the ad-blackoil module.

Module optimization

  • Routines for computing sensitivities with respect to petrophysical parameters has been added. The example ‘sensitivitiesModel2D.m’ demonstrates sensitivities of a well curve mismatch function with respect to transmissibility, permeability and porosities.
  • NPVBlackOil has been updated to match with the current implementation of black-oil.

Module dual-porosity

Module functionality has been significantly extended and now contains a number of different transfer functions suitable for oil-water and black-oil systems. This module is contributed from the Carbonates group at Heriot Watt University

Published December 14, 2016