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 aConfigDescriptionand callconfigSetupon 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 likecheckParameter,checkParametersandcheckParameterType, but they are sparsely used. Most oftengetParameteris called and the program crashes if the parameter is missing. - The
configSetupfunctions are not intuitive, they cannot be used to build a hierarchy. For example,GMRES::configSetupdoes not callconfigSetupfrom its base class, and even the base class does not callconfigSetupfrom its base-base-class, so the user needs to callconfigSetupfrom 3 levels manually, even if they just want to configure one linear solver. - The parameter
convergence-residueis set to 0 by default, so the linear solvers will practically never converge by default.