Adds more Python bindings to the
dumux Python module. In particular the property system, parameters (from cmd line, file, or dictionary), the assembler, problem & spatial parameters are wrapped. This allows running an entire simulation (using the dune istl solver bindings directly).
Known issues/unsolved challenges:
- Currently the only way to create problem/spatial params is by writing these classes in Python. This offers full runtime flexibility but also has a strong runtime penalty. Other methods to construct more efficient problems/spatialparams need to be investigated in the future.
- The property system mechanism may not be able to fully capture circular dependencies. For example the problem depends on the coupling manager type but the couplingmanager also needs the problem type. How do I inject that knowledge to the problem?
Add spatialParams similar to problem
Add proper test
Make CI work (test & lint Python)
Fix issue with Parameters (
-DBUILD_SHARED_LIBS=TRUE, i.e. using shared libraries instead of static libraries is necessary with Python code. Linking has to be done at runtime so that the parameters singleton is correctly linked in all generated libraries. This worked on macOS which builds shared libs by default but for Linux we need to explicitly enable it, see dumux-docker-ci!11)