Dispatch models that show their work.
Battery dispatch against a real tariff means rate schedules, calendars, efficiency curves, and an optimizer — usually split between a consultant's spreadsheet and a Python repo nobody wants to touch. In Grid the whole decision is one auditable model, from tariff math to dispatch plan, with the evidence attached.
Monday morning, as source.
# unit-safe energy economics capacity_factor = ENERGY_CAPACITY_FACTOR(actual_mwh, nameplate_mw, hours) lcoe = ENERGY_LCOE(capex, opex, discount, mwh_per_year, years) runtime_h = BATTERY_RUNTIME(pack_kwh, load_kw) # the dispatch decision, as a statement SOLVE plan = charge_kw IN [0, 500] MINIMIZE daily_cost
SOLVE is syntax, not an add-in: it drives the decision variable within bounds, writes the answer to a cell, and stays reactive as the tariff inputs change.
Optimization as syntax
Goal seeking, linear and mixed-integer programs, sensitivity and infeasibility diagnostics — first-class statements that recompute with the model.
The language surface →Units that argue back
Type tags and units are checked through the whole dependency graph — a kW where a kWh belongs is a compile-time complaint, not a wrong bill.
Types & units →Simulation, in-model
Model time, state cells, integrators, and repeated experiments live beside the economics — no export to a second environment.
Simulation →