# Substation learning lab: model and validation report

Authoring date: 4 October 2026. This is a teaching circuit and visualization,
not a construction, protection, structural or earthing design. No independent
professional engineering approval is claimed.

## Architecture and equipment

110 kV / 20 kV line-to-line RMS, 50 Hz. One incoming source, an HV incoming
bay, one HV bus, transformer bay, one YNyn0 separate-winding transformer,
MV incomer, one MV bus and two feeder/load circuits. Every main path is
three-phase. CT primary circuits are series; VTs and arresters are shunt.
Disconnectors isolate rather than interrupt ordinary load. Earthing switches
remain open; the UI offers coherent state snapshots, not switching steps.
The schematics place VTs on the HV bus and arresters at the transformer HV
terminals. The calculated auxiliary branch is explicitly omitted from the
equipment drawings: it is a lumped balanced MV-bus resistance, not a modeled
service transformer. Differential protection is conceptual background, not
an implemented complete CT protected-zone and compensation scheme.

The transformer is grounded star/star on both sides, nominal winding ratio
5.5 and zero phase displacement. ABB's checked YNyn0 application supports
this connection's existence, not its universal suitability. Both actual
neutral leads and separate tank/frame protective bonds are visible. No
delta neutral or hidden tertiary is invented. Balanced three-wire loads have
no normal protective-earth return current. Station DC is a separate control
and trip supply, not main AC/DC conversion.

See [architecture](substation-source/docs/SUBSTATION_ARCHITECTURE.md) and
[source map](substation-source/docs/SUBSTATION_REFERENCES.md) for detailed scope and source
verification. Book passages were checked only where accessible: Short's
authorized preview §§1.4 and 1.8. Four other books are metadata/contents-led
further reading; specific claims use accessible primary documents.

## Exact simplified per-phase model

All internal quantities use SI units and RMS complex phasors. The upstream
voltage is fixed at 110,000 V LL. An ideal transformer produces a 20,000 V LL
no-load secondary (phase source Vs=20,000/√3 V). Invented MV-referred series
winding resistance Req=0.08 Ω per phase precedes the bus. Each balanced load
is defined by nominal three-phase P at 20 kV and a common lagging pf:

```
Q_nom = P_nom tan(acos(pf))
Z_load = (20,000/√3)^2 / conjugate[(P_nom + j Q_nom)/3]
Y_feeder = 1/(R_cable + Z_load), or 0 if open/zero demand
Y_aux = 10,000/(3 (20,000/√3)^2)  [real siemens]
Y_total = Y_A + Y_B + Y_aux
V_bus = Vs/(1 + Req Y_total)
I_secondary = V_bus Y_total
I_feeder = V_bus Y_feeder
V_load = V_bus − I_feeder R_cable
P_load = 3 |I_feeder|² Re(Z_load)
Q_load = 3 |I_feeder|² Im(Z_load)
P_cable = 3 |I_feeder|² R_cable
P_winding = 3 |I_secondary|² Req
P_aux = 3 |V_bus|² Y_aux
P_HV = 3 Re[Vs conjugate(I_secondary)] + P_core
Q_HV = 3 Im[Vs conjugate(I_secondary)]
I_HV,rms = sqrt(P_HV² + Q_HV²)/(√3 × 110,000)
```

P_core is fixed at 15,000 W on the energized HV side. R_A=0.4 Ω and R_B=0.6 Ω
are each one phase conductor's resistance. The factor 3 counts all three
phases; no neutral/earth resistance is included. Input active power equals
the two load powers plus both cable losses, winding loss, core loss and
auxiliary consumption. Delivery efficiency is load power / HV input;
auxiliaries are useful station consumption, not customer delivery.

The feeder controls specify _nominal load demand_, not constant delivered
power: actual load power changes with voltage. Zero-demand but closed
feeder terminals remain energized at bus voltage. Opening A removes only
that branch; B's voltage and delivered power change. Isolated station AC
quantities are zero and efficiency is undefined. Its upstream line can still
be live, and battery energy remains outside this AC ledger.

