MethodFeatures
partial some parts checked against the code, others not yet · what the statuses mean
How to read the Operations tab
In a project, the feasibility Operations tab’s ? Guide button opens the folds below. How the two engines make these charts is in How feasibility works.
How to read this room
guide
What this stage does — and how it differs from Prefeasibility
Prefeasibility works on annual averages: one number per year for each flow. This stage replays your plant hour by hour for a full year (8,760 steps) against the real resource curve of your Site. That is exactly the resolution where storage, flexibility and timing start to exist: a battery does something, the H₂ buffer rides out calm nights, and a synthesis unit’s minimum load becomes a real constraint at 3 a.m.
The engine is a linear program (LP) solved by HiGHS: it finds the provably optimal operation of your fixed design — maximum production first, operating cost as tie-breaker. It never cheats physics: energy balances close every hour, storage cannot create energy, and synthesis units stay at or above their minimum stable load.
Where the inputs come from
Hourly curves: the linked Site dataset per carrier. If you overrode a capacity factor, the curve is rescaled to your value (shape kept). Without a Site link, a flat profile from the loose CF is used — explicitly degraded (no weather shape), fine for smoke tests only.
Operating constraints: the assumption book drives everything — min-load and ramp per
synthesis unit, electrolyser behavior, grid share cap and price (grid_share_max_pct,
grid_price_usd_per_mwh). Edit them in the Assumptions room and re-solve. Sizing
(capacities, BESS, H₂ buffer) comes from the project config — the design panel’s Storage
section edits the storage part of it.
The KPI strip — and the one number that is a verdict
Production and load-factor KPIs are realized values from the hourly run, not nameplate promises. The one to watch is Unserved min-load: hours where renewables + storage + grid could not keep every synthesis unit at its minimum stable load. A real plant would have been forced into an unplanned shutdown there. Any value above zero is a design verdict — add H₂ buffer, BESS, grid share, or downsize the synthesis unit — not a number to report onward.
Year profile & the limiting-factor strip
The stacked area is where the electricity comes from each day (wind, solar, grid,
BESS discharge) with curtailed energy on top and the dark line showing the
electrolyser’s draw. The year view shows daily means — click anywhere to zoom that week at
full resolution.
The thin strip underneath is the binding constraint — what limited the plant that day:
energy-limited (not enough renewables — the normal state), electrolyser-cap
(electrolyser saturated, energy wasted above it), synthesis-cap (derivative units at
nameplate — the plant is H₂-rich), buffer-full (storage saturated), and
unserved-min-load (the bad hours). Where you see a color is where the next dollar of CAPEX
should go.
Week zoom — worst · median · best
Feasibility conversations are always about the bad week, so it loads first. Worst = the week with the highest unserved min-load risk, then the deepest production deficit — not simply the lowest-wind week (a calm week the buffer rides out is the buffer working). Best shows design saturation; median is the typical rhythm.
Storage state of charge
Each pane shows the daily min–max band (shaded) and mean (line) of the store’s fill
level; the dashed line is installed capacity. Read the extremes: a buffer that pins at
empty during lulls is undersized (and you will usually see unserved hours at the same
dates); one that pins at full while curtailment shows buffer-full is leaving
recoverable energy on the table; one that never moves is money parked in steel.
Duration curve — “how oversized am I?” in one glance
Every hour of electrolyser load, sorted from highest to lowest. The area under the curve is the energy it absorbed; the gap up to the nameplate line is idle capacity. A curve hugging nameplate before falling off a cliff = well-sized against this resource; a curve that never approaches nameplate = capital idling. The shoulder position tells you how many hours per year the machine actually earns its CAPEX.
Utilization calendar
Every hour of the year in one image: columns are days, rows are hours, darker = higher electrolyser load. Diurnal structure (solar days), wind seasons, and multi-day dead spells read at a glance — if the dead spells cluster, that is the season your storage and grid strategy must survive.
Storage value — what one more unit of storage is worth
These come from the LP’s shadow prices (duals): the solver knows exactly how much extra product one more tonne of H₂ buffer or one more MWh of battery would have enabled, without re-solving. Expressed in physical units (tH₂/yr) so it is price-independent. Zero is an answer: storage capacity never constrained the optimum — a bigger store adds nothing for this design. Compare the marginal tH₂/yr against the storage’s annualized cost per unit to judge the next increment.
Curtailment by cause — which fix recovers the energy
Total curtailment is split by what was binding while the energy was wasted:
electrolyser-cap → a bigger electrolyser or BESS recovers it; buffer-full → more H₂
storage; synthesis-cap → the plant is H₂-rich — more derivative capacity or an H₂-export
product, not more storage. energy-limited curtailment is ≈ 0 by definition (nothing to
waste when energy is the constraint).
Balance ledger & trust
The ledger is the audit stamp: electricity and hydrogen accounted end-to-end, from available renewables through curtailment to product tonnes. It closes by construction — the LP cannot violate a balance — and the raw hourly frame behind every chart is stored with the project (Parquet), so any number here can be traced to the hour that produced it.
From the app’s documentation, docs/02-features/reading-the-operations-tab.md · Hyprisma 1.0.5