-
-
Notifications
You must be signed in to change notification settings - Fork 61
Overloads for LinearProblems with ForwardDiff Dual numbers #621
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@oscardssmith I need to make sure that the results here are the same as when the Dual numbers actually go through the solver. I tried using invoke, but I can't seem to make it go through the more general solve. Any ideas? |
You can run |
LinearSolve doesn't have |
Left to do:
|
This just needs a fix for remaking LinearProblems with So far this doesn't handle when A is a SciMLOperator, but it doesn't affect it either, in that case it will just go through the solver like before. It might be ok if that's handled later? I did have to add a That does mean that if somebody is relying on the type of the output of |
6280756
to
d05ad09
Compare
This is now working when
Works with Krylov / iterative methods, including when Also works when reusing the cache, e.g. updating both When A is a I copy a couple of things, like the original primal solution and the original In order to rebuild the solution with the correct Dual number types, I just store the type in the DualLinearCache and then apply it to the results of the Dual part of the solve, which seems like it could be problematic, but I'm not sure of a better way. |
Checklist
contributor guidelines, in particular the SciML Style Guide and
COLPRAC.
Additional context
Addresses #607
This gives the same result as when Dual numbers go through the actual solver, and can handle cases when either
A
orb
do not depend on anything, i.e. when only one ofA
orb
consists of Dual numbers.