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

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ert-9.0.5-cp312-cp312-macosx_11_0_arm64.whl (741.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ert-9.0.5-cp312-cp312-macosx_10_15_x86_64.whl (763.2 kB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

ert-9.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (935.8 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ert-9.0.5-cp311-cp311-macosx_11_0_arm64.whl (728.8 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ert-9.0.5-cp311-cp311-macosx_10_15_x86_64.whl (749.9 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

ert-9.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (934.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ert-9.0.5-cp310-cp310-macosx_11_0_arm64.whl (727.8 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ert-9.0.5-cp310-cp310-macosx_10_15_x86_64.whl (748.9 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

ert-9.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (935.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ert-9.0.5-cp39-cp39-macosx_10_15_x86_64.whl (748.9 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

ert-9.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (935.2 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ert-9.0.5-cp38-cp38-macosx_10_15_x86_64.whl (748.7 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 529806d8768a03d5b93570e123bdea102d24464d9260fe9242b1a741944826ba
MD5 2551cf911efea0be0ff28003683e935f
BLAKE2b-256 4e801d902e3590fdf0bf2d46231da7a1bba67961f451019a0a1c6b3229a70949

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fe4a3907896ed671478d0f6310480ef06a1f086a04c952b3c67ddf9aea0cd1ec
MD5 93766b82c52a7438c5ef06916417162c
BLAKE2b-256 bdcc24f634b96934159cf96bc1a486d378abfdc8262632ed2d1ec6160e5cfae0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d62e273d00864ae076f50fdb1039a0f860ecce1006611ccb934dfbc8677818db
MD5 847b6a0fc291cd35fe0b5ae40337556a
BLAKE2b-256 05843aab692a1f5d2e5e581d33738f26b1b82f595782861da859b29d6757a5e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f2e637572bb452d43c55e149a23f195524405f5dbe2e745881b0b48d3cb88293
MD5 a0cbe7049af70a12bd4ca9c368103da1
BLAKE2b-256 c0f717103f118a6a699306638f26834b1402ba8b478c6d6565532de157c4379a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9d6999581facec756dfb09a33ef357434d235570facd4053dd267af9ef34b488
MD5 2e70550ac6b3c306030799441dab7e01
BLAKE2b-256 bcf9d03f6fffb6238de94079149aa109e8f51fe86428642765ba59e926a7ad9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ecc1c6043a2e50bd02e1e6649c23aaf90861019b01761796f3403d96a9650972
MD5 fa57ebeaecfdd5cc2e9e732aab3eca1f
BLAKE2b-256 406d3447703941beb3054e294d35bca4dd11ce0fe194e704a8c8f8829fcb55db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 563aec85f8a06cbb7a5a88e82c25e2fd6a32ef2e53cb130b5f7b99aada627a37
MD5 ec193ddab3c5b5e0f707432fbda2ddc8
BLAKE2b-256 e205203ec0321e826544f70c23f28e09f8d785bc29d574bd8cb6d83865ff754c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c9f275bd22b23cf027990dae2fb89bbfc816f865d155a3b4105fdc5d4793dd57
MD5 1d050fe24b12450d8a84d7e29f4012e1
BLAKE2b-256 82911b3ed36f07450b78a5631a77c9efd0d35153e71760f2d2ac80ce33439c30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 050f2f948481b0e66e5dfacaf14ce99cb0227839c7a40455d9383e990f365d21
MD5 0f39a6944b9e9fcfd3fcb2edec837ff2
BLAKE2b-256 7c1e8f88c3d5164af999a214528ef1ab514db54cfb845eed996ccc1e7b2b769a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c6a5ee2a77140e4a35e0a592c6662b2ce9e01abbd6c8ae9030a29640ba156e1
MD5 ce1fe7b9e4d52015a54f1bb5c5e70fe0
BLAKE2b-256 7ad712daa2c80a68009270565b3afabd50c3161e7c5b2d1c523f6e3fe8d2ef6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b4d46c9822087988ea97df80124dd339070e3a4fbc5879272420dddfce25f6fc
MD5 865a6fd775deaab844111044a2b96ca5
BLAKE2b-256 b7ca47f923e48fe82dd1c22ff3d153cf6336e550d7ffc858bd1da3601c09793d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 921be2fcbbcf464789ec49123102732c51ae440a88d508e99a3fabfba761c2fb
MD5 e40f539c7888674fff16d0586d05fdf9
BLAKE2b-256 a55e1a9b7727d17d2b6b2f8b095c23da1ceec7c48239d28ddb1aa2776220865b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-9.0.5-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4a3f502293f322e2ea42f7c237bffd9a57c23c80f940cf71cc467d1123970719
MD5 06e803e54924a4b7243cf061520fb570
BLAKE2b-256 d19e9e19f77b350158954c2696374367eae2da9fa83939be01337e767eba614c

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