Surveying the map…
……

Grid Builder: Capacity Mix, Duck Curve and Reliability Lab

Place wind, solar, gas, nuclear, hydro and battery blocks on the map, then see 8,760 simulated hours: duck curve, lost-load hours, cost per MWh and CO2.

Capacity mix

Tap a map site with a tool to add a block (max 4 per site); tap with another tool to replace; Erase removes. Hydro only fits the two river sites (S11, S12).

Presets

Scenario

Day on the map

Season

Charts

Experiments

Sweep: how do lost-load hours, curtailment, cost and CO2 respond when you keep adding solar to the current mix? The gas search keeps your other blocks and finds the smallest gas fleet that meets the common 2.4 h/yr (one day in ten years) criterion.

Independent checks

The science

A synthetic but physically shaped year (8,760 hours) is built from weather and demand profiles; every hour the generators are dispatched in merit order and the books are balanced. Weather is generated, not measured: treat the numbers as a teaching model, not a forecast for any real utility.

Sun and solar output

sin(a) = sin(phi) sin(delta) + cos(phi) cos(delta) cos(H) delta = 23.44 deg * sin(2 pi (284 + n)/365) air mass AM = 1/sin(a); DNI = 1353 * 0.7^(AM^0.678) GHI ~ 1.1 * DNI * sin(a); solar CF = min(1, 1.1 * GHI/1000) * cloud(day)

The 1.1 factor stands for a DC/AC ratio above 1 with ~85 % performance ratio. Daily cloudiness is an AR(1) process. Latitude changes day length and winter output.

Wind

v(t) = v_mean(season) * exp(0.42 z(t) - 0.09), z = AR(1), r = 0.97/h P/P_rated = 0 (v<3), (v^3 - 3^3)/(12^3 - 3^3) (3-12), 1 (12-25), 0 (>25 m/s)

Power scales with v3 (kinetic energy flux 1/2 rho A v3) until the turbine is rated. Real wind farms also have wake losses and a spatial spread that smooths output; both are ignored.

Dispatch order each hour

  • Wind and solar first (zero fuel cost), then nuclear (minimum stable output 50 % of available; one 28-day refuelling outage per unit, staggered).
  • Surplus charges storage (round trip 88 %, sqrt split each way), anything left is curtailed.
  • Deficit: storage discharge, then hydro (limited by a daily energy budget with a spring snowmelt peak), then gas (95 % available), then unserved energy.

This is a simple rule-based dispatch, not an optimiser: it neither pre-charges storage from gas nor holds storage for a forecast peak, so it understates what a real operator could do. Transmission limits, ramp rates, reserves and frequency are ignored (see the separate frequency-balance lab for those).

Duck curve

net load(t) = demand(t) - wind(t) - solar(t)

With lots of solar, midday net load collapses while the evening peak stays. The 3-hour ramp is the largest rise of net load within 3 h; dispatchable plants must follow it.

Cost and CO2

annual cost = sum[ MW * (capex * CRF(7 %, life) + fixed O&M) ] + variable + fuel + carbon price CRF = r (1+r)^N / ((1+r)^N - 1) cost per MWh = annual cost / energy served CO2 = sum( MWh_tech * lifecycle t/MWh )

Costs are round, illustrative overnight-capex values (US$/kW: wind 1,300; solar 900; gas 900; nuclear 7,000; hydro 3,000; storage 300 + 250 per kWh), not quotes. Gas fuel = 7 MMBtu/MWh x gas price. CO2 uses lifecycle medians in t/MWh (gas 0.49, solar 0.048, hydro 0.024, nuclear 0.012, wind 0.011). The value of lost load ($10,000/MWh) is reported separately and not added to the cost.

Reliability

Loss-of-load hours (LOLH) counts hours with unserved demand above 0.5 MW. A common planning target is about 2.4 h/yr (one day in ten years). One weather year is a small sample: switch the weather year to see how much the answer moves.

Independent checks

The page rechecks the dispatch with identities it does not use to compute it: the hourly energy balance, a compensated annual sum, the storage energy ledger, and two closed-form cases (flat load with a gas fleet, where cost and CO2 follow from algebra) plus a sun-geometry integral (the sum of sin(elevation) over an equinox day at the equator equals 24/pi).

High is the default; Low is for slow devices (also ?q=low).
Made with 🟠 Blender · Three.js