Skip to content

Unregulated_User

At a glance…

The unregulated_user node represents a water user whose access is opportunistic. The user diverts water subject to licence conditions to satisfy their demands. If the demand cannot be fully satisfied, this is called a shortfall.

[node.water_harvester]
type = unregulated_user
loc = 20, 30
pump = 20
demand = data.extendeddataset.by_name.unrestricted_demand
ds_1 = my_other_node

Node properties

Property Description
[node.?] (compulsory) Start of node declaration. This says we are creating a node, and also defines the name of the node. Node naming conventions are discussed at . Example: [node.urban_user]
type (compulsory) The node type, which is “unregulated_user” in this case. type = user
loc (compulsory) The location of the node in cartesian coordinates. Example: loc = 20, 30
demand (optional) Demand data [ML]. Example: demand = data.extendeddataset.by_name.urban_demand
pump (optional) Use this to limit the amount of water the user can extract each timestep. Example: pump = 86.4
flow_threshold (optional) Use this to leave a certain amount of flow in the river (not extract it). This can be used to set flow conditions as may be associated with unregulated licence conditions. Example: flow_threshold = 100.0
annual_cap (optional) Use this to set an annual diversion limit. Specify the cap volume (ML), and the month in which the annual cap resets. Example: annual_cap = 2250, 7
demand_carryover (optional) Turn on/off demand carryover. This behaviour is off be default. Set this to “true” if you want the user to carryover unmet demands to the following timestep. Example: demand_carryover = true And if you want the carryover to reset each year, then also specify the month when that should happen. Example: demand_carryover = true, 7
accounts (optional) Names of the accounts this user draws on, comma-separated in order of use. Availability is capped by the accounts' combined balance and diversions are debited from them in order, so an allocation system can constrain the user. Example: accounts = harvest_licence
ds_1 (optional) Name of the downstream node on the river. This property defines a downstream link: what the user does not divert flows down it. Example: ds_1 = my_other_node
ds_2, ds_3, ds_4 (optional) Supply outlets. The node on a supply outlet places its orders with this user, and the user diverts that water and sends it down the outlet. See Supply outlets. Example: ds_2 = my_field

Results associated with this node

Result Description
dsflow Downstream flow [ML], the total down all outlets
usflow Upstream flow [ML]
ds_1 Downstream flow on link ds_1 [ML]
ds_1_order Order on link ds_1 [ML]
ds_2, ds_3, ds_4 Flow sent down the supply outlet [ML]
ds_2_order (and 3, 4) The order arriving on the supply outlet today [ML]
order Zero (0) for unregulated users
order_due Zero (0) for unregulated users
demand Demand at this node [ML]
diversion Diverted volume [ML]. This is the whole metered take, including what is sent down supply outlets
pump Pump capacity value [ML] which may vary due to functions
flow_threshold Flow threshold value [ML] which may vary due to functions
demand_carryover Total demand carried over to the next timestep [ML].

How the node works

Demands and diversions must be positive. The user node extract flows to meet the demand as specified in the user node.

Pump capacity

Flow available for diversion is limited by the specified pump capacity.

available=min(usflow,pump capacity)

Flow threshold

available=max(usflow−threshold,0)

Annual cap

Limits diversions on an annual basis. Diversion accounting starts on the first timestep of the specified month.

Demand carryover

If demand carryover is allowed, then unmet demands will be carried forward with the hope of satisfying them in the next timestep. If a reset month is been specified, the carryover will be reset to 0 at the start of the first timestep on that calendar month each year.

Accounts

If the node lists accounts, availability is further capped by the combined account balance, and each diversion is debited from the accounts in the order listed. This lets an allocation system govern opportunistic take — for example an account credited only on flow events. See [acc.*].

Diversion

diversion=min(usflow,demand)

dsflow=usflow−diversion

Supply outlets

An unregulated user can supply water to other nodes through its supply outlets, ds_2, ds_3 and ds_4. The usual case is a field: the field does not pump from the river itself, it is supplied by the user, through the user's pump, its flow threshold, its annual cap and its accounts.

[node.farm_pump]
type = unregulated_user
loc = 20, 30
demand = 0
pump = 86.4
flow_threshold = 200
ds_1 = river_below
ds_2 = paddock

[node.paddock]
type = field
loc = 30, 40
order = 5
ds_1 = river_below

The node on a supply outlet places its orders with the user. The user is the supply at the top of that node's regulated zone, in the way a storage is for the reach below it:

  • The orders arriving on the supply outlets are added to the user's demand on the step they arrive, and the user diverts them and sends them down the outlets on that same step. The demand result stays the user's own demand.
  • Travel time for the nodes on a supply outlet is counted from the user. With routing between the user and the node below, that node orders ahead by that travel time, and the water the user diverts today reaches it as the order falls due. This holds wherever the user sits, including inside a storage's regulated zone: the supply outlet starts a new zone, while ds_1 carries on the river's.
  • An unregulated user places no orders upstream, and that includes these. It takes what the river is carrying, within its limits. If the river cannot supply an order, the order is not met.

When the user cannot divert everything that is wanted, the supply outlets are served first, ds_2 then ds_3 then ds_4, and the user's own demand takes what is left.

Everything that limits or meters the take applies to the whole diversion, the supply outlets' share included: flow_threshold, pump, annual_cap, the accounts' balance, and the debit to the accounts. It is the user's water. Water that the node below returns to the river is not credited back.

Orders on the supply outlets take no part in demand_carryover, which carries over the user's own unmet demand alone. A node that orders to meet a deficit, as a field does, orders that deficit again the next day; carrying it over as well would deliver it twice.

For the mass balance, only what the user keeps for itself leaves the model at the user; the water sent down a supply outlet is still in the model, on that link. What the user keeps is diversion − ds_2 − ds_3 − ds_4, and usflow = ds_1 + diversion.

References

None.