ACADOSJacobianBackend ​
How the dynamics Jacobian (and right-hand side) are obtained: Symbolic (Symbolics.jacobian + build_function); ForwardDiff/FiniteDiff differentiate a numeric evaluation of the model (DifferentiationInterface), which also handles models with linear solves / cached factorizations (e.g. MultibodyComponents models) that have no reconstructable symbolic form; SparseForwardDiff/SparseFiniteDiff detect the Jacobian sparsity pattern once (SparseConnectivityTracer) and differentiate one direction per color instead of one per state and control, which pays off on large models whose Jacobian is sparse. The backend only affects the in-process Julia solver: C export renders its own symbolic Jacobian, and works with any backend as long as the model was given symbolically (an ODE System with an AD backend keeps no equations and cannot be exported)
Cases ​
SymbolicForwardDiffFiniteDiffSparseForwardDiffSparseFiniteDiff
Source ​
"How the dynamics Jacobian (and right-hand side) are obtained: Symbolic (Symbolics.jacobian + build_function); ForwardDiff/FiniteDiff differentiate a numeric evaluation of the model (DifferentiationInterface), which also handles models with linear solves / cached factorizations (e.g. MultibodyComponents models) that have no reconstructable symbolic form; SparseForwardDiff/SparseFiniteDiff detect the Jacobian sparsity pattern once (SparseConnectivityTracer) and differentiate one direction per color instead of one per state and control, which pays off on large models whose Jacobian is sparse. The backend only affects the in-process Julia solver: C export renders its own symbolic Jacobian, and works with any backend as long as the model was given symbolically (an ODE System with an AD backend keeps no equations and cannot be exported)"
enum ACADOSJacobianBackend =
| Symbolic
| ForwardDiff
| FiniteDiff
| SparseForwardDiff
| SparseFiniteDiffRelated ​
Examples
Experiments
Analyses
Tests