This project is archived. Its data is read-only.
Refactor parameters for linear solvers
- It is not sufficient to create an empty `ParameterContainer`, set a few parameters and pass it to some class -- the user also needs to create a `ConfigDescription` and call `configSetup` on all classes where they want to pass the container. - The user should not be forced to deal with default values. Default values should be taken implicitly when the parameter is missing in the `ParameterContainer`. There are functions like `checkParameter`, `checkParameters` and `checkParameterType`, but they are sparsely used. Most often `getParameter` is called and the program crashes if the parameter is missing. - The `configSetup` functions are not intuitive, they cannot be used to build a hierarchy. For example, `GMRES::configSetup` does not call `configSetup` from its base class, and even the base class does not call `configSetup` from its base-base-class, so the user needs to call `configSetup` from 3 levels manually, even if they just want to configure _one_ linear solver. - The parameter `convergence-residue` is set to 0 by default, so the linear solvers will practically never converge by default.
issue