I think it would be a good idea to create abstract interface for iterative solver preconditioners and expose them to users. Current preconditioners we use should inherit from that interface, as well. I suggest something like this:
The preconditioner class implements method(s) applyPreconditioner(), possibly overloaded.
Preconditioner interface is exposed to users so they can write their own preconditioners.
Iterative solver base class should implement method setPreconditioner, which should basically set a pointer to external preconditioner instance.
We could wrap preconditioners we currently use in this abstract preconditioner class.
I think it would be a good idea to create abstract interface for iterative solver preconditioners and expose them to users. Current preconditioners we use should inherit from that interface, as well. I suggest something like this:
applyPreconditioner()
, possibly overloaded.setPreconditioner
, which should basically set a pointer to external preconditioner instance.CC @kswirydo