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 a tool to run ensemble based on reservoir models. ERT was originally devised as tool to do model updating (history matching) with the EnKF method, now the primary method for model updating is the Ensemble Smoother (ES).

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 is Python and C software. To start developing, install it in editable mode:

$ git clone https://github.com/equinor/ert
$ cd ert
$ pip install -e .

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

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

For Mac-users The default maximum number of open files is normally relatively low on MacOS. 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.

ERT is meant to be installed using setup.py, directly or using pip install ./. The CMakeLists.txt in libres exists, but is used by setup.py to generate the ERT C library (the C library formerly known as libres) and by Github Actions to run C tests.

ERT requires a recent version of pip - hence you are advised to upgrade your pip installation with

$ pip install --upgrade pip

If your pip version is too old the installation of ERT will fail, and the error messages will be incomprehensible.

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. This is described in the Post installation section of the libres README. 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.

In the location test-data/local/example_case is a small ert case which can be used to verify that your installation is basically sound. The example config file looks like this:

-- This ert configuration file is an example which can be used to check that your
-- local ert installation is basically sane. This example is not meant to be used
-- as an automatically run integration test, rather it is meant to be tested
-- interactively. In addition to the compiled application this will also verify that
-- the various configuration files are reasonably correctly stitched together.
--
-- To actually test this invoke the ert binary you have installed and give the path to
-- this file as argument:
--
--    /path/to/installed/ert/bin/ert example.ert
-- 
-- The example is based on the ECLIPSE100 forward model, that implies that you must
-- configure the local eclipse related details corresponding to your site[1].
-- 
-- NB: the current case has *not* been carefully constructed to demonstrate the
-- capabilities of ert; from a model updating perspective the current case is
-- totally uninteresting.
-- 
-- [1]: This amounts to editing the file ecl_config.yml in the res.fm.ecl python
-- package from the libres installation. See the documentation in the
-- ecl_config.yml example file supplied with the libres distribution, or
-- alternatively the "Post install configuration" section in the libres README. 

NUM_REALIZATIONS 20

QUEUE_SYSTEM LOCAL
QUEUE_OPTION LOCAL MAX_RUNNING 4

RUNPATH      output/simulations/runpath/realization-%d/iter-%d
ENSPATH      output/storage

ECLBASE   EXAMPLE%d
DATA_FILE eclipse/model/SPE1.DATA
REFCASE   eclipse/refcase/REFCASE

GEN_KW MULT_PORO templates/poro.tmpl   poro.grdecl  parameters/poro.txt

-- This job will copy the file eclipse/input/schedule to the runpath folder. 
SIMULATION_JOB COPY_FILE eclipse/input/schedule  


-- This forward model job requires that you have eclipse version 2016.02
-- installed locally, feel free to modify this to use a different version if
-- that is what you have installed.
SIMULATION_JOB ECLIPSE100 2016.2 <ECLBASE>

OBS_CONFIG observations/observations.txt


-- This tells ert that you want to load all summary vectors starting with 'W'. 
-- 'F' and 'BPR'. To be able to use the wildcard notation this way you need to 
-- specify a REFCASE.

SUMMARY W*
SUMMARY F*
SUMMARY BPR*

NB: Depending on which reservoir simulator versions you have installed locally you might have to change the eclipse version number 2016.2 to something else.

To actually test this go to the test-data/local/example_case directory and start ert by giving the full path to the installed binary:

   cd test-data/local/example_case
   /local/ert/install/bin/ert example.ert

Then the ert gui should come up and you can press the Run simulations button. In addition to the gui there is a simple text interface which can be invoked with the --text option.

Configuration

The site_config file

As part of the installation process ERT will install a file called site-config in share/ert/site-config; when ert starts this file will be loaded before the users personal config file. For more extensive use of ert it might be beneficial to customize the site-config file to your personal site.

To customize, you need to set the environment variable ERT_SITE_CONFIG to point to an alternative file that will be used.

6.2 Forward models

