Skip to content

Add model factory and reduce number of pre-compiled model instances

Lukas Riedel requested to merge create-model-factory into master

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

Related issues

Edited by Lukas Riedel

Merge request reports