Roadmap¶
PathSim’s development, features, bugfixes and enhancements are all tracked through GitHub Issues.
The following list is automatically generated from the issue tracker:
Last updated: 2026-02-26 10:27 UTC
Fine Grained Diagnostics
If simulation doesnt converge, we want to know where the problem comes from. Which block for the ode solvers. Which connection for the algebraic loop solvers. We want block wise error and convergence metrics.
Luckiely everything is there already, we just need to expose it through a nice interface.
ODE Solver Error Control
The adaptive timestep solvers currently use a P controler to adjust the timestep given an estimate for the current truncation error. In the literature and in practice, different kinds of controlers have been explored for that such as I, PI and PID controlers.
It would make sense to implement a new class `TruncationErrorControler` to modularize this and enable different controler types.
FSAL for ode solvers
Some runge kutta solvers such as `RKBS32` and `RKDP54` have the first-same-as-last (FSAL) property, where the last slope of the previous stage is the first slope of the next one. This saves one function evaluation per successful step and therefore increases solver efficiency.
Currently this is not implemented in pathsim, but it would give some additional 5% to 20% speedup for some solvers.
Type Hints
Currently, PathSim is not explicitly typed. Adding type hints makes sense.
Checkpoints
Saving simulation state as checkpoint and loading simulation state from checkpoints.
pseudo steady state mode for dynamical blocks
Sometimes in big complex systems, individual components have wildly different timescales for their physics. In some cases it makes sense to approximate components with very fast dynamics as being in a steady state at each timestep, such that the component becomes purely algebraic.
To achieve this, the time derivative of the block ode
```math
\dot{x} = f(x, u, t)
```
will be forced to zero (tr...
Runtime System Modifications
PathSim already supports adding and activating/deactivating blocks and connections at simulation runtime. For example through events. Whats missing is the capability to cleanly replace and remove blocks in a similar fashion.
**What this will enable:**
Imagine you are running a big system simulation with many (maybe hundreds) of blocks that might be small or large individual models themself. Some ...