Module structure

Each repository on GitHub is considered a separate module. The dependency relations between them are not completely trivial, and change over time.


The figure below shows the current situation, as the code exists now on GitHub.

The modules with dependencies, current state

There are two changes since the most recent release, namely that opm-simulators now depend on ewoms, and that opm-core now depends on opm-grid instead of the other way around.

Release 2016.10

The figure below shows the situation for the most recent release, release 2016.10.

The modules with dependencies as of release 2016.10

The most important change since the release before is that opm-output no longer depends on opm-core, in fact the opposite is true: opm-core now depends on opm-output.

Release 2016.04

The figure below shows the situation for the previous release, release 2016.04.

The modules with dependencies as of release 2016.04

Module descriptions

The current set of modules are:

  • opm-common
    Contains the OPM build system (CMake modules and scripts), as well as some basic, common C++ code (error macros, logging facilities).
  • opm-parser
    Reading industry-standard reservoir simulation input decks (Eclipse format), including complex schedules, as well as multipliers and modifiers.
  • opm-output
    Facilities for creating output in various formats from simulator programs, such as Eclipse summary and restart files.
  • opm-material
    Saturation and PVT functions.
  • opm-grid
    (Formerly called dune-cornerpoint.) Contains CpGrid, a corner-point grid class, and PolyhedralGrid, a grid class for general polyhedral unstructured grids. Both using the Dune grid interface. Also now contains the UnstructuredGrid C struct and associated functions, functions for processing corner-point grids, the GridManager class and other grid utilities that used to be in opm-core.
  • opm-core
    Contains a wide variety of utilities, well treatment, solvers for pressure, two-phase transport, time-of-flight and tracers, simulator support classes, linear algebra interfaces and property classes.
  • opm-simulators
    (Formerly called opm-autodiff.) Contains a library for automatic differentiation (the AutoDiffBlock class), and solvers for various problems: IMPES, two-phase incompressible transport, a reordering-based two-phase polymer solver, and fully implicit black-oil. In particular the Flow reservoir simulator is in this module, as well as its more experimental variants Flow-solvent and Flow-polymer.
  • opm-upscaling
    (Now includes what used to be in opm-porsol.) Various utilities and solvers used for flow-based upscaling of both permeability (single-phase upscaling) and relative permeability (two-phase upscaling), including capability for steady-state upscaling.
  • ewoms
    Toolbox containing  a wide variety of simulators for porous media problems using (mostly) fully implicit formulations, including some compositional models.