mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-12-26 01:01:00 -06:00
62 lines
1.8 KiB
Markdown
62 lines
1.8 KiB
Markdown
|
# 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()
|
||
|
```
|