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.
Releases 2019.10–2022.10
After the 2019.04 release, the ewoms module was renamed opm-models.
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.
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 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.
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.
- Eclipse deck parser (formerly in the separate module opm-parser)
- 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.