diff --git a/python/README.md b/python/README.md new file mode 100644 index 000000000..f24462fba --- /dev/null +++ b/python/README.md @@ -0,0 +1,62 @@ +# Python bindings for the OPM-common module of the Open Porous Media project. + +## To compile with python support: + +- Add the cmake flags `-DOPM_ENABLE_PYTHON=ON` and `-DOPM_INSTALL_PYTHON=ON` +- Optionally add prefix `-DCMAKE_INSTALL_PREFIX=/opt/opm` to install outside + the standard distro directories +- Optionally specify python binary `-DPython3_EXECUTABLE=/home/user/miniconda3/envs/rkt/bin/python3` + if you don't want to use the system python, e.g. use a python from `pyenv` or from a `conda` environment + +### Sample compilation on linux: + +```bash +#! /bin/bash + +flags="-DPython3_EXECUTABLE=/home/hakon/miniconda3/envs/rkt/bin/python3 -DOPM_ENABLE_PYTHON=ON -DOPM_INSTALL_PYTHON=ON -DCMAKE_INSTALL_PREFIX=/opt/opm" +for repo in opm-common opm-grid opm-models opm-simulators +do + cd "$repo" + mkdir -p build + cd build + cmake $flags .. + make -j8 + sudo make install + cd .. + cd .. +done +``` + +Then you should be able to use the module from a Python script. If you installed in +a non-standard directory by specifying `-DCMAKE_INSTALL_PREFIX` you may need to set the +`PYTHONPATH` environment variable before running your Python script, for example: + +```bash +$ PYTHONPATH=/opt/opm/lib/python3.11/site-packages python3 spe1case1.py +``` + +and `spe1case1.py` could be: + +```python +import os +from opm.simulators import BlackOilSimulator +from opm.io.parser import Parser +from opm.io.ecl_state import EclipseState +from opm.io.schedule import Schedule +from opm.io.summary import SummaryConfig + +os.chdir("SPE1CASE1") +deck = Parser().parse('SPE1CASE1.DATA') +state = EclipseState(deck) +schedule = Schedule( deck, state ) +summary_config = SummaryConfig(deck, state, schedule) + +sim = BlackOilSimulator(deck, state, schedule, summary_config) +sim.step_init() +sim.step() +poro = sim.get_porosity() +poro = poro *.95 +sim.set_porosity(poro) +sim.step() +sim.step_cleanup() +``` \ No newline at end of file