https://github.com/pathsim/pathsim
A Python native dynamical system simulation framework in the block diagram paradigm.
https://github.com/pathsim/pathsim
block-diagram blockdiagram control-systems digital-twin dynamical-systems framework fusion-energy hierarchical-modeling nonlinear-dynamics numerical-methods ode-solver open-source operator-training python scientific-computing simulation simulation-framework simulink-alternative system-simulation transient-analysis
Last synced: 15 days ago
JSON representation
A Python native dynamical system simulation framework in the block diagram paradigm.
- Host: GitHub
- URL: https://github.com/pathsim/pathsim
- Owner: pathsim
- License: mit
- Created: 2024-07-12T11:43:14.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2026-05-07T07:51:11.000Z (about 1 month ago)
- Last Synced: 2026-05-07T09:27:32.111Z (about 1 month ago)
- Topics: block-diagram, blockdiagram, control-systems, digital-twin, dynamical-systems, framework, fusion-energy, hierarchical-modeling, nonlinear-dynamics, numerical-methods, ode-solver, open-source, operator-training, python, scientific-computing, simulation, simulation-framework, simulink-alternative, system-simulation, transient-analysis
- Language: Python
- Homepage: https://pathsim.org
- Size: 19.9 MB
- Stars: 371
- Watchers: 8
- Forks: 38
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
- Citation: CITATION.cff
Awesome Lists containing this project
- awesome-python - PathSim - A block-based system modeling and simulation framework with a browser-based visual editor. (Science)
- fucking-awesome-python - PathSim - A block-based system modeling and simulation framework with a browser-based visual editor. (Science)
README
A block-based time-domain system simulation framework in Python
Homepage •
Documentation •
PathView Editor •
Sponsor
---
PathSim lets you model and simulate complex dynamical systems using an intuitive block diagram approach. Connect sources, integrators, functions, and scopes to build continuous-time, discrete-time, or hybrid systems.
Minimal dependencies: just `numpy`, `scipy`, and `matplotlib`.
## Features
- **Hot-swappable** — modify blocks and solvers during simulation
- **Stiff solvers** — implicit methods (BDF, ESDIRK) for challenging systems
- **Event handling** — zero-crossing detection for hybrid systems
- **Hierarchical** — nest subsystems for modular designs
- **Extensible** — subclass `Block` to create custom components
## Install
```bash
pip install pathsim
```
or with conda:
```bash
conda install conda-forge::pathsim
```
## Quick Example
```python
from pathsim import Simulation, Connection
from pathsim.blocks import Integrator, Amplifier, Adder, Scope
# Damped harmonic oscillator: x'' + 0.5x' + 2x = 0
int_v = Integrator(5) # velocity, v0=5
int_x = Integrator(2) # position, x0=2
amp_c = Amplifier(-0.5) # damping
amp_k = Amplifier(-2) # spring
add = Adder()
scp = Scope()
sim = Simulation(
blocks=[int_v, int_x, amp_c, amp_k, add, scp],
connections=[
Connection(int_v, int_x, amp_c),
Connection(int_x, amp_k, scp),
Connection(amp_c, add),
Connection(amp_k, add[1]),
Connection(add, int_v),
],
dt=0.05
)
sim.run(30)
scp.plot()
```
## PathView
[PathView](https://view.pathsim.org) is the graphical editor for PathSim — design systems visually and export to Python.
## Learn More
- [Documentation](https://docs.pathsim.org) — tutorials, examples, and API reference
- [Homepage](https://pathsim.org) — overview and getting started
- [Contributing](https://docs.pathsim.org/pathsim/latest/contributing) — how to contribute
## Citation
If you use PathSim in research, please cite:
```bibtex
@article{Rother2025,
author = {Rother, Milan},
title = {PathSim - A System Simulation Framework},
journal = {Journal of Open Source Software},
year = {2025},
volume = {10},
number = {109},
pages = {8158},
doi = {10.21105/joss.08158}
}
```
## License
MIT