Skip to main content

Ensemble based Reservoir Tool (ERT)

Project description

ert

Build Status PyPI - Python Version Code Style Type checking codecov License: GPL v3

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), Ensemble Smoother with Multiple Data Assimilation (ES-MDA) and Iterative Ensemble Smoother (IES).

Installation

$ pip install ert
$ ert --help

or, for the latest development version (requires Python development headers):

$ pip install git+https://github.com/equinor/ert.git@main
$ ert --help

For examples and help with configuration, see the ert Documentation.

Developing

ert was originally written in C/C++ but most new code is Python.

Developing Python

You might first want to make sure that some system level packages are installed before attempting setup:

- pip
- python include headers
- (python) venv
- (python) setuptools
- (python) wheel

It is left as an exercise to the reader to figure out how to install these on their respective system.

To start developing the Python code, we suggest installing ert in editable mode into a virtual environment to isolate the install (substitute the appropriate way of sourcing venv for your shell):

# Create and enable a virtualenv
python3 -m venv my_virtualenv
source my_virtualenv/bin/activate

# Update build dependencies
pip install --upgrade pip wheel setuptools

# Download and install ert
git clone https://github.com/equinor/ert
cd ert
pip install --editable .

Test setup

Additional development packages must be installed to run the test suite:

pip install ".[dev]"
pytest tests/

Git LFS must be installed to get all the files. This is packaged as git-lfs on Ubuntu, Fedora or macOS Homebrew. For Equinor RGS node users, it is possible to use git from Red Hat Software Collections:

source /opt/rh/rh-git227/enable

test-data/block_storage is a submodule and must be checked out.

git submodule update --init --recursive

If 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"

Style requirements

There 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 install

Trouble with setup

If you encounter problems during install, try deleting the _skbuild folder before reinstalling.

As a simple test of your ert installation, you may try to run one of the examples, for instance:

cd test-data/poly_example
# for non-gui trial run
ert test_run poly.ert
# for gui trial run
ert gui poly.ert

Note that in order to parse floating point numbers from text files correctly, your locale must be set such that . is the decimal separator, e.g. by setting

# export LC_NUMERIC=en_US.UTF-8

in bash (or an equivalent way of setting that environment variable for your shell).

Developing C++

C++ is the backbone of ert as in used extensively in important parts of ert. There's a combination of legacy code and newer refactored code. The end goal is likely that some core performance-critical functionality will be implemented in C++ and the rest of the business logic will be implemented in Python.

While running --editable will create the necessary Python extension module (src/ert/_clib.cpython-*.so), changing C++ code will not take effect even when reloading ert. This requires recompilation, which means reinstalling ert from scratch.

To avoid recompiling already-compiled source files, we provide the script/build script. From a fresh virtualenv:

git clone https://github.com/equinor/ert
cd ert
script/build

This command will update pip if necessary, install the build dependencies, compile ert and install in editable mode, and finally install the runtime requirements. Further invocations will only build the necessary source files. To do a full rebuild, delete the _skbuild directory.

Note: This will create a debug build, which is faster to compile and comes with debugging functionality enabled. The downside is that this makes the code unoptimised and slow. Debugging flags are therefore not present in builds of ert that we release on Komodo or PyPI. To build a release build for development, use script/build --release.

Notes

  1. If pip reinstallation fails during the compilation step, try removing the _skbuild directory.

  2. 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.

Running C++ tests

The C++ code and tests require resdata. As long as you have pip install resdata'd into your Python virtualenv all should work.

# Create and enable a virtualenv
python3 -m venv my_virtualenv
source my_virtualenv/bin/activate

# Install build dependencies
pip install pybind11 conan cmake resdata

# Build ert and tests
mkdir build && cd build
cmake ../src/clib -DCMAKE_BUILD_TYPE=Debug
make -j$(nproc)

# Run tests
ctest --output-on-failure

Example usage

Basic ert test

To test if ert itself is working, go to test-data/poly_example and start ert by running poly.ert with ert gui

cd test-data/poly_example
ert gui poly.ert

This opens up the ert graphical user interface. Finally, test ert by starting and successfully running the simulation.

ert with a reservoir simulator

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.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

