python.md 1.73 KiB
title: Python bindings
DuMu^x^ Python bindings
Using DuMu^x^ from Python
- Based on just-in-time (JIT) compilation of Python binding code
- Experimental feature: only a small subset of functionality is available
- See Python test apps
Configuration
- Enabled and built by default!
-
dune-common
configures a Python virtual environment (dune-common/build-cmake/dune-env
) - Automatically created and set up when running
dunecontrol
- To activate:
source dune-common/build-cmake/dune-env/bin/activate
Configuration
For more control, follow
./dune-common/bin/dunecontrol bexec rm -r CMakeFiles CMakeCache.txt
python3 -m venv venv
source venv/bin/activate
./dune-common/bin/dunecontrol --opts=dumux.opts configure
./dune-common/bin/dunecontrol --opts=dumux.opts make -j
which installs Python bindings into the activated virtual environment.
Example Python code
- See dumux/test/python/test_1p.py
- With virtual environment activated, run
python3 test_1p.py
- First time takes very long, due to a lot of JIT
- Second run is much faster
Small exercise
- Increase the number of grid cells to 100 \times 100
- Add a constant source term of 10.0
- Note that you don't have to recompile
- Visualization:
pip install pyvista
and append
import pyvista as pv
mesh = pv.read("test_1p_box_numeric-00000.vtu")
mesh.plot(show_edges=True, full_screen=True)