Hydrogen Line

Graph structure

A hydrogen line is represented in Macro using the following graph structure:

A hydrogen line asset is very simple and is made of:

  • 1 Edge component:
    • 1 Hydrogen Edge, representing the flow of hydrogen between two nodes.

Attributes

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

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

Edge

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

AttributeTypeValuesDefaultDescription
typeStringHydrogenRequiredCommodity flowing through the edge.
start_vertexStringAny hydrogen 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. "h2_node_1".
end_vertexStringAny hydrogen 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. "h2_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.
capacity_sizeFloat64Float641.0Size of the edge capacity.
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 constraints for the hydrogen line asset are the following:

Example

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

{
    "h2transport": [
        {
            "type": "HydrogenLine",
            "global_data": {
                "edges": {
                    "h2_edge": {
                        "type": "Hydrogen",
                        "unidirectional": false,
                        "can_expand": true,
                        "can_retire": false,
                        "has_capacity": true,
                        "integer_decisions": false,
                        "constraints": {
                            "CapacityConstraint": true
                        }
                    }
                }
            },
            "instance_data": [
                {
                    "id": "h2_SE_to_MIDAT",
                    "edges": {
                        "h2_edge": {
                            "start_vertex": "h2_SE",
                            "end_vertex": "h2_MIDAT",
                            "loss_fraction": 0.067724471,
                            "distance": 491.4512001,
                            "capacity_size": 787.6,
                            "investment_cost": 82682.23402
                        }
                    }
                },
                {
                    "id": "h2_NE_to_SE",
                    "edges": {
                        "h2_edge": {
                            "start_vertex": "h2_NE",
                            "end_vertex": "h2_SE",
                            "loss_fraction": 0.06553874,
                            "distance": 473.6625536,
                            "capacity_size": 787.6,
                            "investment_cost": 79896.9841
                        }
                    }
                }
            ]
        }
    ]
}