# Flexible Sim - Simulation Models as Live Block Diagrams

Flexible Sim shows Modelica, Julia, Dyad and Python simulation models as live block diagrams in JetBrains IDEs. Edit either side and both stay in sync.


If you’ve followed the Flexible Julia posts, this one is a close neighbor: Flexible Sim.
Building and checking a simulation model is hard without proper IDE support. Much of the work still happens outside the IDE, in a separate tool - especially when your codebase mixes Dyad, Julia, Modelica and Python.
So Flexible Sim gives you a split editor: source code on the left, a live block diagram on the right. Edit the diagram or the code, and both stay in sync. Diagram edits write straight back to Dyad, Julia/ModelingToolkit and Modelica code.
A detail I like: the block positions live in a small sidecar file next to the model (.sim-layout.json), never in your source code. Your model stays clean, and your diffs only show real model changes.
What else is in there:
About 70 blocks in the library, and five runtimes: Dyad, Julia/MTK, plain Julia with DifferentialEquations.jl, Python/SciPy, and Modelica through OpenModelica. A scope with up to 16 charts, dual cursors and a spectrum view. Linear analysis: Bode, Nyquist, Nichols, root locus, pole-zero, step and impulse response, with stability margins. Parameter studies: 1D and 2D sweeps, Monte Carlo, tornado charts, PRCC and Sobol sensitivity. Plus optimization and parameter estimation from CSV data. A simulation debugger for Julia, Dyad and Python: pause, step, signal breakpoints, and live parameter changes. A 3D view for STL, OBJ, glTF and URDF robots - it moves real URDF meshes from a simulation. Export to PNG or WebM. Interop: FMU import and co-simulation (FMI 2.0 and 3.0), Modelica FMU export, URDF import, experimental Simulink .slx import, and a model diff against any git revision. Tests with assertions and baselines, a dashboard with gauges and knobs, and hierarchical state machines. One bug from the first weeks, because it’s such a classic: on some computers, numbers came out with a decimal comma. The fix was Locale.ROOT in every String.format. If you’ve ever shipped software to Germany, you know :)
The limits, honestly: plain Julia models are view-and-run only, and Python models don’t write back. Live mode and the debugger don’t work for Modelica yet, and Simulink import is experimental. You need Julia, Python and OpenModelica installed locally, and Dyad and Julia/MTK editing needs Flexible Julia.
You can run models with up to 5 blocks for free.
Get it here: plugins.jetbrains.com/plugin/34429-flexible-sim
Cheers, Paul
