Skip to main content

Ensemble based Reservoir Tool (ERT)

Project description

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

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ert-10.2.5-cp312-cp312-macosx_11_0_arm64.whl (724.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ert-10.2.5-cp312-cp312-macosx_10_15_x86_64.whl (742.3 kB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

ert-10.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (909.3 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ert-10.2.5-cp311-cp311-macosx_11_0_arm64.whl (712.4 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ert-10.2.5-cp311-cp311-macosx_10_15_x86_64.whl (730.4 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

ert-10.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (907.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ert-10.2.5-cp310-cp310-macosx_10_15_x86_64.whl (725.4 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

ert-10.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ert-10.2.5-cp39-cp39-macosx_10_15_x86_64.whl (725.5 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

ert-10.2.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (907.9 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ert-10.2.5-cp38-cp38-macosx_10_15_x86_64.whl (725.3 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 75c03d38fdee50a7b31e904ffcb20a3bb094e76e1ea8461764f88b439c8f71a6
MD5 0f0e58856505931ea8c1e7864060f4fc
BLAKE2b-256 62afbda924d9f2c95a5f8f4a3883c0b9faca42a35bb44c1f433393c3aa124bd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ceae3784d7d826c9113e5e397f33f61b18679a2fcf86bed3b12c009c237765ea
MD5 d3e3ef8c5c664481b293b176098da06c
BLAKE2b-256 9e12a00e4805866c7ceb3d5439e44751f11114f8fa8e90e5fd932680b1859c29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 24cf65e2ccb5eef08601bfc30e718fee80e69890445d99c3cac2e871ba6e722e
MD5 3a3c9c232d558b894dbc6a043c5de9f5
BLAKE2b-256 e58f632e170c467bfd6d5caba208171e44bf74b4a565a0ef4bdbcd61e69ccab0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f956c9c5e8ccd047d6bbb5833330b724dcf17e9567b773a7884d2c92ad74a24
MD5 76a5deaf820b2bf68fac50af110191f0
BLAKE2b-256 ce65b299de4c4dc7b437fb975a7f02eb6c46e00c9fa764a4dc8f698906f69e1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fa4ad1a79e0ed1143a04cedc73abdfc80c4699d6691a1f893714fd46f7294aef
MD5 475484e5b6617b9dbde871aef1d43ed1
BLAKE2b-256 1a22d4c717456266207ef54e0f5dea1eb7e4cf67fbdea2c437a817c9b7c0d85d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c550d565b042ed534b35a4ff9dff3b368005aa905864739f75e2fe6832702a1a
MD5 d01c5a3f46572212019bd53fcdfb9415
BLAKE2b-256 5cf37518e1579560af87a3964a009bac96b24e1fd09ec185ef39acc833afe449

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c631fd9af5d76753d7497ec68eb26ad4a028d212ad5ddd0d3ac967793b0b924
MD5 fb98a71c43b73c3d7816a6f96aa6a5be
BLAKE2b-256 e37965e7cbaa5d585d5b2d3297429b1a39b3e165e19b821f32a162e0a9f3c9b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b26969bd5295051bf2bcae6401588fc5c6d62b0a673546cfba41027684a2f586
MD5 c69474bbba7d07675f78cde492410c7b
BLAKE2b-256 f2f6c16d4204200f3b62532e8cac6bc180fed7aea36ba8ad93c128e7827e7f77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b3dfbc79b91e5279580149e415fc1def244fa7f671995bf3859ddd7ab8ebd23b
MD5 0dfe311dfefc0844298b533f04e50de2
BLAKE2b-256 88116687c00f1140f21a0e3db841567ac9f4621f7e67334ad32c187775cf6b77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f3d8505be3a4f6664c0cb116ed7e12b05d7da8fd93cbd9a3e85b4e4ba87e2a5f
MD5 3b9d474a57058ff25e4232bf28b24ff1
BLAKE2b-256 6d3bad0f3ae880aa76500f558f37d123aa4ee399e66f35dd11449a722d3307d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c3d34234f576cd3f6b22bb927e9e9b00cf230ba82c0f453351cad67fe60824a6
MD5 210297d45dd0366cc9558a69a093683a
BLAKE2b-256 f74b06fdf35fad83a112e4a68963e0b287f1d712b7acb45666375c4a85eb4cd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-10.2.5-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 236982348edd9edbb19577e25f7607d2a983da198e3c665d815c3c468a7d2a9c
MD5 447e54970be1df76cd888adfb228d5cb
BLAKE2b-256 d3dd94bae7ba705c26c864729f5002271df11c6a3becf792299ef561eee006b5

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