Modules

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 module structure. After the 2024.04 release, the opm-models module was folded into and merged with opm-simulators.

Releases 2023.04 – 2024.04

After the 2022.10 release, the opm-material module was folded into and merged with opm-common.

modules

Releases 2019.10–2022.10

After the 2019.04 release, the ewoms module was renamed opm-models.

modules-2019-09

Release 2018.04, 2018.10 and 2019.04

After the 2017.10 release the opm-core module was removed, and the modules opm-parser and opm-output were folded into opm-common.

Release 2017.04 and 2017.10

The figure below shows the situation for the releases in 2017.

modules-2016-12
The modules with dependencies, 2017.04 and 2017.10

There are two changes since the previous 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 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 release 2016.04.

modules-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 and minor utilities). Also contains three major features:

    • Eclipse deck parser (formerly in the separate module opm-parser)
      Reading industry-standard reservoir simulation input decks (Eclipse format), including complex schedules, as well as multipliers and modifiers.
    • Eclipse binary format I/O (formerly in the separate module opm-output)
      Facilities for creating output in various formats from simulator programs, in particular Eclipse summary and restart files.
    • Properties for fluids and materials, including saturation functions, pvt properties etc. for black-oil compositional and CO2 simulations.
  • opm-grid
    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.
  • opm-simulators
    The Flow reservoir simulator is in this module, including discretization and assembly. Also contains various support classes for simulator codes such as well treatment, aquifers and linear solvers.
  • opm-upscaling
    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.