You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If A has a cheap inverse, A+kI nearly always does too. It is very important to exploit this, e.g. for cheap inverses of the W-operator in implicit ODE solves: if the user provides a Jacobian with a cheap inverse, we don't want to waste it.
The solution isn't super clear, but some ideas:
MatrixOperator(A) + k*I = MatrixOperator(A + k*I), rather than AddedOperator(...)
Similarly, additions to identity should be specialized upon for other types, e.g. tensor product operators. The idea is to avoid a lazy addition when possible to avoid the need for Krylov solves.
When a user specifies F = FunctionOperator(...), somehow we should make it that F+kI is also a FunctionOperator when possible, e.g. maybe the user specifies a general class of ops that work for arbitrary k. (This one is vague, and definitely needs design work, but hopefully we can find an elegant solution.)
As a last resort, we can also consider things like the Sherman-Morrison formula which apply generically.
The text was updated successfully, but these errors were encountered:
If
A
has a cheap inverse,A+kI
nearly always does too. It is very important to exploit this, e.g. for cheap inverses of the W-operator in implicit ODE solves: if the user provides a Jacobian with a cheap inverse, we don't want to waste it.The solution isn't super clear, but some ideas:
MatrixOperator(A) + k*I
=MatrixOperator(A + k*I)
, rather thanAddedOperator(...)
F = FunctionOperator(...)
, somehow we should make it thatF+kI
is also aFunctionOperator
when possible, e.g. maybe the user specifies a general class ofop
s that work for arbitraryk
. (This one is vague, and definitely needs design work, but hopefully we can find an elegant solution.)The text was updated successfully, but these errors were encountered: