MRST - MATLAB Reservoir Simulation Toolbox

Release Notes for MRST 2011b
Introduction to MRST 2011b

Since the previous release of MRST (2011a, 22nd of February 2011), the software has stabilised and solidified further. Ongoing review has uncovered and corrected a number of programming errors that only presented under very particular conditions and would typically affect few users. Moreover, work outside the core package as well as other projects not related to MRST at all has drawn the attention of the developers. As a result, MRST 2011b is mostly a bug-fixing release that also improves error reporting and tightens basic input checking in most functions. Nevertheless, the package comes with a new module supporting coarse-grid transport solves by means of the amalgamation framework.

Please review the Upgrade Notes at the end of this document if you're upgrading from a previous edition of MRST.


This release would not have been possible without the work of the following developers

  • Stein Krogstad
  • Knut-Andreas Lie
  • Ingeborg Skjelkvåle Ligaarden
  • Jostein R. Natvig
  • Halvor Møll Nilsen

Bård Skaflestad acted as primary release manager for MRST 2011b.

New Developments in MRST 2011b

We would like to point out a number of new developments in this release.

  • MRST 2011b introduces the new module 'agglom' (in directory fullfile(ROOTDIR, 'modules', 'agglom')). Agglom is an abbreviation of 'agglomeration', the former name of the flow-adapted coarse grid generation framework for the transport problem.

    A number of examples, located in the 'examples' directory below 'agglom', demonstrate the basic utilities and features of the module.
  • MRST 2011b introduces a new function, 'hexahedralGrid', for constructing a valid MRST grid representation from point coordinates and a list of hexahedra. The help text contains an example that demonstrates how to use the function.
  • MRST 2011b also introduces a simple module for manipulating the 'Model 2' data set from the tenth SPE Comparative Solution Project (also known as SPE10). The 'spe10' module contains two main functions, 'make_spe10_data' and 'SPE10_rock'.

    The former function will, upon first invocation, download the data set from the SPE server, unpack it (using MATLAB's 'unzip' function), and process the data into an MRST 'rock' data structure which is subsequently stored on disk (in MAT file form) in the directory containing the 'make_spe10_data' function. This on-disk representation may then be inspected and manipulated using the 'SPE10_rock' function.

    Downloading and unpacking the data set is typically a time consuming process that should be performed only once. As a result, if 'make_spe10_data' finds that a file named 'spe10_rock.mat' already exists in its directory, no further action will be taken. You must consequently remove this file if you want the 'make_spe10_data' function to (re-)create the on-disk binary representation.
  • MRST 2011b introduces a new function for calculating cell volumes by means of the Gauss-Green formula (stated for arbitrary polyhedral cells). This function, located in a container module called 'gridtools', is useful for checking basic consistency of the geometric processing. This, in turn, is a valuable tool when creating new grid processing features and the MRST developers have used the tool extensively.
  • The 'computeGeometry' function now uses signed sub-volumes to calculate the volume of arbitrary polyhedral cells. Earlier, this calculation was done using unsigned (positive) sub-volumes which leads to errors when the cell barycentre is outside the cell.
  • We have corrected a programming error in the 'processGRDECL' function whereby left-handed coordinate systems would generate an error rather than being transparently handled.
  • Finally, explicit module dependencies, for instance in a solver function, can now be specified by means of the new function 'require'. We refer to the help text of 'require.m' for additional details on usage and capabilities.

If you encounter a software issue using one of SINTEF Applied Mathematics' official modules, then please do not hesitate to contact the authors, for instance by sending an e-mail to

Upgrade Notes

The following user-visible changes have been made to existing functions and data structures since the previous release of MRST.

  • A new field 'griddim' has been added to the grid structure. This field (a positive integer, typically 2 or 3) is the topological dimension of a grid and enables representing (e.g.,) a two-dimensional surface embedded in three physical dimensions. All of MRST's grid generation functions have been updated to include this field, but any third party grid generators must be updated to continue working with many other MRST functions.
  • The 'initState' function now permits specifying entire pressure and saturation distributions.
  • The calling sequence of the 'computeTimeOfFlight' function has changed from

    computeTimeOfFlight(G, rock, state, ...)


    computeTimeOfFlight(state, G, rock, ...)

    in order to improve interface consistency with other MRST solver functions. Moreover, the 'computeTimeOfFlight' function is now able to solve "tracer" transport.
  • The MRST solvers now assert that the 'rock' data structure provides one permeability tensor in each active cell only (i.e., that "SIZE(rock.perm,1)==G.cells.num"). In previous releases, the solvers would use the '.cells.num' first rows of the 'rock.perm' field, which might lead to simulation errors that were difficult to diagnose (for instance when reducing the grid size without modifying the permeability field).
  • The 'splitFaces' function has been renamed to 'triangulateFaces' to better reflect its primary purpose.
  • The 'mrstModule ' function now promotes a module to the front of MATLAB's search path if 'mrstModule add' is called for an already activated module. This is in keeping with the established behaviour of MATLAB's existing 'path' function.

Published January 2, 2012