S=√3 V_LL,rms I_line,rms and P=S cosφ apply only to balanced sinusoidal
quantities. P is W, Q is var, S is VA, voltage is V and current is A. j²=−1;
conjugate changes the imaginary sign. No switching waveform formula is
being substituted. Plotted fundamentals use the calculated MV voltage and
a local phase-A time reference. Gold 3D markers represent net energy, not
current direction or electron motion. They do not solve a transient.

Omitted: magnetizing reactive current, leakage/cable reactance, saturation,
tap regulation, temperature dependence, unbalance, harmonics, fault current,
protection settings, thermal ratings and general network load flow.

## Checked example

Nominal loads A=4,000 kW, B=3,000 kW, pf=0.90, normal state:

| Quantity                 |               Calculated value |
| ------------------------ | -----------------------------: |
| MV bus LL RMS            |                19.972084676 kV |
| A / B line RMS currents  | 127.610303206 / 95.660040840 A |
| HV input                 |             6,994.956567229 kW |
| Delivered A + B          |             6,921.979910633 kW |
| Cable losses             |                36.012785525 kW |
| Winding loss             |                11.991766913 kW |
| Core loss                |                15.000000000 kW |
| Auxiliaries              |                 9.972104157 kW |
| Load-delivery efficiency |                  98.956724664% |

Unrounded balance residual is below 0.000001 W; displayed rounding can change
the last digit. All parameters are invented; none is an installation rating.

## Geometry and browser workflow

Original Blender geometry, five scenes: lightweight station overview and
four separate equipment cutaways. Metres, Z-up authoring; GLB maps
Blender (x,y,z) to browser (x,z,−y). Named equipment roots and terminal
markers drive selection and annotations. The transformer cutaway separates
core, HV/MV windings, star points and cooling; a gas-interrupter contact
cutaway is fixed-open, not the station snapshot or an arc simulation.
The MV switchboard uses vacuum bottles, separately explained from the HV
gas interrupter. Live parts are kept on insulating supports, with sagged
incoming spans, foundations, trenches, access space and oil-containment
outline. Distances and winding/terminal details are adjusted for legibility.
No numerical clearance, strength, earthing or containment-compliance claim.

`npm run models:substation` runs headless Blender, then the existing glTF
dedup/weld/quantize tools. The manifest gives actual asset sizes, triangle
counts, transforms and SHA-256 hashes. No texture or external decoder is
required. Each export must contain only its active scene; this is explicitly
tested so detailed assets do not embed the whole station.

Blender 5.2.1 ran successfully, saved and reopened the 11,053,049-byte editable
file. The saved-scene validator passed 3,451 authored-geometry checks. These
are software checks of the named scene, terminal coordinates and selected
geometry, not 3,451 engineering design approvals. GLB tests independently
check actual optimized geometry, phase separation, supported gantry
attachments, hollow breaker nozzle, dielectric drive rod and separate
windings.

| Browser asset           |   Bytes | Triangles | Maximum asset draw calls |
| ----------------------- | ------: | --------: | -----------------------: |
| Overview                | 937,944 |    52,932 |                      254 |
| Transformer             | 148,948 |     9,320 |                       14 |
| HV gas interrupter      |  34,376 |     1,416 |                       14 |
| MV switchgear           |  71,428 |     3,528 |                       17 |
| Protection / station DC |  13,580 |       200 |                       11 |

The overview was reduced from 1,513,916 bytes to 937,944 bytes by the export
pipeline. Draw-call counts above describe GLB meshes/material groups, not the
whole renderer with labels and teaching overlays. No texture or decoder
network dependency is needed. A nonfatal Blender thumbnail-cache permission
warning did not prevent generation or saved-file validation.

The React page and SVG diagrams render without WebGL. Three.js and GLB
assets load only after activation; detailed GLBs load individually on demand.
Animation is opt-in, pauses out of view and respects reduced motion. Native
equipment buttons and controls supplement pointer selection; the canvas has
arrow-key orbit, +/− zoom and Home reset. Camera bounds are tested for
landscape and portrait dimensions.

## Actual review record

These are project code, source, geometry and browser reviews, not independent
professional engineering certification.

