Revisit template arguments
Introduce linear algebra backend or similar to make usage simpler
Adapt all linear solvers to provide
In Newton call
linearSolver->norm(r)if available otherwise call
assembler->residualNorm();(depends on !2311 (merged) to be merged)
Deprecate conversion of multitype matrices in Newton (do in solver instead if necessary)
Depends on !2310 (merged) to be merged.
The matrix and vector type now have to be known to construct the solver. This was previously delayed until the solve call but made the structure kind of intransparent because it wasn't really clear which vector type has to come in but only specific types work anyway.
Hard coding the solver hopefully reduces compile times wrt the factory. Also the implementation should be
- more compact than the old backends
- have more runtime option due to parameter tree-based params
- work in parallel as well
If this works out, we would deprecated the old solver backends.