Skip to main content

Ensemble based Reservoir Tool (ERT)

Project description

ert

Build Status PyPI - Python Version Downloads GitHub commit activity GitHub contributors Code Style Type checking codecov Run test-data Run polynomial demo Run SPE1 demo License: GPL v3 Code style: black

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

Prerequisites

Python 3.6+ with development headers.

Installation

$ pip install ert
$ ert --help

or, for the latest development version:

$ pip install git+https://github.com/equinor/ert.git@master
$ ert --help

The ert program is based on two different repositories:

  1. ecl which contains utilities to read and write Eclipse files.

  2. ert - this repository - the actual application and all of the GUI.

ERT is now Python 3 only. The last Python 2 compatible release is 2.14

Documentation

Documentation for ert is located at https://ert.readthedocs.io/en/latest/.

Developing

ERT uses Python for user-facing code and C++ for some backend code. Python is the easiest to work with and is likely what most developers will work with.

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 .

Trouble with setup

If you encounter problems during install and attempt to fix them, it might be wise to delete the _skbuild folder before retrying an install.

Additional development packages must be installed to run the test suite:

pip install -r dev-requirements.txt
pytest tests/

As a simple test of your ert installation, you may try to run one of the examples, for instance:

cd test-data/local/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 2 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 (res/_lib.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 first 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 he 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.

Testing C code

Install ecl using CMake as a C library. Then:

$ mkdir build
$ cd build
$ cmake ../libres -DBUILD_TESTS=ON
$ cmake --build .
$ ctest --output-on-failure

Building

Use the following commands to start developing from a clean virtualenv

$ pip install -r requirements.txt
$ python setup.py develop

Alternatively, pip install -e . will also setup ERT for development, but it will be more difficult to recompile the C library.

scikit-build is used for compiling the C library. It creates a directory named _skbuild which is reused upon future invocations of either python setup.py develop, or python setup.py build_ext. The latter only rebuilds the C library. In some cases this directory must be removed in order for compilation to succeed.

The C library files get installed into res/.libs, which is where the res module will look for them.

Example usage

Basic ert test

To test if ert itself is working, go to test-data/local/poly_example and start ert by running poly.ert with ert gui

cd test-data/local/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-2.36.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ert-2.36.0rc1-cp310-cp310-macosx_10_15_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

ert-2.36.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ert-2.36.0rc1-cp39-cp39-macosx_10_15_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

ert-2.36.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ert-2.36.0rc1-cp38-cp38-macosx_10_15_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

ert-2.36.0rc1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

ert-2.36.0rc1-cp37-cp37m-macosx_10_15_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

ert-2.36.0rc1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

ert-2.36.0rc1-cp36-cp36m-macosx_10_15_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.6m macOS 10.15+ x86-64

File details

Details for the file ert-2.36.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0665f3171d6039474a4d37830209108bbef9e4e6b39db5963fc98eef2d2187cf
MD5 456f6b014d35d1dc109db5a35d74eee1
BLAKE2b-256 f0c84c10b020cbfdaad72aa77d8a37bca4b08d1a0e36d5fccdfbbc8bda176c08

See more details on using hashes here.

File details

Details for the file ert-2.36.0rc1-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7de8b97a2de2770231855f8319415e67666b2faa0c5aa353ced67dbd3a9f004c
MD5 5cc71d6e52358d9e08e6d5cd7285d0e8
BLAKE2b-256 551ea68508aed1c18031d4260edcefafd6db89f2188c596863e32c05a42ebc48

See more details on using hashes here.

File details

Details for the file ert-2.36.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0355495e4bd1e220e48da675d0663202ba98f7a547258643185d6faddff186cb
MD5 322727671cfbad09a03a4a464b95560c
BLAKE2b-256 524212a36ac1447f12b34cd51879d0eae911add8f8189274adde3cd802e3004e

See more details on using hashes here.

File details

Details for the file ert-2.36.0rc1-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 df6c5e9f969acacb0a2d1383690dd1db5c2c3afca3e1fb16859a34076b20c473
MD5 7525301336d4b6dab8010aad11b7ce26
BLAKE2b-256 292faa3f882eb6f7d8583e0f20668619a8fdfca34c8ef044d354cffc0d071671

See more details on using hashes here.

File details

Details for the file ert-2.36.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce1ad178bfd55734329c299f11a7858f903499d90c668667ac742d0e9deeb3d7
MD5 ce9641d9ef0a3024f2732590fa59401d
BLAKE2b-256 c08edbcb8dbc8700b6d7f656390961e08005e6c7c5e6144687e6f340e99a18c6

See more details on using hashes here.

File details

Details for the file ert-2.36.0rc1-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6b2b043614cca0a1dd975a2b6284a1b2f0dab548be7886c5e5a4ac0d71d6d10f
MD5 4709ad60a6bb31be9b02ebef972d08f8
BLAKE2b-256 06664e972baf1319abe4e0abf4950b12c931269f52b64a587a768424544800d4

See more details on using hashes here.

File details

Details for the file ert-2.36.0rc1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d530bb050106f8d5d7da1d5d109d5334c05e407c66c8f65a2d0ecb537af90e4f
MD5 60a83cc2db0fbd9cafe63095ab58cc74
BLAKE2b-256 f618d9fc849233cd0ac195cc99240cf798e10eef5f4a42a1e3fb0859a68852dc

See more details on using hashes here.

File details

Details for the file ert-2.36.0rc1-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 14646d1481ef0a30f3ded8b57e2c7979383d2c3ac87173b5c2410248c780ea17
MD5 df24dc7b0873d64e4c3e90870de78712
BLAKE2b-256 0e60967ba4334f907583cd6945d1dfb81eb560d71ff860efdc06adf2a2163ad5

See more details on using hashes here.

File details

Details for the file ert-2.36.0rc1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c69e29852a75bdfd1b4ef0735078617294d3380183d8c7f3009e7991fd9c5685
MD5 bc77be7bb090388d43bcbd4e0e343114
BLAKE2b-256 cdcc2e068a002fbf8ca270402fb57522bb4fc5c442850b1ac2bbe77514fc0c83

See more details on using hashes here.

File details

Details for the file ert-2.36.0rc1-cp36-cp36m-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.36.0rc1-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4b7daa274ce86bdd752a1cdb08d53aef0fafa8d03b235a0bba8d853638c72d7a
MD5 269547fb7b54144cf0ec8b4a61b0485b
BLAKE2b-256 6a8e4bbe38a56131be1213f3eb6cab58c7b6cae3741b22b86d036f9c85ecb083

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