The engine

A deterministic engine you can actually audit

No black box. Every number traces to a documented physical or financial model, a versioned dataset, and a seeded random stream. Identical inputs always produce identical outputs.

01

Solar resource

Solar geometry → Hottel clear-sky envelope → seeded cloud modulation → Erbs diffuse split → isotropic POA transposition. Climate-differentiated, fully deterministic.

02

Load model

Archetype weekday/weekend/seasonal shapes scaled to peak, or your own 8760-hour CSV. Critical-load fractions for resilience framing.

03

Hourly dispatch

8,760-step chronological simulation: PV → battery → genset priority, SOC propagation, converter losses, linear fuel curve, two strategies.

04

Lifecycle economics

NPC with real discounting, component replacements & salvage, escalating fuel, plus an automatic diesel-only baseline for savings/payback/IRR.

05

Sizing optimizer

Exhaustive constraint-enforced sweep over PV × battery × genset. Returns the provably lowest-NPC feasible point in the grid.

Solar & physics

Real solar geometry, not a lookup

Hourly irradiance is built from first principles: solar declination and hour angle give the zenith; a Hottel clear-sky model sets the beam/diffuse envelope; a seeded daily clearness index introduces realistic cloud cover; Erbs splits global into beam and diffuse; and an isotropic transposition projects onto the tilted array. PV power applies an NOCT cell-temperature model and a temperature coefficient.

cos θz = sinφ·sinδ + cosφ·cosδ·cosω
P = P_rated · (POA/1000) · [1 + γ(T_cell − 25)] · derate
Dispatch & fuel

Generator fuel & part-load

Each hour, PV serves load first, surplus charges the battery, the battery covers the remaining deficit, and the generator makes up the rest — never running below its minimum loading, and burning fuel for its actual operating setpoint (surplus it cannot use is dumped, not hidden). Fuel follows the standard linear curve, so part-load efficiency is modeled correctly. Minimum runtime, start costs, and generator fleets are roadmap items.

fuel [L/h] = a · P_rated + b · P_out
SOC limited by power, converter & usable depth

Validation ladder

You shouldn’t trust a model you can’t check. Here’s how every release is held to account.

Acceptance suite

Shipping today. Frozen 20-project suite re-run every release: energy balance < 0.1%, SOC bounds, strict 0% capacity shortage on every optimum.

Invariant checks

Shipping today. Energy balance, SOC propagation, fuel curve, and COE/NPC formula checks on every benchmark.

Cross-engine · planned

Planned. Identical cases run through independent reference engines (REopt.jl, PySAM) with a reported delta.

External anchoring · planned

Planned. Specific-yield checks vs PVGIS/PVWatts at real coordinates and published REopt cases.

Acceptance metricTargetThis engine
Annual energy-balance residual< 0.1% of load0.000% (measured)
Reproducibility (same inputs)exactexact — seeded RNG
Best design unmet load≤ constraint0.000% at 0% limit
Single 8,760-hour run< 60 s~10 ms in-browser
Full sizing sweep (100+ designs)< 10 min~25 ms in-browser
Run packageinputs + hashes + outputsemitted on every run

The roadmap

We ship the rigorous wedge first, then earn the right to the rest. We’re honest about what runs today.

Now

Deterministic dispatch + grid-search sizing

Constraint-enforced, reproducible, audit-ready. Shipping today.

Next

True MILP core

Replace the grid sweep with a mixed-integer program (HiGHS / commercial solvers) for continuous-variable global optimality on generator commitment and storage.

Next

Physics-aware power flow

Unbalanced multiphase AC power flow validation so economic designs respect voltage and thermal limits on real feeders.

Later

Spatial array layout

Satellite/LiDAR roof & parcel modeling so the optimal capacity is verified to physically fit.

Later

Digital twin · IEEE 2030.7

Compile dispatch logic to standards-compliant controllers and run a live MPC twin against telemetry.

Later

EV fleet & V2G co-optimization

Treat connected fleets as dispatchable storage with route-feasibility constraints.