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 "ert[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. This means that, for example, Eigen computations will be checked and will abort if preconditions aren't met (eg. when inverting a matrix, it will explicitly check that the matrix is square). 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

This version

8.4.8

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ert-8.4.8-cp312-cp312-macosx_11_0_arm64.whl (740.0 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ert-8.4.8-cp312-cp312-macosx_10_15_x86_64.whl (774.2 kB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

ert-8.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (936.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ert-8.4.8-cp311-cp311-macosx_11_0_arm64.whl (727.9 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ert-8.4.8-cp311-cp311-macosx_10_15_x86_64.whl (761.3 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

ert-8.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (936.0 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ert-8.4.8-cp310-cp310-macosx_11_0_arm64.whl (726.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ert-8.4.8-cp310-cp310-macosx_10_15_x86_64.whl (759.9 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

ert-8.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (937.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ert-8.4.8-cp39-cp39-macosx_10_15_x86_64.whl (759.9 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

ert-8.4.8-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-8.4.8-cp38-cp38-macosx_10_15_x86_64.whl (759.9 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a580eb4542cfbd9f0dc3f565b7b3921c3f3f16420d88aaccea7132b87fb251ee
MD5 3478fc0d42d417a6bbb3454be887d957
BLAKE2b-256 d01490fb2bd8bdd26e4a0c314e59670782decf5e559df82e0b27290c61e753cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b02072a26c019b7dea834be9f9e5426d50674b1c121eb10c1101836454292f20
MD5 3ae1eeb3bbab2bb4354a7e7c56337817
BLAKE2b-256 e150c7ff124a32c509e512c616d44c7e261db69621cc1560e89b51c59d900deb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f102f61b1cdba7515553529cdc46ca5db29e93447277a481ea790106e220182f
MD5 df9b41e7eecb9c232ef964408ae09af3
BLAKE2b-256 e29611896ad91ca04419ec2cc8c8465e7763792a452e24e848ef62040d588317

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6038ef792ec1311523f0007f4dd858f9085bb4a7a00b9d6a217ce7e4089c8f32
MD5 1e2533cbd7a3715b1b8d94870234c9d9
BLAKE2b-256 7af93f13be1a3973dac044ca771bb80ed61821fc0883db3d856fac0dcb27c692

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f266b959084dc13a954e99dcf9ba3c3bb8cd0f37fa6ec05966ca7570819ca97
MD5 106cb320ce0d821e5e9492ec302bcc1b
BLAKE2b-256 9e944d9ada90bc870b4553e2adefdc21a524152dc22b2631f7e609c25b44349c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e6fd83e61757f787d09dc54939f4141d80027254aa4b4b80638980b19d15fadc
MD5 fd3de6789a360040055ec22e18965a74
BLAKE2b-256 609f27ab94dd63a9dca15910196c24ae81549d8486efa76fa4f932ce0473e786

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6862cc51b684521fdfe48e59dbf8ad6ca7b6e53081ed210014909584826aeb4a
MD5 239ad7751958f7faf418394bb72d650d
BLAKE2b-256 b3cb9a9891702d0cebb24833157341cea4db8b15e7c9ef9f0d35da752d23419a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 27efb1524ebb19b251c924e4bf1de533f8b5a1f2b6dfcbef3c0a9321568cfaef
MD5 afa629d75c3c72efefee80d369cb2c39
BLAKE2b-256 e6d7bf92f8dda109d5a50e85bb61629970d4e699b027219ecb938847812f9359

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ca72af53e31603cea66ed52d631fecbdcc081881fb543f344c8861601dd9b02d
MD5 7a8e78d97efb5293c181c48dd3faa697
BLAKE2b-256 b4a9d70671dca6960fb93c88284ebd1dc9d5e83ddc039ef9979965288ee6c41d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 972ee90348b898bd692a25d542894c62bae406248d0251cd8dcc8c85ade0eb55
MD5 6da40b0d5558fd4360138c84b3f624e5
BLAKE2b-256 bcbae5dd41f3da59a7506e18366d3995da4de10a854b9432028a3d0c01375b49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 76af0044a9e54d769366f57f22fecfc39a6c32a544197dc49fe277a2749c1440
MD5 97a5ed4cf85d11f5aa8291252f90b341
BLAKE2b-256 fae5fc46ecb6689606dca763e930384815bb1361a3b7d24283f7ac3105b7c3e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3ec6eef472d936ca8f92b535132e3f7dcfac231a649e6ee6955d0574e678a11e
MD5 c6d9e604af7c2405294ebaaa67185f38
BLAKE2b-256 8a011985a2bc48b09056ee5f382716db85766377533b51eaca3b03636b40e308

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.8-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 281e52335d92a4a67f4829a1447b87da609e653edf1b03b18df2dea10e6843b8
MD5 b2b884f39e09c692154133f304290040
BLAKE2b-256 20b4e12eb082b8f9667700122698556d72c05f4b9d49d161c8a323850490076a

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