1. Load model metadata
No model loaded yet.
2. Experiment details
2b. Timing — simulation time vs. real time
Simulation time is the model's own time. Real time is how long the student waits. They are independent: what sets the pace is how many intervals get displayed per real second, not how large the stop time is.
3. Assign roles to variables
Causality is what the FMU declares and cannot be edited. The choice is Role, five columns along. A variable marked tunable can take the input role even though its causality says parameter — many models from Dymola declare no inputs at all and expose block constants as tunable parameters instead.
| Name | Causality | Declared range | Start | Role | Value / Min | Max | Step | Unit | Label | Chart | Primary |
|---|
3b. Guided steps
Optional. Each step tells the student what to try; the values it carries are applied by a button in the simulator, never behind their back. Set the inputs above to the operating point you want, then capture it here.
3c. Charts — titles and axes
No chart yet. Name one in the Chart column of section 3 — outputs sharing a name become one chart — and its title, window and axes appear here.
The chart id comes from the Chart column above, where one output may name several charts separated by commas; the title is what a student reads, so it may differ — accents and all. A chart is drawn against time unless you say otherwise: choosing another declared output draws value against value instead, a pressure–volume loop rather than a trend. A chart cannot be drawn against one of its own curves, so those are not offered — a quantity against itself is the diagonal.
Window is how many seconds of history that one chart draws: on a loop it
keeps the last beats so successive cycles do not stack into a fan, and on a chart drawn
against time it turns the plot into a monitor that fills once and then scrolls. Leave it empty
to draw the whole run; the student can switch it from the panel either way.
Fixed axes stop the plot rescaling itself to its own data — without
them a change of contractility or afterload draws the same picture with different numbers on
the axis, and nobody reads axis numbers. Get the numbers from
npm run measure:frame, which runs the curated point and every guided step and
reports how far each curve actually travels; a frame that clips its own scenario is refused by
the checks.