ERT contains basic functionality for forward models to run the reservoir simulators Eclipse/flow and the geomodelling program RMS. Exactly how these programs depend on the setup on your site and you must make some modifications to two files installed with ERT:

6.2.1. Eclipse/flow configuration

In the Python distribution installed by ERT there is a file res/fm/ecl/ecl_config.yml which is used to configure the eclipse/flow versions are available at the location. You can provide an alternative configuration file by setting the environment variable ECL_SITE_CONFIG.

6.2.2. RMS configuration

In the Python distribution installed by ERT there is a file: res/fm/rms/rms_config.yml which contains some site specific RMS configuration. You should provide an alternative file with your local path to the rms wrapper script supplied by Roxar by setting the environment variable RMS_SITE_CONFIG to point to the alternative file.

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.35.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.35.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.35.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.35.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.35.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.35.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.35.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.35.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.35.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.35.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.35.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d1a0a294c06d8a49b51d8ff3c5b909bfe07a4dcc1a11542642b8fce6209180b9
MD5 612875dc8562196b7287a9d5c944cc0e
BLAKE2b-256 6fe9725c99bb580458f3054748150e650afdcef93c160432f6533bed4767978e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 cc0d722d2035c78c6855271dbf2ba374962fe98a1003c09559f94707604deb2a
MD5 92d41cac0e754a2ac94b5d90d79dfc3a
BLAKE2b-256 f95b473ae6dd88288f38e34fd8eac89c8eb98c48ca07e5e175a1c3c7f3ab7e9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1784c4433f48d43518a0dcc8946b8b930334ae211f54728fd7bd335859ee44d6
MD5 fc2e2a9bfe90b13ee05cdb82ab7c440f
BLAKE2b-256 d4eb534f2b5ee09171b9e416a08c6c3ce04ba90299f3f3fe4e70a4e340ba80a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9dd88d5a51b06f202c034049c8bee1dc5f1e809d896ebf9bfab9d9fe3afefcd0
MD5 1a3ff0a78a4c12076262becc4b8ed66d
BLAKE2b-256 d6ec70399ee2238535a92dd47877b76fa9664cbd056afd47fe51d786e6ee4931

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 20e4155800e7275ecba7d49e79969c18b9a56169f8e63bffb6f551b8e54727d4
MD5 c7a5d48c6ee354252311b8096b48f1bc
BLAKE2b-256 de747c7535cee438ed018efa509a467ac2236565e9a9a6ad84dcd31468a9f388

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c9c3dc0afdf14e1e9dc272aebfbabf04b49e867c807eddca708b99b4bcf67e87
MD5 668b6ac698f23abc8a2ef5d6f1f36aab
BLAKE2b-256 e7670cb8a590c0b5ca1fd5d1df362503015cd3495148f23ca1f13594d5b3e86a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6b2d3d9945d6a340071a6583e932fcc3c17a2cc7772beede3e0ec0b30f30f6e4
MD5 7ad0165cfc163c4ea65480861b7db178
BLAKE2b-256 3d9d73521d1b2e42bd951d57640854d99b272f464a22c5cb027c13dc1b22b384

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 23845aab35fe6cb3e14b5eb8b355945172df8b8f9c7c9a485b868eb394244636
MD5 5057af816076313ef49940e37e4dfd66
BLAKE2b-256 bb05b8e72070af4b3a140f30ba31a7a67c7f0c9d8b00bd9a62c019935cab827f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c1af0c4212552b5a2b0151c4d830c96078d669f694766c160db16257425610dd
MD5 0646c2ecb6370e42e1684f6428f21466
BLAKE2b-256 ab861a8490e18f57af9112e6f39fa68df19bec91771987e8ff08f3ac2dfdec4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ert-2.35.0rc1-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 36485295fbebac8a9db570ab129f3fda55aeb3534a01e2e66cc020cbac18fa44
MD5 4c7d43692c006c9bd7fb47eb46cee219
BLAKE2b-256 35b00af9397ecbc689e39abecd0be15d6489e81084b1e5b74a9653dfea8a4b41

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