@@ -18,6 +18,7 @@ function add_transport_constraints!(
18
18
expr_avail_export = expr_avail. expressions[:export ]
19
19
expr_avail_import = expr_avail. expressions[:import ]
20
20
21
+ # - Capacity limits for transport flows
21
22
let table_name = :transport_flow_limit_simple_method , cons = constraints[table_name]
22
23
indices = _append_transport_data_to_indices (connection)
23
24
var_flow = variables[:flow ]. container
@@ -89,6 +90,48 @@ function add_transport_constraints!(
89
90
)
90
91
end
91
92
93
+ # - Minmum output flows limit if any of the flows is transport flow
94
+ # - This allows some negative flows but not all negative flows, so transport flows can pass through this asset
95
+ # - Holds for producers, conversion and storage assets
96
+ let table_name = :min_outgoing_flow_for_transport_flows_without_unit_commitment ,
97
+ cons_name = Symbol (" min_output_flows_limit_for_transport_flows_without_unit_commitment" )
98
+
99
+ attach_constraint! (
100
+ model,
101
+ constraints[table_name],
102
+ cons_name,
103
+ [
104
+ @constraint (
105
+ model,
106
+ outgoing_flow ≥ 0 ,
107
+ base_name = " $cons_name [$(row. asset) ,$(row. year) ,$(row. rep_period) ,$(row. time_block_start) :$(row. time_block_end) ]"
108
+ ) for (row, outgoing_flow) in
109
+ zip (constraints[table_name]. indices, constraints[table_name]. expressions[:outgoing ])
110
+ ],
111
+ )
112
+ end
113
+
114
+ # - Minmum input flows limit if any of the flows is transport flow
115
+ # - This allows some negative flows but not all negative flows, so transport flows can pass through this asset
116
+ # - Holds for onversion and storage assets
117
+ let table_name = :min_incoming_flow_for_transport_flows ,
118
+ cons_name = Symbol (" min_input_flows_limit_for_transport_flows" )
119
+
120
+ attach_constraint! (
121
+ model,
122
+ constraints[table_name],
123
+ cons_name,
124
+ [
125
+ @constraint (
126
+ model,
127
+ incoming_flow ≥ 0 ,
128
+ base_name = " $cons_name [$(row. asset) ,$(row. year) ,$(row. rep_period) ,$(row. time_block_start) :$(row. time_block_end) ]"
129
+ ) for (row, incoming_flow) in
130
+ zip (constraints[table_name]. indices, constraints[table_name]. expressions[:incoming ])
131
+ ],
132
+ )
133
+ end
134
+
92
135
return
93
136
end
94
137
0 commit comments