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: 2025-12-08 09:49 UTC

#160

ODE Solver Error Control

enhancement numerics roadmap refactor

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.

#149

Simulation class refactoring

roadmap refactor

The `Simulation` class is big (1.8k LOC) and has many responsibilities:

- managing all the blocks, connections and events and their states
- serialization and deserialization
- linearization and delinearization
- timestepping including system evaluation, event handling, ...
- 4 different timestepping strategies and 1 steady state solve method

This can probably be broken down to be more modular a...

#146

FSAL for ode solvers

numerics roadmap

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.

#143

real-time simulation

enhancement roadmap

- implement real-time mode for the simulation with a tick-rate
- warnings when realtime is not reached, reducing tick-rate

#133

More Examples

documentation good first issue roadmap

You can never have enough examples.

Here is a list of ideas for example systems that want to be implemented and documented:
- Kalman Filter
- Chemical process
- DC motor control
- Inverted pendulum with controler
- Battery charging
- Phase-locked loop

#124

Type Hints

documentation roadmap

Currently, PathSim is not explicitly typed. Adding type hints makes sense.

#109

Checkpoints

enhancement roadmap

Saving simulation state as checkpoint and loading simulation state from checkpoints.

#105

pseudo steady state mode for dynamical blocks

enhancement numerics roadmap

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...

#104

Runtime System Modifications

enhancement roadmap

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 ...

#91

Asynchronous and parallel block updates

enhancement numerics roadmap

PathSim has a decentralized architecture for the blocks which lends itself to parallelism and asynchronizity. Expensive blocks should compute asynchronously and not make the other blocks wait. With free-threading from Python 3.13, parallelization of the block updates is possible and has been verified with multiprocessing (slow but validation of the concept) for an earlier build.

Near linear scali...

#84

Copy blocks, subsystems and simulation

enhancement roadmap

Implement a `copy` method for the blocks, the `Subsystem` class, and the `Simulation`.

This should enable convenient copying of standard blocks for defining a system.

#82

IMEX integrators

enhancement numerics roadmap

Implementing implicit-explicit ode solvers.

Some blocks in large systems may exhibit local stiffness while the coupling to external blocks is non-stiff. In these cases it would be nice to use more stable implicit ode solvers for these blocks while using explicit solvers for the other, non-stiff blocks.

The global solver would remain explicit, while locally, blocks can be flagged as stiff and t...

#81

exponential integrators

enhancement numerics roadmap

Using exponential integrators is a way to eliminate stiffness from linear dynamical systems. Many pathsim blocks are pure linear odes such as the `StateSpace` blocks and its derivates, as well as the `Differentiator` and the `PID`.

They are more or less of the following form:

```math
\dot{\vec{x}} = \mathbf{A} \vec{x} + \mathbf{B} \vec{u}
```

Stiffness occurs when the eigenvalues of A are on ...