Design problem in InvertibleOperatorMixin
The constructor for InvertibleOperatorMixin
currently allows specifying iteration starting values via forward_x0
and backward_x0
. This is problematic for several reasons:
- these vectors have to live over the full domain of a later operator application call, and thereby restrict the general applicability of the operator which is one of Nifty's current design goals.
-
forward_x0
is used intimes()
andadjoint_inverse_times()
although it is most likely not a good guess for at least one of both. Analogously forbackward_x0
. - A starting guess is directly coupled to a concrete argument for which the operator is invoked; it is not a property of the operator, but of the operator/argument combination. So if one sets up an
InvertibleOperatorMixin
using the currently available tools, it will only work well for a single specific field.
I would much prefer being able to supply a starting guess with every times()
(or adjoint_times()
etc.) call; I'm thinking about a clean approach for this. Suggestions are welcome!