OPERATION_MODES

Confine the device’s power to one of several power ranges at every time step. Each operation mode declares a consumption-range (non-negative, positive is consumption) and/or a production-range (non-negative, positive is production); a mode may use either or both, and combining both (each starting at 0) forms a single band through zero. This is useful for devices that cannot modulate their power freely, such as a device that is either off or running at some minimum power (or at one fixed power). Terminology and semantics follow the operation modes of the S2 standard; the S2 signed power-range maps to the FM consumption-range (S2 fixes one sign convention for power, whereas FM leaves it to the user). Declaring operation modes introduces binary decision variables into the optimization problem (making it a mixed-integer linear program), which may increase solve times. Each operation mode may optionally declare a running-cost: an additional per-time cost (a rate in the flex-context currency per hour, e.g. "1200 EUR/h") incurred while that mode is active, excluding commodity cost, following the S2 standard’s FRBC.OperationModeElement.running_costs. This models the wear / O&M / standing cost of keeping a unit on regardless of its output (e.g. a boiler’s standing cost). The per-timestep charge is the rate scaled by the timestep duration, so the total cost of a given on-duration is resolution-independent. When omitted, the running cost is 0. Note: a unit’s no-load fuel consumption is more faithfully modelled as a commodity requirement (a fuel/gas power flow in the operation mode) than as a running cost; that is a possible follow-up.