How the model works

← Back to the chart

A look under the hood of the v2 engine that drives projection-mode Sankey charts. Everything visible in this app — the lever sliders, the projection trajectories, the per-source tooltips — is computed from primitives shown here. Pick a section to explore.

Generation sources

Nine sources the engine knows about — Solar, Nuclear, Hydro, Wind, Geothermal, Natural Gas, Coal, Biomass, Petroleum. Each carries ~25 researched values (capex, fixed O&M, LCOE, capacity factor, retirement schedule, learning rate, …) drawn from NREL ATB, EIA, EPA eGRID, and peer-reviewed literature.

Coming soon: per-source card grid with the full reference- value table + quality badges + the engine's projection-year trajectory for each value.

Submodels

Structural sub-models that override the simple per-sector monolithic growth math for high-leverage end-uses:

Coming soon: click-to-expand diagrams for each submodel showing input research values → engine math → output flows.

Feedback loops

The engine isn't a one-pass calculation. A handful of loops connect per-year outputs back into next-year inputs:

Coming soon: a node-link diagram of all feedback loops showing which research values feed which engine outputs.

Levers & scenarios

About 30 user-exposed levers across four families: generation (Wright's-law rates, retirement schedules, build caps), demand (per-sector growth + elasticity), T&D (per-ISO markups), and submodels (storage, vehicle stock, data centers, hydrogen). Defaults come from research; overrides land in a "basket" the engine consumes per-projection-year.

Coming soon: the full lever tree as a browseable tree with each lever's path, default, range, and the engine math it touches.

Policy layer

A closed-enum mechanism resolver (D29) that turns time-bounded policies — federal IRA tax credits, state RPS targets, carbon prices — into engine input adjustments. 12 mechanisms across carrots (production credit, consumer credit, capex grant, …), sticks (capex burden, mandate floor, …), lifecycle (retirement freeze), and quantity (build cap mandate).

Coming soon: per-policy cards with the mechanism enum + how each one threads into the engine + the active-policy timeline.

Research values & quality tiers

Every quantitative model input is wrapped in a ResearchedValue (D21) with a quality tier:

Coming soon: a filterable table of all ~225 research values across the project, with quality breakdown, last-validated dates, and the engine consumers of each.

Decision history

The engine's architecture grew through ~70 numbered design decisions (D1–D68 to date) recorded in DECISIONS.md. Each entry carries the call, the rationale, and a review-by date so the design stays auditable.

Coming soon: an interactive timeline of all decisions grouped by theme (rendering, engine, feedback loops, policy, per-state, tooltips) with click-to-expand context.