Add model factory and reduce number of pre-compiled model instances
What does this MR do?
Use CPP definitions to compile a single executable for every combination of spatial dimension (DORIE_DIM
), polynomial basis order of the Richards solver (DORIE_RORDER
), and of the transport solver (DORIE_TORDER
, currently only supports 0). Add CMake module DorieCompileInstance
defining default targets, maximum orders, and a helper function. The executables are then found by the CLI, which parses the config file and assembles the correct executable name.
Add a ModelFactory
for instantiating Richards and Transport models. The factory only serves as switch: The actual implementation of the models is hidden. The factory serves for checking if the config file settings match the compile-time settings. The model factory is most of what makes up the executables, and the library contains the model instances.
Still to-do
-
Apply adaptivity policy in model factories
Is there something that needs to be double checked?
-
Do we want to fix the warnings now? (Except for PDELab warnings in clang)
Can this MR be accepted?
-
Implemented ModelFactory
-
Updated docs -
Pipeline passing -
Make docker/dorie.dockerfile
a two-stage Dockerfile for reduced image size and less problems with deleting left-over binaries -
Added entry to CHANGELOG.md