Skip to content
Snippets Groups Projects
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

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)

Further resources