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.0rc4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (937.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc4-cp312-cp312-macosx_11_0_arm64.whl (732.0 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ert-9.0.0rc4-cp312-cp312-macosx_10_15_x86_64.whl (753.7 kB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

ert-9.0.0rc4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (927.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc4-cp311-cp311-macosx_11_0_arm64.whl (719.7 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ert-9.0.0rc4-cp311-cp311-macosx_10_15_x86_64.whl (740.8 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

ert-9.0.0rc4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (926.2 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc4-cp310-cp310-macosx_11_0_arm64.whl (718.5 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ert-9.0.0rc4-cp310-cp310-macosx_10_15_x86_64.whl (739.6 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

ert-9.0.0rc4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (926.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc4-cp39-cp39-macosx_10_15_x86_64.whl (739.7 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

ert-9.0.0rc4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (926.3 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc4-cp38-cp38-macosx_10_15_x86_64.whl (739.5 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

Details for the file ert-9.0.0rc4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 988ce3b7df42a84b2c28541b4765637b8a8d522e68d162e48e7f2965032078bd
MD5 c0a032a75747cb8e05bd24b3be57c228
BLAKE2b-256 d8fc19c28641bf8467f45a1ca047ca2d372d972a34553da950d1dc069fef2762

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ba68be25797b7299f04d4f7744f6867a1c1ee9c51d25777c43345b89350c0e4
MD5 c5bc5dc2e0cb2849f2fe6ed67ea92a09
BLAKE2b-256 56082c71815fc2d7c0750619817d5585cbb85ad3de697e296b22f8adaaa36c99

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 8ce695600a5cc3a085620ed29fe0955aa20c9a691d896debc14a612669545476
MD5 fa4acdc0d6597251bb72ac93bee58135
BLAKE2b-256 d8ca52f34b79481ac201a063361dd863d7a18d819e2962b7edf4ff95ebc344c9

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 060dc759f37103e08aa5e47c53dce66849ec00bfa87adb6a1f82932460c69711
MD5 631c02b62d6aacc255999ce2c4490411
BLAKE2b-256 250ebe43f0b91e8af1026c582c38d6f0a5c989e8c6ebd5dd8bce5e6f0426b3eb

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b435540f14dc6fc1737cc5c5a8d35cfddcb21111e34ed06cf3a898601b5ef8ea
MD5 e6ecb524703aac9cabe06587be118104
BLAKE2b-256 a30d9c092a0f8559a89d9d4b34efff2ccad4e08482580d3e1ffba6e5d5b3393f

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a3194971f93d462246ffa7520929bdcc20025765bc580680e16335bece4e8716
MD5 a5e9307fe3e8607a942c07ae6bcaf3e6
BLAKE2b-256 b9de686a7220f5ff8e0064e4da47348e40f71866cf410707900695411a340728

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8f596867ea5a095cd8d2d46922773fedddc435eeb7f9ff5a89e93e096d11d4b9
MD5 21d7ff9cf84a436e7a6a5bea89520f9d
BLAKE2b-256 b2b2279d278af566c9e20692f2c025b9e890ef0753daa5eabbb73ce7920823b2

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4560bf07bf3b34abe907cc8924fd7beb1dd3e3495d234b6f2b98ff40a4f9eac0
MD5 9134d941a8d75f18480bffcbaff9f165
BLAKE2b-256 ff263c15ce1995ec881b9287bfe15c7d69c8474cd84ea9710ce981b197633611

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d6b2ee8787e109774888b6bf99ce7bbba1d2b2b13df23311c278b36be90e5076
MD5 3ceb26405bcff1b24e0d174a06a13e1e
BLAKE2b-256 e49b199d6fb109066d822780a9d7e3c84bb14a89851464459716c1fc0b31bea7

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d00902d73eb9d3917156587b83099083d06c3243324bdfaffc3493dfe92d466
MD5 1260bc74dfef78379aa99316df58d6e0
BLAKE2b-256 19fdcda28002dbb840c857a7c21ca71f95438724ec9ca439aa54734fc8afe489

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1671027635c01180bc45e12afab29f439b6084789a1bafd6864d6ff6ebf2e393
MD5 319ddb9dec5f4a82b065f662f8c80fa9
BLAKE2b-256 5b3dfebb9d1bd8c25c9007e3de09d32e327c67372c5c88df5822196059323225

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a0b7b01b0af24c0befb95b4a1b3fe9b8062408a2de465f70235791c7bc4cfd37
MD5 8dddcd9dde12f7f2262ebe9aed228ffa
BLAKE2b-256 6e559b651510372b8ae328d3f5074003ea3f09cd8664290a9ee16f397db40ceb

See more details on using hashes here.

File details

Details for the file ert-9.0.0rc4-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-9.0.0rc4-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 10d6a415eab3278692910e15b1a0294a2e3b11c8d6295d5de83f591c814da77c
MD5 076406291d699a30e8aa4f9c932c6064
BLAKE2b-256 55552aa0fff91b488ae6ff86febe11ac82b89f2e24a3cfe7f4ec2fb550233ec4

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