How the model works
← Back to the chartA 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.
Submodels
Structural sub-models that override the simple per-sector monolithic growth math for high-leverage end-uses:
- Vehicle stock (D30 LDV + D31 HDV) — Bass-style S-curve adoption with fuel-price and policy feedbacks.
- Storage (D27/D28) — Wright's-law battery cost decay driving deployment share.
- Hydrogen (D32, opt-in) — SMR vs electrolysis production split + sector demand.
- Data centers (D37) — logistic growth ramp into Industrial grid demand.
Feedback loops
The engine isn't a one-pass calculation. A handful of loops connect per-year outputs back into next-year inputs:
- Wright's-law learning (D20/D34) — cumulative deployment shrinks per-source LCOE.
- Demand elasticity (D26) — sector demand responds to retail price changes.
- Battery-cost feedback (D27) — cheaper batteries decay the VRE integration penalty.
- Dispatch shift (D49) — natural gas absorbs coal-retirement gaps via existing-fleet utilization.
- Fuel-price elasticity (D68) — gasoline prices advance the BEV S-curve t_mid.
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.
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).
Research values & quality tiers
Every quantitative model input is wrapped in a ResearchedValue
(D21) with a quality tier:
- L1 primary (EIA / NREL / EPA / IRENA).
- L2 L1-derived (computed from primary inputs).
- L3 peer-reviewed literature.
- L4 transcribed unverified — triggers the "less-verified source" callout.
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.