Classification of reaches
Reaches are identified by their nodes. The position of a reach in the network is entirely defined by the names of its upstream and downstream nodes. The direction of flow is defined at the same time. The network topology is simply described as an oriented graph.
The reaches constitute the arcs of that graph, delineated by the nodes, upstream and downstream. They are automatically numbered by the program according to the order in which they are input in the data file.
Subcritical flow being controlled by the downstream conditions, the calculation of a water surface profile proceeds upwards, commencing at the downstream end.
Therefore, a relationship between water surface elevation and discharge is needed as a downstream boundary condition to start the calculation.
A hydraulic network can be represented by a connected oriented graph, without closed circuits, along which one can move with the help of the following algorithm:
One must look for a node where no arc arrives, and from where only one arc leaves.
The latter arc is added to a list, and is then removed from the graph.
The process is recursively applied on the resulting sub-graph, as long as nodes (as defined above) exist.
Then, either the problem is over, or arcs not added to the list still remain.
In the latter case, one searches in the remaining sub-graph a node where no arcs arrive, and from where more than one arc leaves.
Those are selected, then they are removed from the graph, and the process is recursively applied to the resulting sub-graph, as long as such nodes exist. Then, either the problem is over, or non-listed arcs still remain.
In the latter case, the algorithm is applied again, from the beginning, on the remaining sub-graph.
Reading backwards, the list of arcs thus obtained, one can find a satisfactory partial relationship (Remark: only the upstream nodes of the reaches are processed by this algorithm). From the list, one can also establish the identity of reaches of a given loop. These reaches are gathered starting from the first distributory point (the two first successive reaches with the same upstream node). If the model has several downstream boundary conditions in terms of elevations, then all the reaches following the first distributory point of the list belong to the loop. On the opposite, if the loop is being closed, it stops with the last junction (the last reach with the same downstream node of another reach belonging to the list and located after the beginning of the loop). We will illustrate the use of the algorithm on a simple example, as shown in figure 3.
Convention for the reaches of the nodes :
- REACH > 0 if it starts from the node
- REACH < 0 if it arrives at the node
We have:
- DAM [1]
- DC1 [2] [4] [-1]
- DC2 [3] [6] [-2]
- FC1 [5] [-4]
- FC2 [-5]
- FC3 [-6]
Apply the first criterion:
The first node where no arc arrives and from where only one arc starts is the upstream node.
Add reach [1] to the list, and remove it from the graph. Then one obtains:
NODES
- DAM
[1] - DC1 [2] [4]
[-1] - DC2 [3] [6] [-2]
- FC1 [5] [-4]
- FC2 [-5]
- FC3 [-6]
- Liste : [1]
We cannot find any node being the upstream node of one single reach. We look for one node never being a downstream node but being the upstream node of several reaches. Node DC1 is fitting these conditions. Then the reaches number 2 and 4 are added to the list:
- DC1
[2][4][-1] - DC2 [3] [6]
[-2] - FC1 [5]
[-4] - Liste : [1], [2], [4]
The same algorithm is applied once again. We get the node named DC2 and the reaches number 3 and 6 are added to the list:
- DC2
[3][6][-2] - FC1 [5]
[-4] - Liste : [1], [2], [4], [3], [6]
We cannot find any other node with two downstream reaches. We then use the first algorithm. We get the node named FC1 and the reach number 5 is added to the list.
- Liste : [1], [2], [4], [3], [6], [5]
The loop starts from the first distributory point (reaches 2 and 4, node DC1). All the following reaches of the list belong to the loop, since this loop is not closed (several downstream boundary conditions exist).