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

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ert-8.4.2-cp312-cp312-macosx_11_0_arm64.whl (873.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ert-8.4.2-cp312-cp312-macosx_10_15_x86_64.whl (934.2 kB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

ert-8.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ert-8.4.2-cp311-cp311-macosx_11_0_arm64.whl (861.5 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ert-8.4.2-cp311-cp311-macosx_10_15_x86_64.whl (920.9 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

ert-8.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ert-8.4.2-cp310-cp310-macosx_11_0_arm64.whl (859.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ert-8.4.2-cp310-cp310-macosx_10_15_x86_64.whl (918.2 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

ert-8.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ert-8.4.2-cp39-cp39-macosx_10_15_x86_64.whl (918.4 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

ert-8.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ert-8.4.2-cp38-cp38-macosx_10_15_x86_64.whl (918.3 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7cc829cb89189b7b401fd6240deb11ba635240bfdb1c41ad8636199f7e105a62
MD5 82be42573a26a1a2c2ec93a56d7188a7
BLAKE2b-256 66f1fc3de5e2601697511381058f8964ebac65e82425c98e781ea65da8fc5c0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 443332f47ed169d8de88a6a7ff3255280cb306348fd21a1db057095c622dec6c
MD5 d0cfe1c7b2c3455a3c6f4c0a5f6861b5
BLAKE2b-256 e4bc693967af27104c69de07b31a18a4a48b934020728e59cabf284cced735bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 94f256b7628b23dc41badf0dfb065c6eed06fdd9bf38bdc658d6f7415146ca5a
MD5 3cd8e349eaa7513c565d9c27232ea571
BLAKE2b-256 1d1d4c2079f9666737c8b18c1ea5433c64eb563b3e952e3a6eccfd87cfe3693c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b54125a3402c335d3c121c85310df481cbd54e92139553d2e0e05eaae4a854e7
MD5 af12480df5ec9b4923ed5f8a3e6d47f3
BLAKE2b-256 1ac8b363bcef23f5252e97b7b0f2b0c7367da96a3c09060502ef0448350cada8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc9c6fbc3e0020b5decd0faae16a264c32e813d5efea20652f9d08dfee4a47af
MD5 78a8e70e4ef3d6ad4c97d259abccffe2
BLAKE2b-256 5ab536255dcbe37109b3bfc991657b951189fb1b15db6a1ee9d1fffedca5dc90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6437c7f570c52bec4b2fb20e5a8d64d07eb14448f032f5dc7facd4419c9cba99
MD5 4d3685039fc7c3cc874ebb848b280257
BLAKE2b-256 df5c94b94b266d341bee7ee68d97d624e27a129e17fe612066d44805e028fc30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e930b4faa1a3e863766efceb0340a9ac2cc550047ba469a02d6a19ff96d50e61
MD5 50ac5f092c3f2d8dd0e6cb1fc63322c9
BLAKE2b-256 e934417868d5f759ffdba13b33548597ea23e6a8de9a3b32b25a3f8ead2001da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f2e381f89e1b42ee071e6a565e11fc890219b19eb5782f25070b6e71237157e
MD5 f9599efd2cf267fe58a0cde775a17436
BLAKE2b-256 9a5900c0cffa0d82b40e2bd03b761d556aedf8944344e747f2fb35145d3ac4f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1dff0905eb883e8153b92a6eed0e98dc6207c31be4047d55288bf2ac24ad0806
MD5 de222fc2c8f9492abd2d75feaffe5d54
BLAKE2b-256 ccbfc0f1e8d92d293a0b9c731fdf2cfd54bb1a5abbdc2bb60270e041cf249edf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ecb2ba2e86bc4d56eebc23660629918269fb76faba4076cb911c2dc1ea183920
MD5 09e8429d986033e0705f53ac86729123
BLAKE2b-256 17cebf5672795c777a566ac7b210583fd9e354604ec4b587a0b8e88b31515191

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 350a6612d95384a73774b22e244df4769ec9596a8c4c1001ddad5203429fefc2
MD5 40ef4a0a389dfb2e93f4f85ea32ad1ab
BLAKE2b-256 93211c0646bfc551e82ca4f457efd8dbb096ee9f7c2c03caf037027d520d7e4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c459f1241a354a1389412103890f71a88520615e61e1f357ccc62733fe7bf22
MD5 9ba155cd1f980d996c20d8febc3b0f32
BLAKE2b-256 96005c572c24ac1804d5165cd66e39ef75b01552b624878962db3891801ce8fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-8.4.2-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 fb517ce47c28881657104fcf99fda701cdb43a655e00471d9edb8a0a41927f2d
MD5 00f0eaee3b5b0af2254a7fe5a3d3e0a1
BLAKE2b-256 1bd49555d4a3fa17ad3cefeffc9df9689c6f0c9eb8e2706e0c6c77326ee7fa13

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