-
Notifications
You must be signed in to change notification settings - Fork 56
Description
Description
For ease of use (and sharing) we should aim to move the linear solver and preconditioner configuration to its own input file, which is referred to in the 4C input file (similar to external mesh files). There are also still open questions in which file format that should happen etc.
As a starting point some initial cleanup of the solver input would be beneficial (see 4C_linear_solver_method_input.{hpp,cpp}):
- Unify preconditioner input variable name (see [solver] Unify preconditioner configuration file input variable #1575)
- Remove rarely used solver input variables (see [solver] Reduce linear solver related input file parameters #1576)
- Get familar with how
4Ccurrently handles the solver input and translates it toTrilinosbased packages (this mainly happens in4C_linear_solver_method_linalg.{hpp, cpp})
Moving to a purely config file based linear solver input:
- For iterative solvers this is already in place, for direct solvers not (we might want to think about a unified approach).
- Remove / reduce the translation steps in
4C_linear_solver_method_linalg.{hpp, cpp}. - Think about when and where to read in the config file and when to translate to a parameter list.
- Discuss which file format to use, a discussion already has been started in [solver] Convert preconditioner config files to YAML #409 preferring
yamlto be in line with our4Cinput file format. - Remove left over input parameters.
After we unified the linear solver and preconditioners under Stratimikos (see #1400), we should make use of that and straighten everything to make the config work with Stratimikos.
In the scope of this effort we should also update the linear solver documentation as outlined in #68.
Example:
Stratimikos:
Linear Solver Type: Belos
Linear Solver Types:
Belos:
Solver Type: Block GMRES
Solver Types:
Block GMRES:
Convergence Tolerance: 1.0e-05
Output Frequency: 10
Output Style: 1
Verbosity: 33
Maximum Iterations: 100
Block Size: 1
Num Blocks: 50
Flexible Gmres: false
VerboseObject:
Verbosity Level: low
Preconditioner Type: Ifpack2
Preconditioner Types:
Ifpack2:
Overlap: 1
Prec Type: ILUT
Ifpack2 Settings:
fact: drop tolerance: 0.0
fact: ilut level-of-fill: 1.0
fact: level-of-fill: 1