Commit Graph

21 Commits

Author SHA1 Message Date
Markus Blatt
02666a6677 Use CMake's find_file to find install.py for Python installation.
This seems to be a more stable approach as it does not produce
```
/usr/bin/python3.9: can't open file
'/home/mblatt/src/dune/opm-2.9/opm-common//install.py': [Errno 2] No such file or directory
```
for rebuilds after failed attempts.
2022-09-30 18:05:40 +02:00
Håkon Hægland
8e3ce1aed9 Only copy necessary files from python folder
Instead of copying the whole python folder, only copy the necessary files to
the build directory. This means the opm, test, and test_data directories.
2022-06-10 12:19:24 +02:00
Håkon Hægland
8af152dcff Make Python opm package a namespace package
Convert the Python opm package from a regular package to a namespace
package such that opm-simulators and opm-common can contribute to the
package from different filesystem paths. In this way, the two packages
opm.simulators and opm.io (in opm-common) can have a different parent
filesystem path.
2022-06-10 11:37:15 +02:00
Håkon Hægland
19b074805d Use the new opm-common_PYTHON_COMMON_DIR
Use the new opm-common_PYTHON_COMMON_DIR to locate the install.py
script if we are building against an installed opm-common.
2022-06-10 11:31:48 +02:00
Håkon Hægland
9b0c63b325 Also use installed install.py for copy_python
Also use the installed install.py when copying python files at build time
2022-06-10 11:31:48 +02:00
Håkon Hægland
696f830eab Use installed install.py
If we are building against an installed opm-common, use the installed
install.py script instead
2022-06-10 11:31:48 +02:00
Håkon Hægland
3c0498e55f Dynamically update schedule from Python
Adds some test cases that show how injection properties in Opm::Schedule
can be dynamically modified from Python.
2022-06-10 11:31:48 +02:00
Håkon Hægland
91ac3a2a32 Dynamically update schedule from Python
Adds some methods that enables Opm::Schedule to be dynamically modified
from Python. A test case in test_schedule.py illustrates the use case.
2022-05-05 13:10:39 +02:00
Markus Blatt
5c29a3c3e7 Make determining whether to use dist-packages more bullet proof.
Seems like getsitepackages is not always implemented.
2022-03-22 12:06:23 +01:00
Markus Blatt
17ca01b607 [python] Make sure Python files are installed similar to opm-common.
Instead of always using site-packages we query the sitepackages path
from Python. If it matches dist-packages then we use dist-packages if
we install below /usr, otherwise site-packages is used.

This will also make sure that the Python files end up in the same
location as for the ones of opm-common. This should make using them
easier.
2022-03-22 12:06:12 +01:00
Håkon Hægland
5ad65c70ee Initialize blackoil simulator from schedule shared with Python.
Adds a new constructor to Main.hpp that takes shared pointers to Deck,
EclipseState, Schedule, and SummaryConfig. This makes it possible to
share these variables with Python without worrying about lifetime issues
of the underlying C++ objects. For example, a Python script can first
create an opm.io.schedule.Schedule object which is modified from Python.
Then, assume the same Python script creates an
opm.simulators.BlackOilSimulator which is initialized with the same
schedule object. Since the underlying C++ object is a shared pointer,
the Schedule object in Python may go out of scope (get deleted by Python)
without having the C++ schedule object being deleted. And the Python
BlackOilSimulator may continue to be used after the Python Schedule object
has been deleted since it still has a valid C++ schedule object.
2021-09-21 15:52:59 +02:00
Markus Blatt
755c23bfb5 Support using pybind from the system.
This should make packaging easier and more streamlined
to the process on some Linux systems.
2021-03-19 19:56:53 +01:00
Arne Morten Kvarving
16d644032c add cmake option to disable the python tests
due to bugs in the openmpi on bionic, this test fails to
execute properly in pbuilder environments. instead
of rebuilding openmpi without dynamic loading
(which is the suggested fix) and potentially break users
systems, this is a non-intrusive workaround to be used
for packaging.

also add explicit option for python support to make it
visible in cmake frontends.
2020-11-18 10:55:46 +01:00
Håkon Hægland
7011a6c0b7 Restore cwd after each unittest.
Restores the original cwd after each unittest in test_basic.py. Also
simplifies add_test() in python/simulators/CMakeLists.txt such that the
Bash script wrapper run-python-tests.sh is no longer needed to run the
tests.
2020-11-04 13:51:36 +01:00
Håkon Hægland
648bab7108 Implements access to the porosity from Python.
Implements access (read/write) to the porosity from Python.
2020-11-03 17:18:14 +01:00
Arne Morten Kvarving
d286079393 changed: reuse objects if building python inline 2020-09-25 13:47:39 +02:00
Håkon Hægland
3749dcab7d Implements the Python step_init() function.
A resubmission of commit 11eaa3d7 in PR #2403 and PR #2443 and continues
the work in #2555 implementing Python bindings to the flow simulator.

The step_init() method initializes the simulation. It is required for the
Python script to run step_init() before calling the step() method (which
will be implemented in a later commit).
2020-08-24 10:27:50 +02:00
Arne Morten Kvarving
c4be14c0da mark the pybind11 headers SYSTEM to avoid (shadowing) warnings 2020-05-14 11:12:15 +02:00
Håkon Hægland
eda0475459 Install Python module as opm.simulators
Install Python module as opm.simulators and not
opm.simulators.simulators. There is currently no need for two levels of
nesting.
2020-05-11 15:03:17 +02:00
Håkon Hægland
4bb7048ba2 Fixed missing prefix for install destination.
The variable PYTHON_INSTALL_PREFIX was not defined, which caused
"make install" to install to a wrong directory. We set
PYTHON_INSTALL_PREFIX such that the Python module is installed the same
place as the Python modules from opm-common.
2020-05-11 15:03:17 +02:00
Håkon Hægland
f94553c5a7 Python bindings for the blackoil simulator.
A simplified version of PR #2518 that uses a deck filename to construct
the simulator.

After private discussion with @joakim-hove it was decided that the
construction of the blackoil simulator from Python using deck,
ecliseState, schedule and summaryConfig as constructor arguments from
\#2518 should be replaced by a constructor taking only the deck filename
as parameter.

A rewrite of the Python bindings for the blackoil simulator using
pybind11 as introduced in PR #2127. The new version uses the
refactored flow.cpp introduced in PR #2516 and thus avoids duplication
of the code in simulators.cpp.

This PR will be the starting point for implementing the Python bindings
introduced in PR #2403.
2020-05-11 15:03:17 +02:00