[WIP] add dynamic interface for category check to solver/precoditioner/scalarproduct/linearoperator
The solver interfaces use dynamic polymorphism, but currently it is not possible to fully benefit from this feature. We want to allow the user to take full benefit from a dynamic interface.
We intend the following changes:
-
new method category()
to check for the sameSolverCategory
of different components at run time. This is a slight drawback compared to the current compile time checks, but it adds a lot of flexibility as we will be able to write factory classes for solvers and compose/exchange solvers at runtime.-
update solvers to the new interface -
update preconditioners to the new interface -
update scalar products to the new interface -
update operators to the new interface -
update AMG implementation to the new interface
-
-
an additional intermediate class IterativeSolver
encapsulates the data of almost all solvers- the solvers inherit from
IterativeSolver
and can usually reuse its constructor - the solvers only have to implement one apply method, the other is implemented generically
-
update all solvers to implement the apply method taking a reduction parameter
- the solvers inherit from
- cleanup interface headers
-
move ScalarProduct base class to a separate header -
move interface headers to dune/istl/common
-
- cleanup object creation
-
add a unified constructor interface taking a ParameterTree
-
add factory classes to create solvers/preconditioners/etc. -
get rid of ScalarProductChooser
-
(no guarantee that the list is complete