Solver Compatibility Chart
This chart is for documenting the compatibility of the component solver packages to the common interface. An x
means that the option is implemented or the add-on functionality will work with the given solver. A blank means that the option has not been implemented, or that a given add-on has not been tested with a given package. If there are any errors in this chart, please file an issue or submit a pull-request.
Option | OrdinaryDiffEq.jl | Sundials.jl | ODE.jl | ODEInterface.jl | LSODA.jl | StochasticDiffEq.jl | DelayDiffEq.jl | DASKR.jl | DASSL.jl |
---|---|---|---|---|---|---|---|---|---|
Nonlinear Dense (continuous) output |
x |
x |
x |
x |
x |
||||
Tolerance control |
x |
x |
x |
x |
x |
x |
x |
x |
x |
Advanced stepsize control |
x |
0 |
x |
0 |
x |
x |
0 |
||
Mass Matrices^ |
x |
0 |
x |
0 |
x |
x |
0 |
||
Analytical Jacobians^† |
x |
x |
x |
x |
x |
x |
|||
General Performance Overloads^† |
x |
0 |
0 |
0 |
x |
x |
0 |
||
internalnorm |
x |
0 |
x |
0 |
0 |
x |
x |
0 |
|
Initial dt |
x |
x |
x |
x |
x |
x |
x |
||
save_everystep |
x |
x |
x |
x |
x |
x |
x |
x |
|
saveat |
x |
x |
x |
x |
x |
x |
x |
x |
|
tstops |
x |
x |
0 |
x |
x |
x |
|||
d_discontinuities |
x |
0 |
x |
x |
|||||
isoutofdomain |
x |
x |
x |
x |
|||||
Allows reverse time direction |
x |
x |
x |
x |
x |
x |
x |
||
Unitful numbers |
x |
0 |
0 |
0 |
x |
0 |
|||
Arbitrary dimension arrays |
x |
x |
x |
x |
x |
x |
x |
x |
x |
Complex numbers |
p |
x |
p |
||||||
Arbitrary precision |
x |
0 |
x |
0 |
0 |
x |
x |
0 |
x |
ApproxFun types |
x |
0 |
0 |
0 |
x |
0 |
|||
Progress monitoring |
x |
x |
x |
||||||
Integrator interface |
x |
x |
0 |
x |
x |
||||
Resizability |
x |
0 |
0 |
0 |
x |
x |
0 |
||
Cache iterator |
x |
0 |
0 |
0 |
x |
x |
0 |
||
Can choose linear solvers |
x |
s |
x |
x |
s |
x |
|||
Can choose nonlinear solvers |
x |
0 |
0 |
0 |
x |
x |
0 |
x |
|
Can use out of place natively |
x |
0 |
x |
0 |
0 |
x |
x |
0 |
x |
Can use inplace natively |
x |
x |
x |
x |
x |
x |
x |
||
Compatible with DiffEqDevTools |
x |
x |
x |
x |
x |
x |
x |
x |
|
Compatible with ParameterizedFunctions |
x |
x |
x |
x |
x |
x |
x |
x |
|
Continuous Callbacks |
x |
x |
x |
x |
x |
x |
|||
Discrete Callbacks |
x |
x |
x |
x |
x |
||||
Monte Carlo Simulations |
x |
x |
x |
x |
x |
x |
x |
x |
|
Parameter Estimation |
x |
n |
n |
n |
n |
x |
x |
n |
x |
Parameter Sensitivity Analysis |
x |
x |
x |
x |
x |
x |
|||
Plotting and solution handling |
x |
x |
x |
x |
x |
x |
x |
x |
x |
-
x: Full compatibility
-
p: Partial compatibility, only in nonstiff methods, unless the Jacobian is provided.
-
n: General compatibility, but not compatible with routines which require being able to autodifferentiate through the entire solver.
-
0: Not possible. This is generally due to underlying inflexibility in a wrapped library.
-
s: Special, Sundials has its own linear solver choices.
-
^: Only stiff (implicit) methods.
-
†: For packages with compatibility, no warning is given when a specific algorithm does not need to use this feature.
All blank spaces are possible future additions.