Release Notes for MRST 2015a

Highlights of MRST 2015a

The 2015b release of MRST features several new modules, bugfixes and quality of life-improvements. Some notable changes:

  • Incompressible solvers have been moved into a new module incomp to further trim down mrst-core.
  • Increased maturity and feature set of AD solvers, including support for boundary conditions, source terms and varying number of wells during a simulation.
  • Significantly expanded CO2 laboratory module containing new examples and solvers ported over to the new AD framework.
  • Improved plotting support. MRST now supports plotting directly to coarse grids.
  • A new multiscale module containing MsFV and MsRSB solvers for incompressible flow. This module is a preview of functionality we hope to extend in a future release (new-multiscale).
  • New module for creating well paths (wellpaths).
  • New module for solving optimization problems using MRST-AD (optimization).
  • New module for code examples from the MRST user guide (book)

New developments in MRST 2015a


  • Added graphical user interface for adding and removing known MRST modules. The interface can be launched by calling "mrstModule gui"
  • Added library for downloading and managing datasets.
  • Aded graphical user interface for managing datasets (mrstDatasetGUI)
  • Added utility routine "makeRock" for quick setting up rock structures.
  • plotWell now supports FontSize equal to zero for hiding the text labels.
  • addWell has been extended with support for well limits and disabled completions/wells. Note that this functionality is only supported in the AD-solvers.
  • Plotting routines (plotGrid, plotCellData, plotFaces) has been extended with support for plotting on coarse grids as well as support for plotting faces in 2D.
  • Functions related to incompressible two-phase flow has been moved into the new incomp module.

Automatic differentiation solvers (ad-core, ad-blackoil, ad-props, ad-fi)

The class-based solvers, which were released for the first time in MRST 2014b, have received extensive updates in terms of functionality and polish. We now recommend that these solvers (ad-core, ad-blackoil) are used in place of the older versions (under ad-fi).

  • Added support for varying number of wells in simulateScheduleAD. A schedule containing wells that have varying number of active wells and completion is now supported via the makeScheduleConsistent function. Note that this function is automatically called when loading in a schedule from input files.
  • Added support for boundary conditions and source terms in black oil solvers.
  • Support for maximum and minimum pressure in model.
  • Extended black oil models now default to using standard nonlinear tolerance for equations where standard CNV-type tolerances does not make senes.
  • Gravity is now set per-model instead of using the global variable. Note that this means that unless otherwise specified, the global gravity at the time of model instantiation will determine the value, and not the value at the time of calling simulateScheduleAD or NonLinearSolver.solveTimestep()
  • plotWellSols uses different colors for different wells when a single dataset is passed.
  • TwoPhaseOilWaterModel now inherits from ThreePhaseBlackOilModel, instead of ReservoirModel.
  • Additional functions for constructing upscaled versions of models (upscaleSchedule, upscaleModelTPFA, upscaleState).
  • Improvements to polymer model.
  • WellModel is now attached to a ReservoirModel directly, making it possible to change the WellModel before simulation start.
  • Support for in-situ plotting. See "insituSimple" under ad-blackoil for an example.
  • Better support for fault and transmissibility multipliers when reading ECLIPSE-style deck.
  • Several utility functions have been moved from ad-fi into ad-props (for fluid related parameters specifically) and ad-core.
  • processWellsLocal has been promoted to processWells and replaced the version in the deckformat module.
  • addWell function has been promoted into core.

CO2 Lab (co2lab)

  • The implicit black-oil style simulation code for vertical-equilibrium CO2/brine systems with or without dissolution has been rewritten to take advantage of the new class-based automatic-differentiation interface in MRST. As a result, setting up and running examples should now be significantly easier than before.
  • New set of CO2 and brine equation-of-state functions enabling vectorized computation of CO2 density, viscosity and enthalpy interpolated from sampled tables, and with support for higher-order derivatives.
  • Streamlined functionality for creation of CO2/brine fluid systems with upscaled relative permeabilities and capillary pressures, based on vertical integration with additional user-selectable assumptions.
  • Additional documentation and simplification of code.
  • Several additional examples, providing the working Matlab code from three recently published papers on the subject of CO2 storage modeling.

Flow diagnostics (diagnostics)

  • ComputeTimeOfFlight has improved robustness when the velocity field is not incompressible.
  • New routine for splitting wells into multiple virtual wells for flow diagnostics purposes (expandCoarseWellCompletions).
  • New routine for comparing upscaled models using flux allocation factors (plotwellAllocationComparision).
  • Improvements to interactive diagnostics viewer

Deck input support module (deckformat)

  • readVector is now more robust with regards to whitespace near comment markers.
  • Support for PVCO keyword.
  • Functions previously found in core has been moved here (computeTranMult, sgfn, sgof, sof2, sof3, swfn, swof).

Coarse grid (coarsegrid)

  • Added support for connectivity based partitioning based on Metis (partitionMETIS). Requires Metis to be installed and the path to gpmetis binary set in global variable METISPATH.
  • Utility for checking if two partitions represent the same division of the domain (isSamePartition).

New module: multiscale-new

A new multiscale module has been added, containing a new implementation of cell centered iterative multiscale solvers (MsFV and MsRSB). The module includes a gateway function incompMultiscale which can solve the same problems as incompTPFA, either using approximate solutions with reconstructed velocity fields or as an iterative solver. In the future, this module will replace the msfvm module and is a released as a early preview of coming functionality.

New module: wellpaths

A new module for creating branching wells has been added. These topologically complex wells can be handled by the AD-based solvers.
mrstModule add wellpaths
edit wellTrajectoryExample

New module: optimization

A new module for reservoir optimization for the class-based ad-solvers has been added. A prototype implementation of an iterative BFGS-based line-search method is included which accepts general linear input constraints. The method assumes a properly scaled problem, and the required workflow including problem scaling is illustrated in an example optimizing NPV for a simple model.

New module: incomp

This module contains incompressible two-point flux approximation solvers and simple fluid models used by the solvers in mimetic and mpfa modules. Previously, these functions were included in the core. Note that for backwards compatibility, this module is loaded by default.

New module: book

Supplementary materials and examples from the MRST book project is included in a new module.

Published May 12, 2015