MRST - MATLAB Reservoir Simulation Toolbox

Release Notes for MRST 2017b

Release Notes for 2017b


  • Significant overhaul of documentation.
  • Speed improvements through a new optional AD-backend and external linear solvers
  • Module for coupled mechanics and flow
  • Module for compositional simulation
  • Module for geochemistry
  • Module for solvent
  • Numerous updates to examples

New modules and features

New documentation

Efforts has been made to integrate MRST with the Sphinx documentation system. The documentation can be seen here:

At the moment, there are still issues with the quality of the auto-generated documentation, but we will continue improving this between releases.

Compact DiagonalAutoDiffBackend for faster AD assembly

We have added support for additional backends for automatic differentation. This is an early preview of coming functionality which should make it possible to simulate larger problems with more components and physical effects.

Octave compatibility

Preliminary support for Octave has been added to the AD-based solvers. Previously, only the incompressible and immiscible solvers in the incomp module were supported. Currently the ad-blackoil and compositional have been tested on Octave 4.2.1. Thanks to Andres Codas for providing feedback that Octave now supports classdef.

It should be noted that the performance is currently orders of magnitude behind recent versions of Matlab in our tests. A simple example is included in the octave module demonstrating SPE1.

Module ad-mechanics

Mechanical model for linear elasticity can be coupled to standard reservoir flow models, such as oil-water or black-oil models. The global system can be solved either simultaneously or using fixed-stress splitting. The solver for linear elasticiticy uses the virtual element method and can handle general grids.

Module compositional

A new module for compositional problems with either cubic equations-of-state or tabulated K-values. Both the natural variables and overall composition formulations are included together with validation against commercial and research simulators.

Module linearsolvers

New module for bindings to external linear solvers. This release includes tentative support for the AMGCL ( header-only library for preconditioning with and without AMG.

Module geochemistry

The module implements solvers for the following models: aqueous speciation, surface chemistry, redox chemistry, equilibrium with gas and solid phases. Each of these models can be readily coupled with a flow solver. The main contributor is Colin MacNeece from Texas Austin University.

Module solvent

The solvent module can be used to simulate injection of solvent gas in petroleum reservoirs. The model is an extension of the Todd-Longstaff model for miscible flooding and assumes two extrema: In regions with only water and reservoir hydrocarbons, we have traditional black-oil behavior, whereas in regions with only water, reservoir oil, and solvent gas, the oil and solvent are completely miscible. In regions with water, oil, reservoir gas, and solvent gas, we interpolate between the two extrema based on the solvent to total gas saturation and the pressure. This formulation makes it possible to simulate miscible and partially miscible displacement without using an expensive fully compositional formulation.

Changes to MRST core

  • ADI is now less likely to return a double, even when the Jacobian has no non-zero entries.
  • Vertical well now produces messages that accompany errors.
  • Several constants and units added to support compositional and geochemistry modules
  • makeLayeredGrid now supports variable thickness of layers
  • plotFaceData now supports logical indices for plotting a subset
  • merge_options is a bit smarter about comparing types for classes. Specifically, any subclass of the default values can be sent in without errors.
  • mrstPath now resolves relative paths and symlinks before inserting into path
  • mrstExtraDirs added for debugging the paths added by MRST

Changes to existing modules

Module ad-blackoil

  • Phase properties are now calculated using their respective phase pressures, instead of always using the oil pressure.

Module ad-core

  • Experimental support for different automatic-differentiation backends. We highlight the DiagonalAutoDiffBackend especially, which uses compact representations to speed up assembly for problems with a moderate to large number of components and grid cells.
  • New class HandleLinearSolverAD wraps function handles to general linear solvers
  • New utility function standaloneSolveAD for solving a single time-step without creating a full schedule
  • Experimental support for face/half-face values for viscosities and relative permeabilities through splitFaceCellValue
  • Upscaling functions should be more robust. Porosity upscaling is now exact.
  • ADI.getNumVars is now used by LinearSolverAD to infer the spacing between variables, instead of computing it directly from the Jacobians.
  • plotWellSols no longer requires a known unit to take the cumulative sum of well curves. Also, additional marker styles are added with nicer defaults.
  • FacilityModel: Several fixes for wells with changing perforations and status
  • getWellOutput: Support for logical subsets.
  • ResultHandler should produce less output in verbose mode, and the output it produces should be nicer too look at.
  • Fixes to injection mobility for source terms.
  • rampupTimesteps now produces the correct geometric sequence for the rampup period.
  • simulateScheduleAD has experimental support for initial guesses for each control step. This is useful when re-running simulations with additional effects.
  • Well limits are now always checked against the corresponding tolerances even when simpler tolerances are employed.
  • UniformFacilityModel added. This model can only be used for problems where all wells are of the SimpleWell type and the problem does not include additional components/well equations. The main advantage is that the well assembly is vectorized and can be faster.
  • The LinearSolverAD has several new features, including left/right diagonal preconditioning and Schur complement built-in.

Module ad-eor

  • Crash in oil-water-polymer models when calling in resOnly mode has been fixed

Module ad-props

  • Support for SLGOF tables
  • Support for solvent-related keywords

Module blackoil-sequential

  • Better default behavior for non-converging pressures. The global time-step is cut instead of solving multiple pressure substeps.
  • Sequential implicit solvers for two-phase and three-phase blackoil polymer problems have been added
  • Improved support for pressure boundary conditions in the transport solvers

Module co2lab

  • Improvements to optimization routines

Module coarsegrid

  • Support for coarsening of models with empty, but still present NNC cell list

Module deckformat

  • Support for PVT-M unit system
  • Numerous robustness fixes
  • Support for solvent
  • processWells: Wells with unsupported controls are now output, with a warning
  • Improved parsing speed for readVector with repeat counts

Module dual-porosity

Module fvbiot

  • Bug fixes in boundary conditions for MPSA solver (Module maintained by Eirik Keilegavlen at University of Bergen)

Module hfm

  • Several new functions and examples contributed by the Carbonates Reservoir Group at Heriot-Watt University. Most notably, this includes greatly improved support for fracture shapes and orientations in 3D.

Module incomp

  • Support for capillary forces in problems with NNC-type connections. Specifically, this is useful when working with models from the hfm module

Module mrst-gui

  • plotToolbar: Is less picky about what it considers a suitable field for plotting

Module upr

  • Several updates (Module maintained by Runar Lie Berge at the University of Bergen)

Module upscaling

  • Support for time-dependent AD solvers in upscaleTrans

Module vemmech

  • Bug fixes for stress

Published December 14, 2016