| Review                    | Status and boundary                                                                                                                                                                                                                                                                                         |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Electrical / mathematical | Architecture and phasor ledger inspected; eight model tests passed, including 96 operating combinations and edge cases. No independent engineering peer review.                                                                                                                                             |
| Mechanical / geometry     | Saved Blender file reopened; 3,451 scene checks and optimized-geometry tests passed. Visual browser inspection performed. No structural, insulation, fire or earth-grid design calculation.                                                                                                                 |
| Educational               | Two reading levels, source-access disclosures, symbol definitions and state caveats reviewed separately from the mathematics. Actual cutaway views inspected; rear-facing cameras corrected and internal labels added. No formal student usability study.                                                   |
| Accessibility             | Native controls, keyboard Home reset and labelled parameter changes tested in browser. Semantic content/calculations available before 3D activation. Portrait viewport tested without page-wide overflow. Reduced-motion logic tested in code, not by changing OS settings. No screen-reader certification. |
| Browser performance       | Two five-second foreground runs on the local production preview, recorded below. Deferred overview and separate detail loading verified. No GPU execution, Core Web Vitals, physical-phone or cross-browser benchmark claim.                                                                                |

### Observed rendering runs

4 October 2026; Codex in-app browser on Windows 10/64-bit. Reported user agent:
Chrome/154.0.0.0, AppleWebKit/537.36. The same desktop machine was used for
both runs; CPU/GPU model was not queried. A production prerender process was
running concurrently. No artificial CPU/network throttling or cache clearing
was applied; these are local-host, cache-state-uncontrolled observations.

| Condition                          |                          Whole station | Portrait MV switchgear detail |
| ---------------------------------- | -------------------------------------: | ----------------------------: |
| Canvas CSS pixels / drawing buffer |                  777 × 542 / 777 × 542 |         328 × 382 / 328 × 382 |
| Pixel ratio                        |                                   1.00 |                          1.00 |
| Settings                           | normal; markers playing; 1×; labels on | normal; paused; 1×; labels on |
| Reduced motion                     |                                    off |                           off |
| Duration / frames                  |                           5.01 s / 501 |                  5.01 s / 496 |
| Observed cadence                   |                          99.9 frames/s |                 98.8 frames/s |
| Frame interval median / p95        |                       10.00 / 10.20 ms |              10.00 / 10.20 ms |
| CPU render submission median / p95 |                         2.80 / 4.20 ms |                1.50 / 2.60 ms |
| Peak draw calls / triangles        |                           283 / 54,242 |                    22 / 3,528 |

Overview fetch/parse took 44 ms; switchgear detail fetch/parse took 112 ms in
this run. These exclude overall page loading and are not cold-network timings.
The portrait browser override was 390 × 844 pixels; the document client width
was 375 pixels including the scrollbar allocation, with no page-wide horizontal
overflow. It is responsive desktop-browser testing, not a physical mobile test.

The tool measures request-animation-frame cadence and CPU submission, not GPU
completion. Its foreground measurement actively requests rendering even for a
paused detail. Outside measurement, paused static views render on demand.
Browser console checks found no warning/error entries for this lesson run.

### Executed software checks

- `npm run typecheck`: passed.
- `npm run build`: passed; 1,614 prerendered pages including the 404 document.
- `npm test`: all 669 tests passed, including 29 substation tests covering
  calculations, semantic page content, actual assets and viewer geometry.
- `npm run verify:http`: passed for 1,613 sitemap pages, 17 exact GLB assets,
  downloadable scene/source/report hashes, sharing images, actual 404s and
  cache/security headers through the local production preview.
- `git diff --check`: passed for the tracked patch.

The broader governance script found no missing fields in 250 country records,
but many external country-authority availability checks encountered this
environment's TLS certificate-verification error. Its zero exit status is not
evidence that those external links were successfully reached. The substation
source evidence was inspected separately as recorded in the source map.

Browser interaction checks covered all four cutaways, labels, camera reset,
guided-tour progression, nominal-demand/power-factor inputs, open-feeder and
isolated-state readings, and the expanded three-phase schematic. The site was
not committed, pushed or deployed in this task. No WebGL-disabled hardware,
screen reader, touch device or independent engineering approval was tested.

Software/source checks cannot approve real equipment selections, switching
procedures, protection coordination or construction designs.
