User manual — chapter list

The desktop app

GridSim.Wpf is the control-room dashboard: the live network map plus nine analysis rooms over the same solve. This chapter covers launching it, the tab strip, the global transport bar, the map controls, loading a pre-solved run, and the bridge pickers at a glance. The same control room also runs in a browser (GridSim.Web) at full parity - see The web dashboard at the end of the chapter.

Launching

dotnet run --project src/GridSim.Wpf

Windows only at run time (it builds everywhere). The app opens on the last model you used, else the reduced GB model, and starts solving immediately. Remember the file-lock gotcha: close the app before rebuilding (01-getting-started.md).

Launch arguments (all optional):

Argument Effect
<text> (positional) boot onto the first model whose picker label contains it, e.g. -- case118
--tab OPERATOR open on the named tab
--zone zone-ukpn pre-select the bridge ZONE picker (any zone-case substring)
--back 30 pre-select the bridge FROM picker to that many days back (must match a preset)
--bridge-source estimated pre-select the bridge SRC picker (presolved, estimated or live)

The header bar holds the NETWORK source picker (every discovered case - see 02-loading-networks.md), the SOLVER picker (Auto / Newton dense / Newton sparse / Sweep radial, with a readout of the engine actually running), a find box (type a substation name, press Enter), the LOAD RUN... button, and the status pill with the simulated clock and tick count.

The tab strip

Ten rooms, in fixed order. Each draws the same solved frame; none re-runs physics of its own.

Tab What it shows
NETWORK the map: substations as roundels, corridors with power flowing as marching dashes, boundary loadings, event log, detail fly-outs
GENERATION & INERTIA fuel mix split synchronous vs converter-connected, live system inertia, the TSGB device controls
THE MACHINE the grid as one rotating mass: per-machine stored energy, the integrated physical story
SCADA telemetry-style points list with navigation to the map
OPERATOR the live generation stack, boundary transfers, dispatch view
MARKET balancing-market framing of the same dispatch
NESO RP1 stability panel: purchased time, inertia split, credible-loss and correlated-trip risk, LFDD traffic light
MECHANICAL per-machine plant view: risk-sorted state, P-Q capability, RoCoF relay margins (real vs synthetic figures explicitly flagged)
SPEED DOMAINS the distributed-inertia view: coherent speed domains and dominance
ASSETS the asset explorer: page-stack drill-down across substations, generators, circuits, transformers, interconnectors

What each analysis room shows and how to drive it is 05-analysis-views.md.

The global transport bar

One playback bar under the tabs, visible from every room. Its contents swap with the mode (live / replay / bridge):

  • PAUSE / RESUME (replay: PLAY) - stops and starts the tick timer. Pressing PLAY at the end of a replay restarts it from frame 0.
  • STEP (live only) - simulated time per solve, from 1 ms to 20 min (default 20 min). Fine steps integrate the swing equation, so you can watch RoCoF live; coarse steps sweep the day curve.
  • x1 - playback speed, cycling x1 -> x5 -> x15 -> x60. This is real-time cadence (solves or frames per second), decoupled from the STEP size.
  • LOADING / VOLTAGE - cycles the map colouring: line loading, voltage, and (bridge mode only) asset condition and branch stress.
  • FLEET - overlays the TSGB device fleet on the map.
  • DNO / GSP / ASSETS - geography overlays (below).
  • Replay controls (replay mode only) - restart (reset), previous/next frame (< >), a scrubber across the whole run, and a frame readout (frame 12/480 * <timestamp>). Scrubbing to frame 0 resets the integrating accumulators, exactly like restart.
  • ZONE / FROM / SRC (bridge mode only) - see the bridge pickers below.

Map controls

The NETWORK map is a real renderer over the live model - smooth at ~6,000 buses with viewport culling:

  • Scroll zooms about the cursor; drag pans; the app fits the view on every model load.
  • Hover a bus or branch for a tooltip; click for a detail fly-out with an OPEN IN EXPLORER link into the ASSETS room.
  • Right-click a bus to trip its largest infeed and watch the frequency dip play through the dial. In bridge mode, right-click instead opens a context menu of on-demand queries (feasibility, trip scenarios) evaluated by the server.
  • Overlay keys: D toggles the DNO licence-area boundaries, R the GSP regions, A the geocoded REPD/DUKES assets coloured by technology. The three buttons and keys are disabled (dimmed) unless real geography has been materialised locally under gda-out/geo - imported test cases have none.

