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-10-13 13:28 UTC
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 ...
Asynchronous and parallel block updates
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...
Copy blocks, subsystems and simulation
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.
IMEX integrators
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...
exponential integrators
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 ...
FMI / FMU integration
It would be nice to be able to import existing FMUs as pathsim blocks and to export simulations as FMUs using the functional mockup interface (FMI).
This would enable cross compatibility between pathsim and other simulation tools.
The most straight forward way to to this is with [FMPy](https://github.com/CATIA-Systems/FMPy?tab=License-1-ov-file#readme).
The resulting blocks would be:
- `CoSimul...
Port aliases with Subsystems
Consider the following MWE
```python
import pathsim
import pathsim.blocks
class Assembly(pathsim.Subsystem):
_port_map_out = {
"out1": 0,
"out2": 1,
}
_port_map_in = {
"in_1": 0,
"in_2": 1,
}
def __init__(self):
interface = pathsim.Interface()
interface._port_map_in = self._port_map_in
interface._port_map_out = self._po...
conda package
It would be nice to have a conda package for pathsim!