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. Since the 2017.10 release the opm-core module has been removed.
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.
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.
The figure below shows the situation for release 2016.04.
The current set of modules are:
Contains the OPM build system (CMake modules and scripts), as well as some basic, common C++ code (error macros, logging facilities and minor utilities).
Reading industry-standard reservoir simulation input decks (Eclipse format), including complex schedules, as well as multipliers and modifiers.
Facilities for creating output in various formats from simulator programs, in particular Eclipse summary and restart files.
Saturation and PVT functions.
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.
Toolbox containing a wide variety of simulators for porous media problems using (mostly) fully implicit formulations, including some compositional models. Notably contains the discretization and assembly used by Flow.
The Flow reservoir simulator is in this module. Also contains various support classes for simulator codes such as well treatment. Contains a library for automatic differentiation using the “vector + sparse matrix” approach (the AutoDiffBlock class), and solvers for various problems: IMPES, two-phase incompressible transport, reordering-based two-phase polymer solver, and fully implicit black-oil.
(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.