- 1. Modelling with diffsol
- 1.1. Explicit First Order ODEs
- 1.1.1. Example: Population Dynamics
- 1.2. Higher Order ODEs
- 1.2.1. Example: Spring-mass systems
- 1.3. Discrete Events
- 1.3.1. Example: Compartmental models of Drug Delivery
- 1.3.2. Example: Bouncing Ball
- 1.4. Hybrid ODEs
- 1.4.1. Example: Dosing Protocols
- 1.4.2. Example: Epidemic SIR with policy switching
- 1.5. DAEs via the Mass Matrix
- 1.5.1. Example: Electrical Circuits
- 1.6. PDEs
- 1.6.1. Example: Heat Equation
- 1.6.2. Example: Physics-based Battery Simulation
- 1.7. Forward Sensitivity Analysis
- 1.7.1. Example: Fitting a predator-prey model to data
- 1.8. Backwards Sensitivity Analysis
- 1.8.1. Example: Fitting a spring-mass model to data
- 1.8.2. Example: Weather prediction using neural ODEs
- 2. Specifying ODE problems
- 2.1. The builder
- 2.2. Tolerances
- 2.3. DiffSL
- 2.4. Rust closures
- 2.4.1. Explicit
- 2.4.2. Implicit
- 2.4.3. Mass matrix
- 2.4.4. Root finding
- 2.4.5. Forward Sensitivity
- 2.4.6. Adjoint Sensitivity
- 2.4.7. Automatic differentiation
- 2.4.8. Sparse problems
- 2.5. OdeEquations trait
- 2.5.1. Non-linear functions
- 2.5.2. Constant functions
- 2.5.3. Linear functions
- 2.5.4. ODE systems
- 2.5.5. Parameters
- 3. Creating a solver
- 3.1. Initialisation
- 3.2. Tableau
- 4. Solving the problem
- 4.1. Manual time-stepping
- 4.2. Interpolation
- 4.3. Stopping
- 4.4. Forward Sensitivities
- 5. Performance
- 5.1. Stiff vs Non-Stiff
- 5.2. Events and Multistep Solvers
- 6. Using diffsol from other languages
- 6.1. Python
- 6.2. C and other languages
- 6.3. WebAssembly
- 6.4. WebAssembly with JIT
- 7. Benchmarks
- 7.1. Sundials
- 7.2. Python (Diffrax & Casadi)