-
-
Notifications
You must be signed in to change notification settings - Fork 239
Support Complex Numbers in Stiff Routines #110
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
Comments
Sorry, I'm no help here. What about @pwl's DASSL? |
Looks like Calculus.jl might be easy to solve: JuliaMath/Calculus.jl#115 |
Solved by DiffEqDiffTools.jl replacing Calculus.jl (and gets like a 50x speedup!). ForwardDiff.jl will still fail though, but that should be fixed by it changing to a Cassette.jl backend. |
I am still getting errors with stiff routines, for example with
|
Note that now that I see the stacktrace more clearly this might somehow be due to the custom functor type. |
No, this is indeed due to ForwardDiff not supporting complex numbers. Maybe I am doing something wrong, any advice here? |
Use autodiff=false until JuliaDiff/ForwardDiff.jl#455 |
After a long journey with @AlexanderKoshkarov, we found that the OrdinaryDiffEq.jl non-stiff (Runge-Kutta) routines are compatible with complex numbers (with adaptivity), but the implicit and Rosenbrock methods are not. This is because the Calculus.jl (now FiniteDiff.jl) and ForwardDiff.jl dependencies cannot take derivatives of complex numbers:
johnmyleswhite/FiniteDiff.jl#14
JuliaDiff/ForwardDiff.jl#157
Also, NLsolve.jl is incompatible with complex numbers. On the other hand, the ODEInterface and Sundials algorithms do not seem to be compatible with complex numbers, and so all of this is a dead-end.
Ways around this are:
I don't think I'll have the time for this right now, but am documenting this in case anyone else has an idea / wants to help.
(@mauro3 do you have routines for Jacobians?)
The text was updated successfully, but these errors were encountered: