MRST - MATLAB Reservoir Simulation Toolbox

Release Notes for MRST 2013b

Introduction to MRST 2013b

MRST 2013b primarily polishes existing core and module features, but does bring improvements and new features in multiple modules.  We espically highlight the following changes

  • Introduction of fast optimisation routines using time-of-flight and/or tracer flow for reservoir characterisation and ranking
  • An experimental facility for loading the result output of an ECLIPSE run into MRST and interactively visualising these results
  • Improvements to the robustness of the 3D graphics rendering codes
  • Introduction of a new approach to refining the blocks of a coarse grid created by the 'agglom' module
  • The mimetic pressure solver has been converted into a module named 'mimetic'. For the 2013b MRST release, we automatically load this module at startup to ease forward portability of existing scripts, but users should be prepared to activate the 'mimetic' module on demand in future MRST releases.

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

Acknowledgements

Work by the following people constitutes this release of MRST

  • Stein Krogstad
  • Knut-Andreas Lie
  • Olav Møyner
  • Halvor Møll Nilsen
  • Xavier Raynaud
  • Bård Skaflestad

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

New developments in MRST 2013b

Core features (grid processing):

  • Add support for using logical masks to select the sub-grid cells in function 'extractSubgrid'.
  • Add experimental support for processing the PINCH and NNC keywords of an input deck.
  • Implement an option ('RepairZCORN', default off) in function 'processGRDEL' to detect and repair the following rare conditions that may nevertheless arise in a ZCORN array--typically as a result of finite precision output from geo-modelling software:
    • A cell's upper corner on a particular pillar is below that cell's lower corner on the same pillar.   
    • A cell's lower corner on a particular pillar are below that cell's lower neighbour's upper corner on the same pillar.
  • Refactor the support for splitting a grid into its disconnected components out to a new function, 'splitDisconnectedGrid', to allow usage outside function 'processGRDECL'.

Core features (fluid processing):

  • Functions 'sof2' and 'sof3' now, optionally, compute and return the relative permeability of oil at maximum oil saturation. No existing calls to these functions are affected, but may be updated to take advantage of the new return value.

Core features (ADI class):

  • Fix a programming error in the 'abs' method that would change the magnitude of the derivatives when we should be changing the signs.

    Thanks to Andres Codas for the fix.

Agglomeration/amalgamation module ('agglom'):

  • Add support for including boundary connections in the block neighbourship definition
  • Add a new function, 'removeConfinedBlocks', to remove single, confined blocks and expose groups of blocks that are confined within a single, enclosing block. This function uses the third-party "MATLAB BGL" software.
  • Add an alternative block refinement approach, 'refineUniformShape', that uses hierarchic, Cartesian block refinement and, optionally, a static background partition to define the blocks after refinement.
  • Change many examples to use the TPFA-based pressure solver rather than the mimetic solver for increased computational performance.
  • Support versions of MATLAB prior to 7.9 (R2009b) by avoiding the tilda operator ('~') when ignoring the return value from a function.
  • Starting from MRST 2013b, this module requires that the 'gridtools' module be activated if using any of the functions 'refineGreedy', 'refineGreedy2', 'refineGreedy3', and 'refineGreedy4'.

Deck input support module ('deckformat')

  • Add limited, experimental support for keywords 'WELOPEN' and 'WELTARG'. Note: We do not at present support opening/closing individual completions using 'WELOPEN'.
  • Extend the equilibration facility to handle OIL/WATER and OIL/GAS systems in addition to the OIL/WATER/GAS systems that were already supported. The equilibration algorithm is limited to problems for which the datum depth is in the oil zone.
  • Add support for specifying subsets of the 'ZCORN' data in a 'BOX'.
  • Add support for using index zero to specify that the well head position be retrieved from data records input using the 'WELSPECS' keyword.

    Thanks to Roland Kaufmann for reporting the issue.
  • Fix a number of internal inconsistencies in the code that computes relative permeability. MRST is now able to use both relative permeability families in all aspects of the saturation function calculations.

Flow diagnostics module ('diagnostics')

  • New features:
    • Fast optimisation routines that rely on time-of-flight/tracer based objective functions.
    • The examples 'optimize1D' and 'wellPlacementExample' demonstrate water injection optimisation and well placement optimisation respectively.
  • Bug fixes:
    • 'example1' and the 'interactiveDiagnostics' function now correctly use pore-volume (as defined by function 'poreVolume') instead of geometric volume.
    • Well-pair plotting now correctly handles single perforation wells.

Ancillary grid tools module ('gridtools')

  • Add a new function, 'sampleFromBox', that allows picking cell-based properties (e.g., permeabilities or porosities), from a Cartesian bounding box surrounding a subset of grid cells. The bounding box is uniformly partitioned in physical space.
  • Add support for using the more natural syntax

    [i, j, k] = gridLogicalIndices(...)

    in addition to the existing syntax

    ijk = gridLogicalIndices(...);
    [i, j, k] = ijk{:};

    when extracting logical, Cartesian indices of a set of grid cells.
  • Add a new function for checking basic invariants on the grid geometry.
  • Add experimental support for generating abstract, topological connections, e.g., from PINCH or NNC keywords and to include those in the neighbourship defintions.

IMPES module ('impes')

  • Remove the possibility for ignoring pressure-dependent fluid properties in the non-linear loop (option 'face_update'). Code using this option will now produce a warning about unknown options.

Interactive visualisation module ('mrst-gui')

  • Add an experimental script for loading ECLIPSE restart data into a visualisation gui ('visualizeEclipseOutput').
  • Function 'plotToolbar' has been documented.
  • Function 'plotToolbar' now supports cell array input if all cells contain the same data type whence HORZCAT(array{:}) is supported.
  • Various bugfixes relating to correct drawing of GUI components.
  • Fix an error that occured when plotToolbar was called on a window where function 'plotToolbar' was already present.
  • Function 'setRenderFixes' warns that setting default rendermode to OpenGL can cause issues with e.g. log plots.
  • Add support for plotting cell-wise vector fields on general grids (function 'plotCellVectorData').
  • Function 'plotToolbar' supports exponentiation (10.^x), absolute value and nonzero transformations.
  • Vector data is now filtered based on their Euclidian norm value.
  • Function 'plotToolbar' avoids parsing more than 1000 columns of matrices for the dropdown to avoid overflow.

Upgrade Notes

 Core (fluid processing)

  • The return values of function 'swfn' have been reordered to allow computing maximum saturations in a table without computing inverse capillary pressure curves. All callers in MRST have been updated accordingly, but if you were calling function 'swfn' directly, you will have to check that the calling syntax is still valid.
  • Function 'sgfn' now returns the connate gas saturation intermixed with the exisiting return values. All callers in MRST have been updated accordingly, but if your code uses function 'sgfn' directly, you will have to check that the calling syntax is still valid.

Core (solvers)

  • The mimetic pressure solver has been converted into a module named 'mimetic'. For the 2013b MRST release, we automatically load this module at startup to ease forward portability of existing scripts, but users should be prepared to activate the 'mimetic' module on demand in future MRST releases.

Core (grid processing)

  • Function 'processGRDECL' no longer clobbers the global TIC/TOC state in 'Verbose' mode.

Published October 18, 2013