Transmission Link

Graph structure

A transmission link represents the lossy transport of a commodity between two nodes. For example, an electricity transmission link is represented in Macro using the following graph structure:

A transmission link is very simple and is made of:

  • 1 Edge component:
    • 1 Transmission Edge, representing the commodity flow (in this case electricity) between two nodes.

Attributes

The structure of the input file for a transmission link asset follows the graph representation. Each global_data and instance_data will look like this:

{
    "edges":{
        "transmission_edge": {
            // ... transmission_edge-specific attributes ...
        }
    }
}

Edges

The definition of the Edge object can be found here MacroEnergy.Edge.

AttributeTypeValuesDefaultDescription
typeStringCommodity of the edge. E.g. Electricity.RequiredCommodity flowing through the edge.
start_vertexStringAny electricity node id present in the systemRequiredID of the starting vertex of the edge. The node must be present in the nodes.json file. E.g. "elec_node_1".
end_vertexStringAny electricity node id present in the systemRequiredID of the ending vertex of the edge. The node must be present in the nodes.json file. E.g. "elec_node_2".
constraintsDict{String,Bool}Any Macro constraint type for EdgesCapacityConstraintList of constraints applied to the edge. E.g. {"CapacityConstraint": true}.
can_expandBoolBoolfalseWhether the edge is eligible for capacity expansion.
can_retireBoolBoolfalseWhether the edge is eligible for capacity retirement.
distanceFloat64Float640.0Distance between the start and end vertex of the edge.
existing_capacityFloat64Float640.0Existing capacity of the edge in MW.
fixed_om_costFloat64Float640.0Fixed operations and maintenance cost (USD/MW-year).
has_capacityBoolBoolfalseWhether capacity variables are created for the edge.
integer_decisionsBoolBoolfalseWhether capacity variables are integers.
investment_costFloat64Float640.0Annualized capacity investment cost (USD/MW-year)
loss_fractionFloat64Number $\in$ [0,1]0.0Fraction of transmission loss.
max_capacityFloat64Float64InfMaximum allowed capacity of the edge (MW). Note: add the MaxCapacityConstraint to the constraints dictionary to activate this constraint.
min_capacityFloat64Float640.0Minimum allowed capacity of the edge (MW). Note: add the MinCapacityConstraint to the constraints dictionary to activate this constraint.
min_flow_fractionFloat64Number $\in$ [0,1]0.0Minimum flow of the edge as a fraction of the total capacity. Note: add the MinFlowConstraint to the constraints dictionary to activate this constraint.
ramp_down_fractionFloat64Number $\in$ [0,1]1.0Maximum decrease in flow between two time steps, reported as a fraction of the capacity. Note: add the RampingLimitConstraint to the constraints dictionary to activate this constraint.
ramp_up_fractionFloat64Number $\in$ [0,1]1.0Maximum increase in flow between two time steps, reported as a fraction of the capacity. Note: add the RampingLimitConstraint to the constraints dictionary to activate this constraint.
variable_om_costFloat64Float640.0Variable operation and maintenance cost (USD/MWh).
Default constraints

The default constraint for power lines is the Capacity constraint.

Example

The following is an example of the input file for a power line asset that creates two power lines, one connecting the SE and MIDAT regions, and one connecting the MIDAT and NE regions.

{
    "link": [
        {
            "type": "TransmissionLink",
            "global_data": {
                "edges": {
                    "elec_edge": {
                        "type": "Electricity",
                        "has_capacity": true,
                        "unidirectional": false,
                        "can_expand": true,
                        "can_retire": false,
                        "integer_decisions": false,
                        "constraints": {
                            "CapacityConstraint": true,
                            "MaxCapacityConstraint": true
                        }
                    }
                }
            },
            "instance_data": [
                {
                    "id": "SE_to_MIDAT",
                    "edges": {
                        "transmission_edge": {
                            "start_vertex": "elec_SE",
                            "end_vertex": "elec_MIDAT",
                            "distance": 491.4512001,
                            "existing_capacity": 5552,
                            "max_capacity": 33312,
                            "investment_cost": 35910,
                            "loss_fraction": 0.04914512
                        }
                    }
                },
                {
                    "id": "MIDAT_to_NE",
                    "edges": {
                        "transmission_edge": {
                            "start_vertex": "elec_MIDAT",
                            "end_vertex": "elec_NE",
                            "distance": 473.6625536,
                            "existing_capacity": 1915,
                            "max_capacity": 11490,
                            "investment_cost": 55639,
                            "loss_fraction": 0.047366255
                        }
                    }
                }
            ]
        }
    ]
}