MRST - MATLAB Reservoir Simulation Toolbox

Release Notes for MRST 2012a

Introduction to MRST 2012a

MRST 2012a is a major release in terms of new features. We especially highlight the following

  • A new module that implements the Multiscale Finite-Volume method on unstructured grids—especially corner-point grids
  • A new module that introduces support for compressible and miscible black-oil simulations
  • A new module for production optimisation based on adjoint formulations
  • A new module for inputting complete simulation decks in the ECLIPSE format (i.e., '.DATA' files)
  • A new module implementing a more flexible coarse-grid definition

The new features have been extensively tested in-house—but discretion is advised when adopting the features in your own work-flows or research.

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


Work by the following developers constitutes this release of MRST

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

The developers would also like to acknowledge the following persons for valuable contributions to this release of MRST

  • Christine H. Haugland
  • Fabrice Toussaint

Olav Møyner acted as primary release manager for MRST 2012a.

New developments in MRST 2012a

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

  • MRST 2012a introduces experimental support for input of complete simulation decks in the ECLIPSE format. MRST's core includes the readGRDECL function for inputting a selection of keywords that mostly describe grids and cell-based properties. The new input support, implemented in the deckformat module and activated using the command

    mrstModule add deckformat

    represents an alternative means of reading reservoir models and simulation cases into MRST. The module consists of two main functions, readEclipseDeck and convertDeckUnits which separate data input responsibilities. The former does the actual data reading while the latter converts various units of measurements (e.g., permeability values) into MRST's strict SI-only unit conventions.

    Along with the input reading, we have also added several functions to construct fundamental MRST objects (e.g., grids, fluids, rock-properties or wells) from the descriptions of a particular simulation deck.

    The example deckinputSPE1Example in the examples directory of the deckformat module solves the well-known SPE1 benchmark case using the impes solver and a simulation deck 'ODEH.DATA' that is distributed along with MRST 2012a.

  • The new module adjoint, activated using the command

    mrstModule add adjoint

    is the work of Stein Krogstad. This module implements strategies for production optimisation based on adjoint formulations.

    The module features two examples in its examples directory—simpleBHPOpt, and simpleRateOpt—that demonstrate the basic utilities of the module. The former optimises the net present value of a synthetic reservoir using a set of injectors and producers constrained by bottom-hole pressure targets while the latter example repeats this calculation for wells constrained by reservoir volume flow rate targets.

    The final example, compareGradients, compares objective function gradients computed numerically using a finite-difference method and computed separately using adjoint formulations.

  • This release introduces an implementation of the Multiscale Finite-Volume Method (MsFVM) on unstructured grids such as corner-point grids including faults. Produced during Olav Møyner's master thesis, this work enables practitioners, researchers and students to investigate the properties of the MsFVM from within MATLAB. The MRST team is very pleased to be able to distribute this work to the community.

    The MsFVM code is implemented in terms of an MRST module named msfvm, which you can activate using the command

    mrstModule add msfvm

    We especially highlight the examples contained in the examples directory within the msfvm module directory (i.e., fullfile(ROOTDIR, 'modules', 'msfvm')).

    Note: The msfvm module requires MATLAB 2009b (MATLAB 7.9) or later.

  • This release brings an experimental solver for compressible, miscible black-oil type flow and transport. This solver is based on the 'IMPES' strategy and uses a two-point flux approximation to discretise the flow problem. The solver is implemented in a new module named impes—the main gateway function of which is impesTPFA.

    The example fiveSpotSPE10 within the examples directory of the impes module solves a five-spot water-flooding scenario from layers 25 through 28 of the second model from the tenth SPE Comparative Solutions Project using the impesTPFA solver.

  • Finally, this release brings a new, and more flexible definition of the coarse-grid data structure. This work is courtesy of Jostein R. Natvig and is needed to support the MsFVM implementation. We expect to replace the existing coarse-grid data structure with the new definition in the next or subsequent release of MRST. The new definition is implemented in the coarsegrid module which can be activated using the command

    mrstModule add coarsegrid

    The coarse-grid module also contains a number of plotting and visualisation routines to assist in visualising coarse-grid related quantities.

We have also updated some of the existing modules, notably the 'gridtools' module. This module now features a number of utilities that were previously located in the 'gridprocessing' directory below MRST's top-level directory. Furthermore, the 'upscaling' module now features a new function, 'upscaleTrans', for upscaling transmissibilities. Using this function is demonstrated in the 'transUpscaleExample' script below the 'upscaling' module's main directory. The 'cpGridHarmonic' is a simple demonstration of harmonic upscaling on an unstructured grid. 

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 Bård Skaflestad.

Upgrade notes

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

  • There are several new tutorials and examples in the root-level 'examples' directory. Furthermore, some existing tutorials have been moved to other locations. In particular, tutorials relating to particular models have been moved to the appropriate module directories.

  • The strategy used to compute multi-point transmissibilities in the mpfa module has been made user-configurable. Previously, users needed to modify the source code to select whether or not to use an accelerated matrix inversion implemented in C or a pure MATLAB implementation of the same strategy. The new option 'invertDiagonalBlocks' in function 'computeMultiPointTrans' selects which strategy to use. Possible values are 'matlab' and 'mex' which correspond to the pure MATLAB and accelerated strategies, respectively.

  • The implementation of the accelerated strategy has been restructured in order to support building using Microsoft's Visual Studio compilers courtesy of Fabrice Toussaint.

  • The pure MATLAB strategy has been reworked to remove a corner case of the previous implementation. We thank Christine H. Haugland for exposing said corner case.

  • The 'msmfem' module's capabilities has been extended to handle the case of a well path intersecting a set of cells that is not simply connected.

  • The 'outlineCoarseGrid' function now correctly handles key/value option pairs in two space dimensions.

  • The agglomeration module (named 'agglom') has been restructured. All examples are now named 'example<i>.m' with '<i>' being an integer from one to six.

In addition to several bug fixes and smaller improvements to resilience and input checking, the following low-level issues have been corrected in MRST's Core features

  • A programming error in the 'mcolon' function that produced wrong results when the function was called using negative strides such as

    low = [1, 3, 4];
    high = [1, 2, 4];
    ix = mcolon(low, high, -1);

  • Fortunately, this error affects no existing in-core uses of function 'mcolon', but if you are using the 'mcolon' function directly in your own work, you will have to check the results upon upgrading to MRST 2012a.

  • Lack of enforced consistency between the generation of MsMFE basis functions and coarse-grid pressure/flux solution in problems featuring boundary conditions. Boundary conditions must be present when generating basis functions using function 'generateCoarseSystem' in the 'msmfem' module, otherwise function 'solveIncompFlowMS' will produce wrong results. However, the latter function did previously not verify that the required boundary basis functions existed when attempting to solve a problem involving boundary conditions.

  • An unhandled corner case in the 'mrstModule' administrative function which produced unexpected results when called as

    mrstModule add ''
    mrstModule reset ''

    (i.e., when attempting to add the empty string, '', as a module).

  • A programming error in the function to update those basis functions for which mobility ratios have changed too much. This error was present in the 2011b release of MRST but was not exposed until using the new coarse-grid definition.

Published October 3, 2012