# libecl [![Build Status](https://travis-ci.org/Equinor/libecl.svg?branch=master)](https://travis-ci.org/Equinor/libecl) *libecl* is a package for reading and writing the result files from the Eclipse reservoir simulator. The file types covered are the restart, init, rft, summary and grid files. Both unified and non-unified and formatted and unformatted files are supported. *libecl* is mainly developed on *Linux* and *OS X*, in addition there is a portability layer which ensures that most of the functionality is available on *Windows*. The main functionality is written in C/C++, and should typically be linked in in other compiled programs. *libecl* was initially developed as part of the [Ensemble Reservoir Tool](http://github.com/Equinor/ert), other applications using *libecl* are the reservoir simulator flow and Resinsight from the [OPM project](http://github.com/OPM/). In addition to the compiled C/C++ code there are Python wrappers which make most of the *libecl* functionality available from Python. For small interactive scripts, forward models e.t.c. this is the recommended way to use *libecl* functionality. You decide wether to build include the Python wrappers when configuring the `cmake` build - pass the option `-DENABLE_PYTHON=ON` to enable Python wrappers, by default the Python wrappers are *not* included. By default `cmake` is configured to install to a system location like `/usr/local`, if you want to install to an alternative location that should be configured with `-DCMAKE_INSTALL_PREFIX=/path/to/install`. ### Alternative 1: Building without Python ### *libecl* uses CMake as build system: ```bash git clone https://github.com/Equinor/libecl cd libecl mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install make make install ``` If you intend to develop and change *libecl* you should build the tests by passing `-DBUILD_TESTS=ON` and run the tests with `ctest`. ### Alternative 2: Building with Python ### To build *libecl* with Python wrappers you just pass the option `-DENABLE_PYTHON=ON` when running `cmake`. In addition you need to install some dependencies first. Python is not a compiled language, but the `cmake` configuration contains a rudimentary "build system" which does a basic Python syntax check and configures some files to correctly set up the interaction between the Python classes and the shared libraries built from the C code: ```bash git clone https://github.com/Equinor/libecl cd libecl sudo pip install -r requirements.txt mkdir build cd build cmake .. -DENABLE_PYTHON=ON -DCMAKE_INSTALL_PREFIX=/path/to/install make make install ``` After you have installed the Python wrappers you must tell `Python` where to find the package[1]: ```bash export PYTHONPATH=/path/to/install/lib/python2.7/site-packages:$PYTHONPATH export LD_LIBRARY_PATH=/path/to/install/lib64:$LD_LIBRARY_PATH ``` Then you can fire up your Python interpreter and try it out: ``` from ecl.summary import EclSum import sys summary = EclSum(sys.argv[1]) fopt = summary.numpy_vector("FOPT") ``` The installation with Python enabled is described in a [YouTube video](https://www.youtube.com/watch?v=Qqy1vA1PSk8) by Carl Fredrik Berg. [1]: The exact paths here will depend on your system and Python version. The example given is for a RedHat system with Python version 2.7.