Loading a pre-solved run

The app can step through a recorded run directory (the output of transient, gda-replay and friends - see 03-running-power-flows.md) instead of solving live:

  • Auto-discovery: every run directory found under a results/ folder near the app appears in the NETWORK picker as Replay <run-name>.
  • LOAD RUN... opens a folder browser for any run directory elsewhere. A valid run contains an exports/ folder of slice-*.json (or state-*.json) frames; anything else is rejected with a log line.

A replay opens paused on frame 0 with the solver readout showing replay. Drive it with PLAY, the frame-step buttons, or the scrubber. Long runs are sampled - the log line on load tells you the frame count and the time span covered. Telemetry (frequency, RoCoF) comes from the run's sidecar CSV where present, else it is recomputed from the frames.

The bridge pickers at a glance

Selecting Live bridge in the NETWORK picker (shown when a bridge endpoint is configured) streams topology and solved states from the GDA bridge server - no local files, no local solver. Three pickers appear on the transport bar:

  • ZONE - which network the server streams: one of the six DNO zone cases (zone-nged, zone-ukpn, zone-ssen, zone-spen, zone-npg, zone-enwl), gb-full, or gb-spine. Switching restarts the stream.
  • FROM - the historical instant the stream replays from (presets from 2 days to 30 days back). Every start is behind the no-forward-inference horizon; the server rejects anything newer.
  • SRC - which reconstruction plays: PRESOLVED (the demand-scaled re-solve lake), ESTIMATED (the measurement-fitted WLS lake - each frame carries a chi-square quality block, surfaced as a quality pill), or LIVE (static network, only system scalars moving).

That is all you need to drive it from the transport bar. The estimated-state source and the chi-square pill are covered in 12-replaying-estimated-states.md; starting and configuring the bridge server, the stream controls and on-demand queries are 13-the-gda-bridge.md.

The web dashboard (GridSim.Web)

The same control room runs in a browser. GridSim.Web is a Blazor twin of the desktop app - the same live map, the same tab strip and transport bar, the same theme - over the same GridSim.Core solve, and at full feature parity with the WPF app (it keeps two extra tabs of its own, TRIP / DEVICE and CONFORMANCE).

ASPNETCORE_ENVIRONMENT=Development dotnet run --project src/GridSim.Web
# then browse to http://localhost:5217

Unlike the WPF app it is cross-platform at run time (no Windows dependency), so it also runs on CI/Linux. Load a model from the landing grid, or open one directly at /dashboard/<case-id> (e.g. /dashboard/gb-reduced).

What you get, mirroring the desktop chapter above:

  • The GB map - the Canvas port of the desktop schematic: scroll-zoom, drag-pan, click for detail, double-click to drill into ASSETS, right-click a bus to trip it, a minimap, the same colour modes (loading / voltage / condition / stress) plus the wave ripple, and the coastline / DNO / GSP / geocoded-asset overlays for geolocated GB models. A Find substation box centres the map on a named bus.
  • Every analysis tab - NETWORK, GENERATION & INERTIA (with the TSGB synthetic-inertia + FFR what-if), THE MACHINE, SCADA, OPERATOR, MARKET, NESO RP1, MECHANICAL (P-Q capability envelope), HUMAN SCALE, SPEED DOMAINS, INVERTER FLEET, CONFORMANCE, EXPERIMENTAL, HARMONICS (an on-demand frequency-domain study - press RUN STUDY), and the navigable ASSETS explorer.
  • Transport - play / pause / step / speed, a replay scrubber, a trip button, and a live step-size picker (1 ms → 20 min) so you can watch RoCoF and the nadir play out in slow motion.
  • Header - the system-status lamp and the active-solver readout.

The presentation numbers the web shares with the desktop app (BESS sizing, carbon factors, SCADA thresholds, the 3,600 MW / 1,800 MW credible-loss basis) come from GridSim.Core.Presentation, so the two surfaces can never drift apart.

Note: launch it with ASPNETCORE_ENVIRONMENT=Development (or a full dotnet run, not --no-build) - otherwise the framework's blazor.web.js static asset is not served and the page renders but is not interactive.

See also