Ordering priorities allow users in Source to specify how shortfalls are prioritised between different demands in Source. Previously, Source tried to shortfall all demands equally within the model, this functionality provides a solution to address situations encountered in water resource models such as the following:
...
- n number of priorities specified
- pNode Node priority applies to things which can place orders
- dsOrder(min) ds order at a node at min flow time
- order(min) order propagated upstream at min flow time
- nPriority(n) output array of n priorities for the node
- dsPriority(n) array of n priorities being passed into the node
- sumDSPriorityG sum of dsPriority(n) where n < pNode
- sumDSPriorityGE sum of dsPriority(n) where n <= pNode
- sumDSPriorityL sum of dsPriority(n) where n > pNode
- sumDSPriorityLE sum of dsPriority(n) where n >= pNode
- sumnPriorityG sum of nPriority(n) where n < p
- MinFlowReq minimum flow requirement
- SupplyPointOrderOrder generated by water user and passed to supply point
- dsMainPriority(p) Priorities arriving at a splitter from the main branch
- dsMainOrder Order arriving at a splitter from the main branch
- dsEffPriority(p) Priorities arriving at a splitter from the effluent branch
- dsEffOrder Order arriving at a splitter from the effluent branch
Minimum Flow Node
The minimum flow node needs to have a priority assigned to it (pNode) by the user. The priority assigned to the minimum flow requirement can change the proportions of the priorities being passed upstream. There are essentially two scenarios that can occur
...
- Loop on priorities p = 0 to n
- If the MinFlowReq >= dsOrder Then
- If p < pNode then nPriority(p) = dsPriority(p)*dsOrder/MinFlowReq
- If p = pNode then
- sumDSPriorityLE = sum of dsPriority(n) where n >= p
- nPriority(p) = ((MinFlowReq – dsOrder) + sumDSPriorityLE* dsOrder)/MinFlowReq
- If p > pNode then nPriority(p) = 0
- If the MinFlowReq < dsOrder Then
- sumDSPriorityGE = sum of dsPriority(n) where n <= p
- If p <= pNode then
- sumDSPriorityG = sum of dsPriority(n) where n < p
- nPriority(p) = sumDSPriorityGE*dsOrder >= MinFlowReq ? dsPriority(p)*dsOrder/usOrder : (MinFowReq- sumDSPriorityG *dsOrder)/usOrder
- If p > Node(p) then
- sumDSPriorityL = sum of dsPriority where (n) where n > p
- nPriority(p) = nPrioirity(p)/ sumDSPriorityL*(1- sumDSPriorityGE)
Supply Point
There are essentially four scenarios in how a supply point node can be configured for the rules based-ordering, shown in Table 1. Note that if a Supply Point is selected as groundwater then it should not be part of the ordering network i.e. it should not be allowed to generate orders (this does not appear to happen in the model, maybe more validation for that setting?)
As the Supply Point can extract water from the system we need to consider how the priorities affect both the order phase and the flow phase.
Anchor | ||||
---|---|---|---|---|
|
Scenario | Allow Order | Extract Water | Notes |
1 | True | True | Standard case |
2 | True | False | Just restrict the extraction in the flow phase |
3 | False | True | Water will be extracted independently of the priorities |
4 | False | False | Nothing occurs |
...
Environmental Demand Node
If Inclusive of Orders = True Then
It acts like a minimum flow node and we will need to adjust ratios
If Inclusive of Orders = False Then
It acts like a supply point and is generating an additional order
...
Transfer of Ownership
The transfer of ownership should have has two options regarding ordering priorities
- Maintain downstream ratio
- Override ratios and assign to one priority level
...
- (re-prioritise orders)
Storage
Two options at a storage node
Pass Orders Through – simply sum the volumes at each priority level across all outlets and divide by total volume being passed up all outlets to get proportions, assume evap/seepage does not effect storage ratios
Re-regulating the
...
orders
- Downstream orders
- Storage losses
- Different upstream min order time
- Operational targets being met
Process
- If "PassThroughOrder" = true Then
- sumOutletOrder = Sum the total order from all outlets
- Loop on priorities p = 0 to n
- Loop on outlets
- OutletOrders(p) += dsOrder(p) * OutletOrder
- nPriority(p) = OutletOrders(p)/ sumOutletOrder
...