Flows¶
A flow represents energy transfer on a bus. Each flow \(f\) has a non-negative rate variable \(P_{f,t}\) bounded by an optional nominal capacity \(\bar{\mathrm{P}}_f\).
Bounds¶
When Flow.size is set, the rate is bounded by relative minimum and maximum
profiles:
By default \(\underline{\mathrm{p}}_{f,t} = 0\) and \(\bar{\mathrm{p}}_{f,t} = 1\), so the bounds simplify to \(0 \leq P_{f,t} \leq \bar{\mathrm{P}}_f\). With no capacity (\(\bar{\mathrm{P}}_f = \infty\)) the flow is just \(P_{f,t} \geq 0\).
Fixed Profile¶
When Flow.fixed_relative_profile (\(\pi_{f,t}\)) is set, the rate is pinned
to a profile scaled by the capacity:
Implemented by setting both bounds equal to the profile value.
Effect Contributions¶
Each flow contributes to tracked effects (cost, emissions, …). Per-timestep:
\(\mathrm{c}_{f,k,t}\) is the per-flow-hour coefficient (Flow.effects_per_flow_hour).
Units cancel: e.g. €/MWh × MW × h = €. Contributions feed into the
effect tracking equations.
See also¶
- Sizing — when
Flow.sizeis aSizingobject instead of a fixed value. - Status — when
Flow.statusis set, the flow becomes semi-continuous \(\{0\} \cup [\underline{\mathrm{P}}, \bar{\mathrm{P}}]\). - Carrier Balance — Multi-Node — when
Flow.nodetargets a specific node.
Parameters¶
| Symbol | Description | API |
|---|---|---|
| \(P_{f,t}\) | Flow rate variable | flow--rate[flow, time] |
| \(\bar{\mathrm{P}}_f\) | Nominal capacity | Flow.size |
| \(\underline{\mathrm{p}}_{f,t}\) | Relative lower bound | Flow.relative_minimum |
| \(\bar{\mathrm{p}}_{f,t}\) | Relative upper bound | Flow.relative_maximum |
| \(\pi_{f,t}\) | Fixed relative profile | Flow.fixed_relative_profile |
| \(\mathrm{c}_{f,k,t}\) | Effect coefficient per flow-hour | Flow.effects_per_flow_hour |
| \(\Delta t_t\) | Timestep duration (h) | dt |
See Notation for the full symbol table and Indexing Convention for how indices broadcast.