Documentation for the opm-autodiff library.

Automatic differentiation

This library implements automatic differentiation for vector data with multiple blocks of sparse jacobians. This is contained in the class Opm::AutoDiffBlock. Also available is Opm::AutoDiff, a much simpler single-value single-derivative AD class.

There are also some helper classes and functions that are intended to aid in the development of solvers and simulators with AD, these include Opm::HelperOps, Opm::UpwindSelector, Opm::subset, Opm::superset, Opm::Selector, Opm::collapseJacs, Opm::vertcat, Opm::Span and Opm::sign.

Solvers and simulators

There are some solvers and simulators in opm-autodiff. They should all be considered experimental prototypes at this point. Notable simulator prototypes include

  • examples/sim_fibo_ad.cpp, a fully implicit black-oil simulator.
  • examples/sim_2p_incomp_ad.cpp, a sequential incompressible 2-phase simulator.