ert - Ensemble based Reservoir Tool - is designed for running ensembles of dynamical models such as reservoir models, in order to do sensitivity analysis and data assimilation. ert supports data assimilation using the Ensemble Smoother (ES) and Ensemble Smoother with Multiple Data Assimilation (ES-MDA).
pip install ert
ert --helpor, for the latest development version:
pip install git+https://github.com/equinor/ert.git@main
ert --helpFor examples and help with configuration, see the ert Documentation.
The primary goal of the Everest tool is to find optimal well planning and production strategies by utilizing an ensemble of reservoir models (e.g., an ensemble of geologically-consistent models). This will enable robust decisions about drilling schedule and well placement, in order to achieve results of significant practical value.
pip install ert[everest]We use uv to have one synchronized development environment for all packages.
See installing uv. We
recommend either installing uv using your systems package manager, or creating
a small virtual environment you intall base packages into (such as uv and pre-commit).
Once uv is installed, you can get a development environment by running:
git clone https://github.com/equinor/ert
cd ert
uv sync --all-extrasThe tests can be ran with pytest directly, but this is very slow:
uv run pytest tests/There are many kinds of tests in the tests directory, while iterating on your
code you can run a fast subset of the tests with by using the rapid checks from the
justfile:
uv run just rapid-testsYou can also run all of the checks in parallel with
uv run just check-allGit LFS must be installed to get all the files. This is
packaged as git-lfs on Ubuntu, Fedora or macOS Homebrew. For Equinor TGX
users, it is preinstalled.
If you have not used git-lfs before, you might have to make changes to your global Git config for git-lfs to work properly.
git lfs installtest-data/ert/block_storage is a submodule and must be checked out.
git submodule update --init --recursiveIf you checked out submodules without having git lfs installed, you can force git lfs to run in all submodules with:
git submodule foreach "git lfs pull"You can build the documentation after installation by running
uv run just build-docsand then open the generated ./ert_docs/index.html or
./everest_docs/index.html in a browser.
To automatically reload on changes you may use
uv run sphinx-autobuild docs docs/_build/htmlThere are a set of style requirements, which are gathered in the pre-commit
configuration, to have it automatically run on each commit do:
pip install pre-commit
pre-commit installThere is also a pre-push hook configured in pre-commit to run a collection of
relatively fast tests, to install this hook:
pre-commit install --hook-type pre-pushAs a simple test of your ert installation, you may try to run one of the
examples, for instance:
uv run just polyThis opens up the ert graphical user interface with a simple example using
polynomials (see ./test-data/ert/poly_example).
Finally, test ert by starting and successfully running the experiment.
The default maximum number of open files is normally relatively low on MacOS
and some Linux distributions. This is likely to make tests crash with mysterious
error-messages. You can inspect the current limits in your shell by issuing the
command ulimit -a. In order to increase maximum number of open files, run
ulimit -n 16384 (or some other large number) and put the command in your
.profile to make it persist.
To actually get ert to work at your site you need to configure details about
your system; at the very least this means you must configure where your
reservoir simulator is installed. In addition you might want to configure e.g.
queue system in the site-config file, but that is not strictly necessary for
a basic test.