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.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (942.8 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ert-9.0.2-cp312-cp312-macosx_11_0_arm64.whl (737.1 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ert-9.0.2-cp312-cp312-macosx_10_15_x86_64.whl (758.7 kB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

ert-9.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (932.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ert-9.0.2-cp311-cp311-macosx_11_0_arm64.whl (724.8 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ert-9.0.2-cp311-cp311-macosx_10_15_x86_64.whl (745.9 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

ert-9.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (931.2 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ert-9.0.2-cp310-cp310-macosx_11_0_arm64.whl (723.5 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ert-9.0.2-cp310-cp310-macosx_10_15_x86_64.whl (744.7 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

ert-9.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (931.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ert-9.0.2-cp39-cp39-macosx_10_15_x86_64.whl (744.7 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

ert-9.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (931.3 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ert-9.0.2-cp38-cp38-macosx_10_15_x86_64.whl (744.5 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b76d17389deaf97e25cb713bbee1a66c16c7d2dd78b7da4a701373a0b3d98df
MD5 ecb221394dae1780ddd3563fd361340e
BLAKE2b-256 3f8ace761484e882798fc764ec1fd7359a34099710a428014bbe5c5a239a6a41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e9957a6b4ecf9560243dc42515ab4027da9aec84923a918646c520b0c18e4c6
MD5 0cd6581748658e2215db4d995ef0f304
BLAKE2b-256 36c76d4c5c58090b44255a8e38afe6433025d91e292cb450880350854dd135ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 754adf3c1b2bcf7c8c038b673057340db7f9d555c536507d5dd98bc020a79fc6
MD5 286bc337adfdcba337ebbfe3d9072bb0
BLAKE2b-256 eb5a9d3a23b89e57179864fa44568aa40ee6aba81372b772802c69edc092987f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d962f13d20598e0d8abde3ed7c45ecb758250df30bfea1effd7264fc5c84ae8
MD5 32ee0e2926069af83ad5b64b0463097e
BLAKE2b-256 bbda568f9d88a9ec677889e0df0a4d73e431e69c883a523711ccaaf1c18f5262

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 864311f71fdbc3373b9f76a70725d2f521c38ac6aa6bcda1975eb3cde885c8b4
MD5 d3791453d0ce85c5d69a21fbdf3f1e49
BLAKE2b-256 6c178ad2d8ad0df466fd750819389be5c8ecfa262406245dd5d942411a959ef3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1da222351b3ceeedd8945524eab710592928c1a57030d882f319ad3870b993af
MD5 70a9b98c4e559d97efb579eca9def27f
BLAKE2b-256 b7e1053f8daabf0cb1967de5d15f761672550f243132bd0e12d348656161134d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c17439a1e46bc8152a92fe01e9df29bd785ae14a1de63d38a859e4830a36fd3a
MD5 4d1f79e4351f3a58e7789244e076212c
BLAKE2b-256 a9a7b703717bbd29ec10c60c7ff61f8cda49181ac10e998bc60918b62df15aec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d003a52062ce10437ee4c666ef0d629dcd1b1196875e7f6db3b8c46cdb30f78b
MD5 f6cf658e02f3f135ecdb950d91a5f2d3
BLAKE2b-256 1ae28916181aee259627f31bd6dd016d5da5f3890b8fb7f25e8e7efe23774260

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ae609c3dfa06772d5fe30aa2e2d9e13e240d15ff867cac118bd395f883875573
MD5 93deff4ecc2835a2d3de4704ba5062c7
BLAKE2b-256 6b4b94607de4f890459f943c840edcc8210db49c0461ca31e97a192651e5b19f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1159134e37a58d7e2aed75a7752c72b0a394bedec8287db7e57af1735cc4ac2a
MD5 d2b04b76acac723c2f7ed2d0168e17f2
BLAKE2b-256 ea2d67cd8f5cac920a92bfae774cf35e5b3aa3894d5974fdde38c6969ecac1ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 59d58a30174077aa6d4b3a6bf39f399a4c1a097cb16ce3b2ac6dd58727644f35
MD5 ee27391e24c32d7863df3b99802e7d76
BLAKE2b-256 d83ecebf69c0306e2b2df4305e474c6f2ff0b2aae2d0343280cc1a29a9f5ff90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3c930d5e6ffc3510d315e3342a6c491c732bc68fd563169773d6739a6696830a
MD5 25fd07922636fbe433b663f7a42e154e
BLAKE2b-256 eb34a83b2ea0a0faa61ebf20d329aee4fd02ac4655c90c1609f1636a5f862dd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.2-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6d88ee63601d2a6d221575479cfe6f2545b12afd56efd9fa4d3c898985935faa
MD5 89749d18aed796725c7304327334c1e7
BLAKE2b-256 0225d2bf2c5c35cf19c72fb6771c31e211788c4573a452a11eb707e1aa98f061

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