Build a quote
The engine · 3.0.0 · reviewed 2026-09-25

Same inputs. Same outputs.

Every number traces to a documented physical or financial model, a dated dataset and, for stochastic studies, a recorded seed. The equations are on the methodology page.

01

Solar resource

NLR PVWatts/NSRDB weather where it is fetched, or a calibrated synthetic year from the site’s NASA POWER climatology, through one PVWatts v8-equivalent conversion chain.

02

Load model

Fourteen archetypes with weather response fitted to NLR End-Use Load Profiles, DOE building shapes, or your own 8,760-hour CSV or interval meter data.

03

Hourly dispatch

8,760-step chronological simulation with four selectable EMS policies, asymmetric storage losses, generator starts, fuel, and wet-stacking evidence.

04

Lifecycle economics

Explicit annual cash flows for capex, development, contingency, O&M, insurance, fuel, carbon, replacements, incentives, salvage, and decommissioning—with a matched baseline.

05

Sizing search

Exhaustive coarse grid, multi-start joint refinement, dispatch-policy co-optimization and adverse-scenario robust selection. The guarantee covers the evaluated candidates.

06

Disturbance resilience

Fleet-unit failures, seeded Monte Carlo repairs, outage survival, and NPS fixed/local/global resilience measures with recovery curves.

Solar & physics

One PV chain for every weather source

Perez transposition, DeSoto cover and King spectral modifiers, the PVWatts NOCT cell temperature, the CEC “Standard” module table, itemized DC losses and a Sandia inverter with DC/AC clipping. Given PVWatts’ own weather it reproduces PVWatts 8.5.0 within ±0.5 % a year. Without a site dataset, a synthetic year is calibrated to the site’s NASA POWER climatology and labelled as an offline estimate.

POA = Perez(DNI, DHI, GHI, θ) · τ_cover · M_spectral
P_AC = min(η_inv · P_DC(POA, T_cell) · (1 − L_DC), 1/(DC:AC))
Dispatch & fuel

Generator fuel & part-load

Each hour, PV serves load first, surplus charges the battery, the battery covers the remaining deficit, and the selected controller allocates the remaining deficit between storage and generation. Fuel follows per-unit curves fitted to generator datasheets by size class, with a 30 % minimum load per online unit; minimum-load surplus is stored or dumped explicitly, and the max-SOC policy reports sub-minimum wet-stacking.

fuel [L/h] = F₀ · P_online + F₁ · P_out
SOC limited by power, converter & usable depth

Validation ladder

What the test harness checks on every change, and what it does not check yet.

Reference-case suite

In CI. All 20 synthetic cases: energy balance under 0.1 %, SOC bounds; the sizing search finds a 0 %-unmet design on every case.

Invariant checks

In CI. Dispatch rules, fuel curves, cash-flow reconciliation, incentive rules and the NPS-derived controllers.

External anchoring

In CI. PV chain vs PVWatts 8.5.0; offline yields vs PVWatts/PVGIS at 23 + 12 held-out sites.

Cross-engine · planned

Not yet. No REopt result is committed as a reference; the in-app REopt cross-check lets you compare a case yourself.

CheckWhat passesCommand (in CI)
Annual energy-balance residual< 0.1 % of load, all 20 reference casesnpm run validate
Reproducibility (same inputs)identical outputs; seeded random streamsnpm run validate:nps
Sizing search, 0 % unmet limita 0 %-unmet design found on all 20 reference casesnpm run validate:optimizer
PV chain vs PVWatts 8.5.0, same weatherannual ±0.5 %, monthly ±2 %npm run validate:resource
Offline synthetic vs PVWatts/PVGIS19 of 23 sites within ±5 %npm run validate:resource
Full sizing searchbounded and off the main threadWeb Worker; stage and scenario counts reported

Roadmap · as of 2026-09-25

What runs today and what does not. No delivery dates are promised.

Shipped

Robust multi-stage sizing

Exhaustive coarse search, multi-start joint refinement, policy co-optimization, risk-adjusted scenarios and all-scenario feasibility.

Shipped

Nominal lifecycle economics

Dated, sourced cost defaults; generator overhauls; a federal incentive rules table applied only after you confirm eligibility.

Shipped

Component disturbance and repair

Deterministic or seeded fleet failures, exponential repairs, the four NPS resilience measures and REopt-style outage survival.

Not started

Mixed-integer optimization core

A MILP formulation for continuous sizing and unit commitment. Today the search is a finite, declared candidate set.

Not started

Power flow

Voltage and thermal limits on real feeders. Today the engine is single-bus.

Not started

Subhourly dispatch

15-minute peaks and short storage events. Today dispatch and billing are hourly.