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

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc2-cp312-cp312-macosx_11_0_arm64.whl (730.3 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ert-9.0.0rc2-cp312-cp312-macosx_10_15_x86_64.whl (752.0 kB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

ert-9.0.0rc2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (925.3 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc2-cp311-cp311-macosx_11_0_arm64.whl (718.0 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ert-9.0.0rc2-cp311-cp311-macosx_10_15_x86_64.whl (739.1 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

ert-9.0.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (924.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc2-cp310-cp310-macosx_11_0_arm64.whl (716.8 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ert-9.0.0rc2-cp310-cp310-macosx_10_15_x86_64.whl (737.9 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

ert-9.0.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (925.0 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc2-cp39-cp39-macosx_10_15_x86_64.whl (738.0 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

ert-9.0.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (924.6 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ert-9.0.0rc2-cp38-cp38-macosx_10_15_x86_64.whl (737.8 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 685bb33bd4553780d9d6bde76f03e91c4e79a979f78884f18324651108d7f607
MD5 98b66f6249ff8a5b3c67b91ef2cd45fe
BLAKE2b-256 1897221384c6a2031e8da41f343739a0d4d8f567e96e7bbda01baaeca826b180

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 debc042f395cb75fd5a47ecfd73a82327c69ef89866d5441b7798217dae87d03
MD5 734750f8371f9c5bfa6eadc5cb46100a
BLAKE2b-256 a9ff001cf5fd1c71505a3b73396ccf392dbfab9f3c502e6a0a28a83a8ba0d748

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 84fb0a7ac1f837ae2404ae44ad2cb02fd5252f3b32651873ee274920990a4cbd
MD5 a320ff16a5f7c3e9107dc852eaa0931b
BLAKE2b-256 44f6f9f035d17ae54ed2c58a822adf761b0a758a6c0f9a7223f2297bd54d0af4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 274bd9f10a9de4e2f5063527d6279441c1989f9702fca0e5ecd50b878535e2b3
MD5 21b512a8691357ab442d73251536574a
BLAKE2b-256 44ef6386758ef64f92f7dcb4ba0f231a79bc9165fef62e7c0a9e45f50212a11a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7fc7ec65cdbd6701a6a3b4684e7c2b5db1789ceaa23f819cf3d6fde1caf164c5
MD5 93580fd983d464a4ec6327edfc1ccc2b
BLAKE2b-256 d36c410760222f0b2c0c0f1f9d280706bd18f1fce902fd11a99e98a6755962b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 32a624eac6c69e5bc7e0d6bb349fa42171422a2ec82d68f6463f6a6e29be90a1
MD5 ee43441a0da176d2b9dc48217d0a0839
BLAKE2b-256 f1b31896d17af119ab7ebfd7e5ca708f83c35931aace97a138883fa6cf48948b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 489a9ec53f573a36c27796e6d390faba733fa2f32785300882db830c085769b8
MD5 8a5ee4b856b0d149ece5dfbdc04ee96a
BLAKE2b-256 053817cc2a633c600bfb78e226c8693e4f6d1c07dce484c56cd6b74bf0e4f036

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d580f8424f8366edb458ba0d27e4841a3123c6b4a74042e3fb3e2576d72e6513
MD5 2c2704303ef09075a435c2838adff712
BLAKE2b-256 2f5e8989529dab20f2266e238fcdf9db0872f28db871f0ac64357cb482075299

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a95d6eaca559c5ffa735b9ae2c5ecf3d9c66848e81f3a33b61947cb9efeac5cb
MD5 34d8b8a3d015089df3c1dd2c8511af0f
BLAKE2b-256 2839588fd756cb77a97eb36e8fc6db76826a45d26fc775d4ed3f27ea3c3bb530

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9468e80158307df7b2907dd60157fd45f3b043703c1fa4a26831161f6941f070
MD5 dc5996b5f8682a736c3756f0d2de0d60
BLAKE2b-256 e9e4bce4ea586356cf0d76431967d0687140ac0161475c8a673aa4afaa9cf5ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 56017a864d76be73813136f0e876b49f2ad50dc4aed05cabcc824e6985d3685c
MD5 966ccac3b8c0a956daed5d8b87d7242f
BLAKE2b-256 6cff2bfadf0e1f65cbce9aa010914bc5aca9c5473148d6fe3784ee6880a11aa9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 61dd313bcfebf3df7c12a033febc92204497f837b13e3395ca9e57b1097076ce
MD5 3b05545bcb1244d571bd9d32892af5e3
BLAKE2b-256 b2bdc6fb8ff392097fdf0d130bdff9aa46cb6606848651733e1a39c6617709fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.0rc2-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ddab24d928ad8b8dd7d109e05e6d210b47e57d02d19d7872d6b2985ff5cdc15a
MD5 69ac0490794ec5ed849ab0eea2093117
BLAKE2b-256 5d31e850c4e669b90d4ae38a580fe10cec50226be87b8b4b3aedaf62b260d653

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