Connections
Connections can transfer energy between two nodes. Parameters for the connection are defined in the connection entity, but the two nodes it connects are defined by establishing an entity between connection--leftNode--rightNode.
Defining how the connection functions
transfer_methodto define the way the connection transfers energy between the nodesstartup_methodgives the connection online capacity. linear: the online capacity is anything between 0 and the built capacity; binary: whole units of the connection (ofvirtual_unitsize, else the whole connection), computationally more demanding. The connection's flow in each direction is limited by its online capacity × availability, its reserve by its online capacity, andstartup_costis paid per MW brought online. Connections have no minimum load or minimum up/down times. Not available for connections in adc_power_flow_with_anglesgroup, other thanis_DCconnections (an error: switching a DC power-flow line off would need line-switching constraints).invest_methodto define investment and retirement limits: either not_allowed or then a combination of- invest and/or retire
- investment limits for each period and/or for all periods (total) or no_limit
- cumulative_limits considers investments, retirements and existing together, requires
cumulative_max_capacityand/orcumulative_min_capacity - any method other than not_allowed offers investment (retirement) in every investment period, also without
invest_cost(salvage_value) or where it is 0: that capacity has no annuity, itsfixed_coststill counts. To forbid investment in a period, use a period method (invest_period, invest_period_total and their invest_retire_ forms) and setinvest_max_period0 for it: the other methods do not useinvest_max_period. A 0 in aninvest_costmap does not forbid it.
lifetime_methodto choose how the investments behave after unit runs out of lifetime. Automatic reinvestment (reinvest_automatic - default) causes the model to keep the capacity until the end of model horizon and applies the annualized investment cost until the end of model horizon without further choice by the model. Choice of reinvestment (reinvest_choice) removes the capacity at the end of the lifetime and the model needs to decide how much new capacity is to be built. One-shot investment (no_investment) allows the model to invest freely within the first-period lifetime window (subject to the usual invest_method / invest_max_period caps) but pins v_invest to zero for any period after that window — the asset retires once and cannot be rebuilt. Use for physical one-off additions such as plant refurbishments that cannot be repeated at the same cost. If there is a need to remove the possibility to invest after lifetime, then the investment limits can be used.
Main data items for connections
existing- [MW or count] Existing capacity or number of units. Ifvirtual_unitsizeis given, thenexistingis the number of units (capacity =existing×virtual_unitsize). Otherwiseexistingis the existing capacity of a single unit (typically in MW). Constant or period.efficiency- [factor, typically between 0-1] Efficiency of a connection. Constant, period, time or period+time.delay- [hours] Not yet applied to connections (planned). A connectiondelayis ignored: the connection is modelled exactly as if no delay were set (the flow arrives in the same time step) and the model prints a warning naming the connection. To model a delayed flow between two nodes, use a unit withdelayinstead.startup_cost- [CUR/MW] Cost of starting up one MW of capacity (used whenstartup_methodactivates online variables on the connection). Constant or period.reactance- [p.u.] Per-unit reactance of the transmission line. Used for DC power flow when the enclosinggroup__nodehastransfer_method = dc_power_flow_with_angles.constraint_invested_capacity_coeff- A map of coefficients (Index: constraint name, value: coefficient) putting the capacity that comes online in each period on the left side of the user-defined constraint. Without a construction lead time, this is the capacity invested in that period. Coefficient per MW. Renamed fromconstraint_capacity_coefficient; the old expression summedv_investonce per active investment period, giving incorrect results in multi-period models. See User constraints.constraint_cumulative_pre_built_capacity_coeff- A map of coefficients (Index: constraint name, value: coefficient). Puts the capacity in service at the start of each period on the left side of the user constraint. This is existing capacity plus capacity that came online in earlier periods, minus earlier retirements. Capacity coming online in the period itself is in the invested term. Enables learning-effect and period-over-period growth limits (pair withconstraint_invested_capacity_coeffon the same constraint). Coefficient per MW. See User constraints.constraint_capacity_coeff- A map of coefficients (Index: constraint name, value: coefficient). Puts the connection's capacity in service in each period on the left side of the user constraint (existing plus investments still in service minus retirements). Coefficient per MW. Capacity in construction is not included. See User constraints.constraint_retired_capacity_coeff- A map of coefficients (Index: constraint name, value: coefficient). Puts the capacity retired in each period on the left side of the user constraint. Coefficient per MW. See User constraints.constraint_in_construction_capacity_coeff- A map of coefficients (Index: constraint name, value: coefficient). Puts the capacity in construction in each period on the left side of the user constraint. Capacity is in construction from the period of the investment decision until it comes online. It is zero without a construction lead time. Coefficient per MW. See User constraints.constraint_online_coeff- [unit of the constraint per unit online] A map of coefficients (Index: constraint name, value: coefficient). Puts the number of units of the connection online in each time step (both directions together) on the left side of the user constraint. One unit isvirtual_unitsize; without it, the largestexistingcapacity, else 1000 MW — setvirtual_unitsizeon a connection that is invested in. Needsstartup_methodlinear or binary; a coefficient on a connection without it is an error. With linear startup the number is continuous. For MW online, use the unit size as the coefficient. See User constraints.other_operational_cost- [CUR/MWh] Other operational variable cost for trasferring over the connection. Constant, period, time or period+time.fixed_cost- [CUR/kW/a] Annual fixed cost. New capacity pays it only while it operates. Constant or period.invest_cost- [CUR/kW] Overnight investment cost of new capacity. It is paid as an annuity over the years the capacity operates. Construction time costs with their interest must be included here. Constant or period: the value of the period when the capacity is built (comes online) is used.discount_rate- [e.g. 0.05 equals 5%] Discount rate for investments (WACC). Reflects the financing cost and risk for this technology. Should be nominal when modelinflation_rate> 0, real wheninflation_rate= 0. Constant or period.lifetime- [years] Operating lifetime. It starts when the capacity starts to operate: with a construction lead time, after the construction. Used with the discount rate to calculate the annuity. What happens at the end of the lifetime depends onlifetime_method: reinvest_automatic keeps the capacity to the end of the model horizon, reinvest_choice retires it, no_investment retires it once. Theexistingcapacity ends at the first year of the model run plus thelifetimeof the first period (in every solve of a chain of solves). Constant or period.construction_lead_time- [years] Time from the investment decision until the capacity starts to operate. The start is rounded to the start of a period (seeconstruction_lead_time_method). Investments whose rounded start is after the end of the solve or the model horizon are not offered, with a warning. Constant or period. Default 0. See construction lead time.construction_lead_time_method- How the start of operation (decision year plusconstruction_lead_time) is rounded to the start of a period: immediate (no lead time, the capacity operates from the decision period), closest_seam (the nearest period start; a tie goes to the later one), previous_seam (the period start before), next_seam (the period start after). Without a value: immediate when there is no lead time, else closest_seam.- other investment parameters:
invest_max_total,invest_max_period,invest_min_total,invest_min_period,salvage_value(onlyexistingcapacity can be retired, see retirements) is_DC- A flag whether the connection is DC: its flow into a node of a group with a non_synchronous_limit counts as non-synchronous (both directions; between two nodes of the same group it does not count). Default false. Anis_DCconnection inside adc_power_flow_with_anglesgroup is not a DC power-flow line: it keeps its owntransfer_methodand needs noreactance.virtual_unitsize- [MW] Size of one unit of the connection. With it,existingis the number of units. Binary startups commit whole units of this size. Investments and retirements are continuous; their limits are in MW. No value: the existing capacity, or 1000 MW without it.availability- [e.g. 0.9 means 90%] Fraction of capacity available for connection flows. Constant, period, time or period+time.
connection__profile
profile_method- limits the connection's flow with a profile (upper_limit, lower_limit, fixed; the profile is a share of the capacity). The default is none: the profile is not applied, and FlexTool warns about a link without aprofile_method. An upper_limit or fixed link to a profile without a value in the scenario stops the run with an error (it would hold the flow at 0). See units constrained by profiles.
Investment parameters for connections
These are the same as for units, see here
connection__node (per-endpoint properties)
On the membership entity between a connection and one of its endpoint nodes:
constraint_flow_coeff- A map of coefficients (Index: constraint name, value: coefficient) placing this connection-to-node flow variable on the left side of a user-definedconstraint. Applied per timestep. See User constraints.