Skip to content

Commit

Permalink
FlowBoundary is flow direction constraining
Browse files Browse the repository at this point in the history
(cherry picked from commit e84ae3a)
  • Loading branch information
SouthEndMusic authored and visr committed Apr 23, 2024
1 parent 5d3b795 commit 0264920
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 4 deletions.
3 changes: 2 additions & 1 deletion core/src/allocation_init.jl
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ function find_subnetwork_connections!(p::Parameters)::Nothing
# destination node subnetwork id ≠1
for node_id in graph[].node_ids[1]
for outflow_id in outflow_ids(graph, node_id)
if graph[outflow_id].subnetwork_id != 1
if (graph[outflow_id].subnetwork_id != 1) ||
(graph[node_id, outflow_id].subnetwork_id_source == 1)
main_network_source_edges =
get_main_network_connections(p, graph[outflow_id].subnetwork_id)
edge = (node_id, outflow_id)
Expand Down
4 changes: 3 additions & 1 deletion core/src/allocation_optim.jl
Original file line number Diff line number Diff line change
Expand Up @@ -865,7 +865,9 @@ function save_allocation_flows!(
end

# Check whether the next edge is the current one reversed
if edge_2 == reverse(edge_1)
# and the edge does not have a UserDemand end
if edge_2 == reverse(edge_1) &&
!(edge_1[1].type == NodeType.UserDemand || edge_1[2].type == NodeType.UserDemand)
# If so, these edges are both processed in this iteration
flow_rate += sign_2 * JuMP.value(F[edge_2])
skip = true
Expand Down
11 changes: 9 additions & 2 deletions core/src/util.jl
Original file line number Diff line number Diff line change
Expand Up @@ -572,8 +572,15 @@ is_flow_constraining(node::AbstractParameterNode) = hasfield(typeof(node), :max_

"""Whether the given node is flow direction constraining (only in direction of edges)."""
is_flow_direction_constraining(node::AbstractParameterNode) = (
node isa
Union{Pump, Outlet, TabulatedRatingCurve, FractionalFlow, Terminal, UserDemand}
node isa Union{
Pump,
Outlet,
TabulatedRatingCurve,
FractionalFlow,
Terminal,
UserDemand,
FlowBoundary,
}
)

function has_main_network(allocation::Allocation)::Bool
Expand Down

0 comments on commit 0264920

Please sign in to comment.