LinkΒΆ
The Link components are used for controllable directed flows between two or
more buses with arbitrary energy carriers (bus0, bus1, bus2, etc.). For
instance, they can represent point-to-point HVDC links, unidirectional lossy
HVDC links, converters between AC and DC, net transfer capacities (NTCs) of HVAC
lines (neglecting Kirchhoff's voltage law), as well as any conversion between
carriers (e.g. electricity to hydrogen in electrolysis, electricity to heat in
heat pumps, or gas to electricity and heat in a combined heat and power (CHP)
plant).
-
The
Linkcomponent has one dispatch variablep0associated with the input frombus0(positive if withdrawing frombus0) and one or more outputsp1,p2, etc. associated with the output atbus1,bus2, etc. (negative if supplying to these buses). The outputs atbus1,bus2, etc. are proportional to the input atbus0multiplied by the corresponding efficiency (e.g.efficiency,efficiency2, etc.). That means that the link can have multiple outputs in fixed ratio to the input. -
The columns
bus2,efficiency2,bus3,efficiency3, etc. inn.linksare automatically added to the component attributes. -
Any
marginal_costare related to the inputp0atbus0(e.g. cost per unit of fuel consumed rather than cost per unit of electricity produced for a power plant). -
For links with multiple inputs in fixed ratio to one of the inputs, you can define the other inputs as outputs with a negative efficiency so that they withdraw from the corresponding bus if there is a positive flow for
p0.
When to use Line instead?
Use the Line component type for power lines for which their power flow is determined passively through Kirchhoff's voltage law.
Link with bidirectional lossless flow
Because the Link component can have efficiency losses and marginal costs, the default settings allow only for flow in one direction (p_min_pu=0), from bus0 to bus1. To build a bidirectional lossless link, set efficiency = 1, marginal_cost = 0 and p_min_pu = -1.
Link with a single input and multiple outputs
Suppose a link representing a combined heat and power (CHP) plant takes as input 1 unit of fuel and gives as outputs 0.3 units of electricity and 0.7 units of heat. Then bus0 connects to the fuel, bus1 connects to electricity with efficiency=0.3 and bus2 connects to heat with efficiency2=0.7. This example illustrates a CHP with a fixed power-heat ratio using links.
Link with multiple inputs and a single output
Suppose a link representing a methanation process takes as inputs one unit of hydrogen and 0.5 units of carbon dioxide, and gives as outputs 0.8 units of methane and 0.2 units of heat. Then bus0 connects to hydrogen, bus1 connects to carbon dioxide with efficiency=-0.5 (since 0.5 units of carbon dioxide is taken for each unit of hydrogen), bus2 connects to methane with efficiency2=0.8 and bus3 to heat with efficiency3=0.2. This example illustrates many modelling processes with multiple inputs and outputs using links.
| attribute | type | unit | default | description | status |
|---|---|---|---|---|---|
| name | string | nan | nan | Unique name | Input (required) |
| bus0 | string | nan | nan | Name of origin bus to which link is attached. | Input (required) |
| bus1 | string | nan | nan | Name of first destination bus to which link is attached. Further destination buses (bus2, bus3, etc.) are automatically expanded as needed. |
Input (required) |
| type | string | nan | nan | Placeholder for link type. Not implemented. | Input (optional) |
| carrier | string | nan | nan | Carrier of the link describing its technology (e.g. gas boiler, electrolyser, HVDC link). | Input (optional) |
| efficiency | static or series | per unit | 1 | Efficiency of energy transfer from bus0 to bus1. Can be time-dependent (e.g. to represent temperature-dependent heat pump COP). Further efficiency attributes for further buses (e.g. bus2, bus3, etc.) are automatically expanded as needed (e.g. efficiency2, efficiency3, etc.). |
Input (optional) |
| active | boolean | nan | True | Whether to consider the component in basic functionality or not | Input (optional) |
| build_year | int | year | 0 | Build year | Input (optional) |
| lifetime | float | years | inf | Lifetime | Input (optional) |
| p_nom | float | MW | 0 | Limit of power which can pass through link (in units of bus0). Ignored if p_nom_extendable=True. |
Input (optional) |
| p_nom_mod | float | MW | 0 | Unit size of link module (e.g. fixed blocks of 100 MW). | Input (optional) |
| p_nom_extendable | boolean | nan | False | Switch to allow capacity p_nom to be extended. |
Input (optional) |
| p_nom_min | float | MW | 0 | If p_nom_extendable=True, set its minimum value. |
Input (optional) |
| p_nom_max | float | MW | inf | If p_nom_extendable=True, set its maximum value. |
Input (optional) |
| p_nom_set | float | MW | nan | If p_nom is extendable in optimization, set its value. |
Input (optional) |
| p_set | static or series | MW | nan | The dispatch set point for p0 of the link (for optimisation and power flow). |
Input (optional) |
| p_min_pu | static or series | per unit of p_nom | 0. | Minimal dispatch per unit of p_nom for the link. Can also be negative. |
Input (optional) |
| p_max_pu | static or series | per unit of p_nom | 1. | Maximal dispatch per unit of p_nom for the link. Can also be negative. |
Input (optional) |
| capital_cost | float | currency/MW | 0 | Fixed period costs of extending p_nom by 1 MW (unit of bus0), including periodized investment costs and periodic fixed O&M costs (e.g. annuitized investment costs). Any length factor must already be included here. |
Input (optional) |
| marginal_cost | static or series | currency/MWh | 0. | Marginal cost of 1 MWh consumption from bus0 (e.g. including variable operation and maintenance costs of an electrolyser but excluding electricity costs). |
Input (optional) |
| marginal_cost_quadratic | static or series | currency/MWh | 0. | Quadratic marginal cost for 1 MWh of consumption from bus0. |
Input (optional) |
| stand_by_cost | static or series | currency/h | 0. | Stand-by cost for operating the link. This cost is incurred whenever the status is 1 (including when dispatch decision is zero). | Input (optional) |
| length | float | km | 0 | Length of the link. Useful for calculating capital_cost for HVDC connections. |
Input (optional) |
| terrain_factor | float | per unit | 1 | Terrain factor for increasing capital_cost calculated from length. |
Input (optional) |
| committable | boolean | nan | False | Apply unit commitment constraints. This is only possible with p_nom_extendable=False. |
Input (optional) |
| start_up_cost | float | currency | 0 | Cost to start up the link. Only used if committable=True. |
Input (optional) |
| shut_down_cost | float | currency | 0 | Cost to shut down the link. Only used if committable=True. |
Input (optional) |
| min_up_time | int | snapshots | 0 | Minimum number of snapshots for status to be 1. Only used if committable=True. Does not consider snapshot weightings. |
Input (optional) |
| min_down_time | int | snapshots | 0 | Minimum number of snapshots for status to be 0. Only used if committable=True. Does not consider snapshot weightings. |
Input (optional) |
| up_time_before | int | snapshots | 1 | Number of snapshots that the link was online before network.snapshots start. Only read if committable=True and min_up_time>0. Does not consider snapshot weightings. |
Input (optional) |
| down_time_before | int | snapshots | 0 | Number of snapshots that the link was offline before network.snapshots start. Only read if committable=True and min_down_time>0. Does not consider snapshot weightings. |
Input (optional) |
| ramp_limit_up | static or series | per unit | nan | Maximum increase from one snapshot to the next, per unit of p_nom. Ignored if NaN. Does not consider snapshot weightings. |
Input (optional) |
| ramp_limit_down | static or series | per unit | nan | Maximum decrease from one snapshot to the next, per unit of p_nom. Ignored if NaN. Does not consider snapshot weightings. |
Input (optional) |
| ramp_limit_start_up | float | per unit | 1 | Maximum increase at start up, per unit of p_nom. Only used if committable=True. |
Input (optional) |
| ramp_limit_shut_down | float | per unit | 1 | Maximum decrease at shut down, per unit of p_nom. Only used if committable=True. |
Input (optional) |
| p0 | series | MW | 0. | Power at bus0 (positive if link is withdrawing from bus0). |
Output |
| p1 | series | MW | 0. | Power at bus1 (positive if link is withdrawing from bus1). |
Output |
| p_nom_opt | float | MW | 0 | Optimised nominal capacity. | Output |
| status | series | nan | 1. | Status in the snapshot (1 is on, 0 is off). Only returned if committable=True. |
Output |
| start_up | series | nan | 1. | Whether the unit was started in the snapshot (1 is yes, 0 is no). Only returned if committable=True. |
Output |
| shut_down | series | nan | 1. | Whether the unit was shut down in the snapshot (1 is yes, 0 is no). Only returned if committable=True. |
Output |
| mu_lower | series | currency/MW | nan | Shadow price of lower p_nom limit \(-F \leq f\). Always non-negative. |
Output |
| mu_upper | series | currency/MW | nan | Shadow price of upper p_nom limit \(f \leq F\). Always non-negative. |
Output |
| mu_p_set | series | currency/MWh | nan | Shadow price of fixed dispatch p_set |
Output |
| mu_ramp_limit_up | series | currency/MWh | nan | Shadow price of upper ramp up limit | Output |
| mu_ramp_limit_down | series | currency/MWh | nan | Shadow price of lower ramp down limit | Output |