Release Notes for MRST 2015b

Video Tutorials

MRST 2015b is accompanied by a number of video tutorials, known as JOLTs (Just-in-Time Online Learning Tools), that we are developing in collaboration with Stanford University. These document common tasks in MRST and are collected in our Jolts page which is also reachable from this page's top menu.

Printed Book

The content of the MRST Book by Prof. Knut-Andreas Lie has been greatly expanded, and the accompanying source code is included as module "book" in the MRST source distribution.

Changes to Core Features

  • The overloaded function SUM of class ADI failed to account for the possibility of the number of variables being one. We thank Kristian Gaustad Hanssen for finding and fixing this programming error.
  • The automatic download script for third-party software Matlab BGL learned how to protect against pathnames that include space characters. We thank Feifei Gou for finding and fixing this programming error.
  • Function plotFaces now unconditionally uses OpenGL rendering on Microsoft Windows and MacOS when presented with non-scalar or non-unit FaceAlpha data.
  • Operator end was overloaded for class ADI. Previously, code like x(end) = p with x being an ADI object, would assign p to x.val(1). Now this statement behaves as expected.
  • The new function glue2DGrid adds experimental support for joining two 2D grids along a single common edge.
  • The new function tesselationGrid builds a regular grid structure from a tesselation of a 2D geometry. This is a generalisation of function triangleGrid.
  • Function addWell gained support for representative radius. The representative radius is stored in a new field .rR that has the same size as the well's completions (.cells).
  • The IGEMS datasets are now known by MRST's Download Manager (mrstDatasetGUI).

Changes to Add-On Modules

Support for modelling CO2 migration and sequestration (co2lab)

  • Support for optimization of well rates for aquifer-wide, multi-well storage scenarios.
  • Interactive, visual tool for defining and simulating large-scale, injection scenarios.
  • Interactive, visual tool for estimation of storage capacity.
  • Additional example scripts and source code used in recently published articles.
  • Bugfixes, performance improvements and further streamlining of code.

Modules based on automatic differentiation (ad-core, ad-blackoil, ad-props, and ad-fi)

  • The non-linear solver (class NonLinearSolver) now supports an optional identifier to distinguish different solvers in verbose output.
  • The ILU(0) preconditioner (class GMRES_ILUSolverAD) learned how to reorder the system of simultaneous linear equations to work around the common failure case of zero diagonal entries. The solver will crash if such reordering is not possible.
  • The sequential solvers now use static upwind directions by default. This is to reduce the performance impact of repeated identification of upwind directions, especially in cases that have a permanently dominant flow direction throughout the simulation.
  • The three-phase black-oil model (class ThreePhaseBlackOilModel) now uses W as the wells keyword. This makes the driving forces generic but is an interface change that will likely break user code.
  • Various improvements to computational performance throughout the modules.
  • Experimental support for single-phase and thermal problems.
  • Experimental support for three-phase black-oil systems with polymer injection (including shear-thinning/thickening effects).

Model setup from external sources (deckformat, spe10)

  • The new convenience function setupSPE10_AD constructs the base case of the second model of the tenth SPE comparative solutions project for subsequent simulation using AD-based simulation tools.
  • Function convertDeckUnits learned how to interpret defaulted BHP upper limits in keyword WCONINJE.
  • Functions readEclipseDeck and convertDeckUnits gained support for keyword PLYSHEAR (polymer shear thinning data).

Visualisation of models and reservoir communication (diagnostics, mrst-gui)

  • Significant enhancement and extension of the feature set of the interactive flow-diagnostics tool. Notably
    • Support for multiple figure names across time steps.
    • Support for accumulating time-of-flight values across a range of time steps.
    • Support for viewing a blend of tracer values that visually identifies regions of influence of multiple sources.
    • Support for saving selected data vectors to files in an ECLIPSE-compatible vector format.
    • Support for displaying user-selected well pairs only.
  • Function computeTOFandTracer gained support for computing tracer concentrations on a subset of wells rather than all wells.
  • Function computeTimeOfFlight gained support for pruning parts of the model that are "far away" from sources or sinks. The new option maxTOF specifies a threshold value (in seconds, defaults to 50 pore-volumes injected at total injection rate from all sources) above which cells will not get assigned an accurate time-of-flight value. This is essentially a regularisation term for the system of simultaneous linear equations that arises from discretising the time-of-flight equation on models with disconnected compartments.

    Function computeTOFandTracer supports the same option and passes its value through to the underlying time-of-flight calculator.
  • As an extension of the above, function computeTimeOfFlight gained support for identifying compartments of relatively high flow but which otherwise do not communicate with any sources or sinks. This is useful if the flux field contains cycles which would otherwise pass the initial per-cell classification of model parts that are "far away" from sources or sinks. This detection of cycles, which is off by default, can be activated through the new option processCycles. Function computeTOFandTracer supports the same option and passes its value through to the underlying time-of-flight calculator.
  • Functions computeTimeOfFlight and computeTOFandTracer gained support, through new option solver, for passing a user-specified solver for the systems of simultaneous linear equations.
  • Functions plotCurveTube and plotWellData gained support for returning handles to the graphics objects that are created internallly.
  • Function computeWellPairs learned how to compute "reservoir allocations" which corresponds to fluxes derived from compressibility effects.
  • Function plotTracerBlend gained support for blending the tracer concentration values with white in order to brighten the colours.


Published December 14, 2015