ert-9.0.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (947.9 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ert-9.0.13-cp312-cp312-macosx_11_0_arm64.whl (742.7 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ert-9.0.13-cp312-cp312-macosx_10_15_x86_64.whl (764.7 kB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

ert-9.0.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (937.3 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ert-9.0.13-cp311-cp311-macosx_11_0_arm64.whl (730.4 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ert-9.0.13-cp311-cp311-macosx_10_15_x86_64.whl (751.5 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

ert-9.0.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (935.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ert-9.0.13-cp310-cp310-macosx_11_0_arm64.whl (729.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ert-9.0.13-cp310-cp310-macosx_10_15_x86_64.whl (750.4 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

ert-9.0.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (936.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ert-9.0.13-cp39-cp39-macosx_10_15_x86_64.whl (750.4 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

ert-9.0.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (936.8 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ert-9.0.13-cp38-cp38-macosx_10_15_x86_64.whl (750.2 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

Details for the file ert-9.0.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54d3a8ec4d4f15ad1b3ff8d77f508a4a726579f63d8c02844411f66cb8623775
MD5 11702d37393e4bccd674a946fd09fa40
BLAKE2b-256 5270709b4131aaadf8154962a6290bbf0f78ce36ebecdf3659d792e49eb1f1c9

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1903be47e5eaeed7f6b126b532df9cd57103c353466b3aca249405136e92dbf2
MD5 56eeaa01a0ffb65269f68afebf08ab3f
BLAKE2b-256 fdcb2cc1f6846c2fdc49fda66a3d5a325f064f1a02df0e006d2ab753be19df75

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 5daa0eb4c972e902c16bb765a8b4329642124348ad5328ef60db92c2b825d24d
MD5 a4afe1b01ce6df6ecd5614dc5abb04c6
BLAKE2b-256 8ad7e5a18b937c779c8dbb983f4b84fa703432b0005088324b3304b2b76808ae

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28575b593fdbbdecdf6cad7cec03760d7221460fffabafd448080da79eb57830
MD5 958580f744742b3544e5c41e78896f72
BLAKE2b-256 0491ec880dcea7ef2986865cc296657d2a4b26967252436d0b79afb59e34c02e

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e33cf2975fb049ef3aeb7e76c24312749e2a4e9976d52f6c00f99b24906ae04
MD5 2e49245e8c2518428e458f24b8bb6d99
BLAKE2b-256 ddd386e8ab67305ae22b0f253c89b013cf0c7945b7f27c46c5ff7a0f0f071710

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 bcf3e291034a8d56c5952a28ee0204074ae911cec7f9eedbb607e43c653f87ff
MD5 f2718a948af9ab2ae7be47185c8b1fcb
BLAKE2b-256 600d6df19e4da765e8570e755c745b40dca0ccba09a28f5c5352821ca639cefa

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d8bb9efec666f90aa18bca7811161b28f45f3a7134a192b2406c75b5436d7d53
MD5 77ceca7ecd45183118a1ea88aa403cca
BLAKE2b-256 590fa978fdbed7fe855b930747d7142d4751d52e9811ad8be83e16dba9267bd6

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5924b9e9c0c517972b1fa3ad70f72ce5bea36fb334324a6bbea953d8d571bc27
MD5 ffe5204a4e1c18b0c814e8d6cdc00ff4
BLAKE2b-256 6e5653dcec300bb25c824039b459cc704d2757a131944825070a2afa4404ad3d

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c55d47b17051c446ff8c5886a684067b351c39d88d3a57ce0adbc1d93a4bc3bd
MD5 11810dbc2b496afd7ea9fb2e3fcaea9f
BLAKE2b-256 7c69874c961a83fca551810f7536289b0cdb8143114b1c38321b9ee522d01ff3

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 665b1f5814b3e7228fd3e9ac5950ea8b1915325365e45498fd59e60e4a62fcc8
MD5 3d6f234e770d24ee388da6f537530f77
BLAKE2b-256 f581e3d1d8076467faadb9f16739d3d553a8bb3be4a73f91c75283a7afadc08e

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ceb8fa602e9b39b9731cb48d67cd72de87fb394fbe777cfa30ccd74a643fd9a2
MD5 086eec21277eff27af48bbd3aebbae94
BLAKE2b-256 956d0a2bb3aa7c25bf29176d528820e6b4f83e156539cfd4b2a6da91ffa9be39

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d176fd4b43fa76d98e095152fc869ac13c6932d6f05807920b484f86cdab5acd
MD5 dbaa4d7a1f73c50d89fac7710396689b
BLAKE2b-256 90e1525a5c4c4e91a3e25b9fd5cd97539679c485271f5dac20870fd9e0236158

See more details on using hashes here.

File details

Details for the file ert-9.0.13-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.13-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4ef53efc8265e8da39e3a49e74e25eb6aca1d22b823547145554a02a2c95b436
MD5 c294980997e8fb7cdd47d70f135b2cab
BLAKE2b-256 b70b81f31635a71741b5e32b8a6924029d16c216cb88b6702ace381ed16b1d7b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page