diff --git a/slides/python.md b/slides/python.md new file mode 100644 index 0000000000000000000000000000000000000000..63cac18dad8ccaac46356e02de339a56424315aa --- /dev/null +++ b/slides/python.md @@ -0,0 +1,61 @@ +--- +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](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/tree/master/test/python) + +## Configuration + +* Enabled and built by default! +* `dune-common` configures a [Python virtual environment](https://docs.python.org/3/library/venv.html) (`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](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/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 + +```py +import pyvista as pv +mesh = pv.read("test_1p_box_numeric-00000.vtu") +mesh.plot(show_edges=True, full_screen=True) +``` + +## Further resources + +* [DuMu^x^ documentation](https://dumux.org/docs/doxygen/master/python-bindings.html)