About the Expression Editor
The Expression Editor (Figure 57) allows you to control component behaviour via arithmetic expression. In particular, a component’s behaviour can depend on other dynamic values in the model. The Expression Editor is used in places where you might otherwise employ a time series or a piecewise linear relationship.
Expression Editor
Expression calculation
The Expression Editor calculates values according to the expression that you create. Expression Editor does not check units either within an expression or as a returned value. Neither does Expression Editor convert or normalise units. For example, if the result of a calculation is 10 megalitres but the return units are set to kilolitres, the result of the expression is 10 kilolitres. Similarly, if the inputs to an expression are a mixture of units, and you do not allow for this in your expression, the result may not be what you expect.
The Expression Editor always returns a single value at each time step.
Local vs global scope
Expressions are divided into two types according to their scope: local and global. Global expressions are available throughout the scenario whereas local expressions are confined to the feature editor in which they are defined. With respect to the tabs shown in Figure 57, any value defined in the Variables tab is local to the context in which it is defined (eg the particular feature editor). A value defined in any other tab is global to the scenario. To put this another way, a value defined in the Variables tab can only be seen and used in the Expression Editor in which it is defined whereas a value defined in any other tab can be seen and used from any other location within the same scenario in which it is possible to open an Expression Editor.
Played vs non-played variables
Expression Editor distinguishes between two classes of variable:
- Played variables. These are user-supplied variables which you provide via time series or other inputs such as the Piecewise Linear or Patterns tabs of the Expression Editor. Conceptually, any played variable can be viewed as a list with the next value taken from the list each time the time-step advances. Played variables are updated at the start of the time-step and maintain the same value throughout the time-step.
- Non-played variables. These are also known as model variables, which refers to the fact that the variables are produced by the operation of the models which execute during a run. You gain access to model variables by defining linkages in the Variables tab of the Expression Editor. Within a time-step, the moment when any given model variable is updated depends on the model.
General rules for expressions
The following rules apply to expressions:
- White-space, including new-line markers, is ignored.
- Function names, operator names, variable names and label names are not case sensitive.
- All variable names must begin with the "$" character.
- All variable names must be unique.
- The Expression Editor checks that all variables used in expressions are defined.
- The Expression Editor will not allow circular references.
- An expression that is blank returns zero.
Source warns you if you attempt to delete a node which is referenced in an expression.
If you accidentally use non-unique variable names, Source will warn you when you run your model.
Operator precedence
Unless you use parentheses to modify the order of evaluation, operations are performed according to the precedence rules shown in Table 31. Where two operators have the same level of precedence, the operations are performed left-to-right.
Functions
Functions are predefined formulae that perform calculations which usually depend on the arguments you supply as parameters. Functions can be entered by hand or by using the pull down menu at the top of the Expression Editor (Figure 57). The available functions are summarised in Table 39, Table 40, Table 41 and Table 42. Some examples of function use are shown in Table 32.
Testing expressions
You can test expressions using the Parse button. This opens the Parse Results window (Figure 58) where you can enter values for the various terms in your expression and confirm that the result of evaluating your expression with those values is correct. Your expression is evaluated each time you click the Parse button in the Parse Results window. When you have finished testing, click OK to return to the Expression Editor.
Expression Editor (Parse Results)
Deleting expression components
The various sub-tabs of the Expression Editor allow you to define terms which are then utilised in the construction of expressions. After defining a term you can both rename the term and edit its parameters using the controls in the various columns of the sub-tab.
Deleting a term is a two-step process and involves clicking on the table cell to the left of the name of the term. First, click on that cell. This causes the whole row to become selected. Second, right-click in the same place and choose Delete from the contextual menu. The process is shown in Figure 59.
Expression Editor (delete row)
Variables tab
The Variables tab provides a connection between your expression and model (non-played) variables. You define a name (or meta-name) by which you will refer to a model variable in your expression and configure other parameters governing its use. Once a variable has been defined, it can be used in an expression. To define a new variable:
- Click on a new row in the table (eg Figure 60) and enter a name for the variable by editing the contents of the Name column. Remember that all variable names must start with a "$" character.
- The Initial Value column defines the value that the variable takes on between the start of the first time-step and the point during that time-step when the corresponding model variable acquires a defined value. Set this to an appropriate value.
- The Source column contains a popup menu from which you can select any of the components (nodes, links, etc) that are defined in your model. Choose the appropriate component.
- The Part column contains a popup menu which exposes all of the model variables associated with the component that you selected in the Source popup menu. Choose the appropriate variable.
- Source (the application) chooses units which reflect the units of the Part that you selected. Data can be converted to different units by making a different selection in the Units popup menu.
- The ellipsis ("...") button in the Date Range column leads to a dialog where you can choose the date range that the Expression Editor uses as a filter when obtaining data during each time-step. For example, you can choose to use the value from the current time-step (assuming it has been updated by the time the expression is evaluated) or the previous time-step. You can also use values like the average of the last 100 time-steps. See Date ranges for more information.
Table 33 contains some examples of typical variable declarations.
Expression Editor (Variables tab)
Date ranges
During a time-step, the moment at which any given expression is evaluated, and the moment at which each model variable on which the expression depends is updated, are all independent events. Without a detailed understanding of the order of events during a time-step, it may not be possible to be certain about the exact state of any model variable. For this reason, Expression Editor allows to you choose between a number of options according to your need. Table 44 and Table 45 define the options which are available by default.
If none of the default options is appropriate, you can define your own date ranges. To define a custom date range, choose one of the options from the Date range type popup menu (Figure 61).
Custom date ranges fall into three categories:
- The Date Range Calendar option (Figure 61) enables you to define a precise start and end date to during which the model variable is considered to be valid. Enabling the Is Recurring checkbox causes the years to be ignored. In other words, the period between [start day/start month] and [end day/end month] is considered to be valid for every year during the model execution.
- The Date Range Period option (Figure 62) allows you to specify the date range in terms of time a period relative to the current time step. The size of a period can range from one hour to one year and is controlled via the Period is popup menu. The number of periods included in the range is controlled by the X periods ago(start) and Y periods ago(end) fields where end ≥ start. A value of zero means the current period. For example:
- A Daily period where start=0 and end=0 refers to the current day;
- A Daily period where start=1 and end=1 refers to the previous day.
- The Date Range Time Step option (Figure 63) allows you to specify the date range in terms of time-steps. The number of time-steps included in the range is controlled by the X time-steps ago(start) and Y time-steps ago(end) fields where where end ≥ start. A value of zero means the current time-step. For example:
- If start=0 and end=0, this refers to the current time-step;
- If start=1 and end=1, this refers to the last time-step;
- If start=0 and end=6, this refers to the last seven time-steps including the current time-step.
Expression Editor (Date Range, custom calendar)
For all three custom calendar options:
- The Update Frequency popup menu offers a choice of OncePerTimeStep or OncePerIteration. The latter setting is only applicable to NetLP.
- The Return the set as group of radio buttons control the granularity of the returned result:
- If the range represents a single value, that value is returned regardless of this setting.
- Table 34 summarises what is returned if the range represents more than one value.
Note that, while the user interface uses the word set to refer to the concept of returning multiple values, because the values are both ordered and can be repeated, it is probably better to think of these as lists.
Expression Editor (Date Range, period)
Expression Editor (Date Range, time step)
Example
As an example, the Expression Editor can be used in a Maximum Order Constraint node to limit the maximum orders for each time step. Assume that a channel constraint of 80 ML/day is required to prevent flows going overbank, except during floods (defined as more than 2,000 ML/day) when up to 3,000 ML/day is permitted as an environmental flow.
Figure 64 shows a fragment of the river network. Downstream demands are represented by a Supply Point and Water User node. In the Expression Editor for the Maximum Order Constraint node, you specify the internal (orders and unregulated river gain) of the model in the Variables tab of the Expression Editor and determine the maximum orders using an expression. Table 33 shows the relevant variables and Table 35 an expression which returns a value of 3,000 ML/day if flows are above 2,000 ML/day but 80 ML/day otherwise.
Maximum Order Constraint node (example)
Piecewise Linear tab
You use the Piecewise Linear tab to create piecewise linear relations for use in expressions. You can find more information about such relations at About piecewise linear editors.
Expression Editor (Piecewise Linear tab)
To define a new piecewise linear relation:
- Click on a new row in the table (eg Figure 65) and enter a name for the relation by editing the contents of the Name column. Remember that this is a variable and that all variable names must start with a "$".
- You use the Source Label and Result Label fields to declare names to correspond with the X and Y axis of the piecewise linear editor. The names are only for information and serve no other purpose.
- Set the units appropriate to the X and Y axes using the Source Unit and Result Unit fields. Note that using different units does not imply automatic conversion. If you wish to convert units, you must do this as part of the expression.
- Click the Edit link. This opens the Interpolated Function window (Figure 66). Use this window to enter the piecewise linear relation and then click OK. Refer to About piecewise linear editors for more information about constructing relations.
Expression Editor (Piecewise Linear, Interpolated Function)
Example
As an example, xxxxxx.
Patterns tab
You use patterns (Figure 67) to create a named dataset of repeating time-dependent values (eg daily or monthly pattern).
Input is:
Name
All expression names must start with a $.
Units
The default units for pattern values are the units defined for the simulation. You can enter data values in different units by right-clicking the column header in the pattern data entry window. To convert the entered data to different units for use in the expressions, choose the new units from the drop-down menu adjacent to the user-defined pattern name.
Type
Select time period for the pattern from the drop-down menu (eg monthly, weekly, daily, 6-hourly, hourly).
Edit
To load pattern data, click on the edit link. Either manually or via a text file, enter the amount per time period specified, eg monthly accepts 12 values; weekly accepts 53 values; daily accepts 366 values; 6-hourly (over 1 year) accepts 1464 values; hourly accepts 24 values.
EXAMPLE - Application of the Patterns tab of Expression Editor using an inflow node as an example
As an example, the Expression Editor is used in the Inflow node to specify the values of monthly inflows using the Patterns tab.
Example You want to use mean monthly inflows for every time step in a monthly time step model simulation.
Use Case The inflow node is connected to the river network. In the inflow node Feature Editor, you select the Expression Editor to access the Time Series tab into which data can be entered. You enter the twelve (12) monthly values through the Patterns tab of the Expression Editor and then specify this data set in the expression box of the Expression Editor.
From the Patterns tab of the Inflow node’s Expression Editor, assign a name to the variable (Table 46 & Figure 67). In this example, $MonthlyInflows is given the name of the monthly time-series pattern for the inflow node.
Expression Editor (Patterns tab)
After entering the variable name of $MonthlyInflows, select "Megalitres per Day (ML/day)" from the Units drop-down menu. Next, select "Monthly" from the Type drop-down menu. Then click "Edit". This will open the $MonthlyInflows window (Figure 68). Enter the monthly stream flows and click OK.
Expression Editor (Monthly stream flow patterns)
Next, specify the equation (or function) type of relationship and enter this in the expression box of the Expression Editor as shown in Table 47 and Figure 69. After entering the expressions, configure and run the scenario. Source then evaluates the expression (or function) equation for each time step and returns a value for each time step.
Expression Editor ($MonthlyInflows expression)
Time Series tab
Create a named time series (FIGURE).
Expression Editor (Time Series tab)
Input is:
Name
All expression names must start with a $.
Edit
To load a time series, click on the edit link. Then upload the file and select the units. Start and end dates are extracted from the file and listed with the name of the time series.
Start
Loading a time-series automatically provides the start date, which cannot be edited.
End
Loading a time-series automatically provides the end date, which cannot be edited.
Units
The units for time series are selected from a drop-down menu within the "edit" window. To convert the time series to different units for use in the expression, choose the new units from the drop-down menu adjacent to the data series end date.
EXAMPLE - Application of the Time Series tab of Expression Editor using a Water User node
As an example, the Expression Editor is used in a Water User node to specify the summation of two sets of water demands along a particular river segment.
Example A Water User node is situated below two stream flow points along a stretch of river in which the water demands for two water users are known. You can incorporate the two water demands into a single Water User node by adding the respective values for each corresponding time steps.
Use Case A Water User node is drawn schematically to represent the combined water demands of two water users along a particular river network. In the Water User node Expression Editor, specify the water demands of the two water users using the Time Series tab of the Expression Editor and determine the combined flow using an equation (or function) type of relationship in the expression box.
Select Time Series Demand from the list of available models and select Expression Editor as the source of data to be loaded (FIGURE) Then click on the ellipse button to open the Expression Editor interface.
Expression Editor (Water User node)
From the Time Series tab of the Inflow node’s Expression Editor, specify the Variable Name of the time series (remember that variable names are preceded by a $ sign) and then clicks "Edit" to import the time series from the file location.
Table 48 and FIGURE display the variable names for two different daily water demands. The start and end periods will automatically fill in when the files are imported and correspond to the start and end period of the time series. The units will correspond to the units of the time series and no units are specified prior to importing the files.
Expression Editor (Time Series, example)
To check the equation (or function), click Parse. The Parse Results window opens (FIGURE). Manually enter test values and click Parse. For example, use a value of 2 for both $DailyDemand1 and $DailyDemand2. The correct result is 4, which will appear in the Result field.
Global Expressions tab
The Global Expressions tab is a special case. When editing a global expression, a second copy of Expression Editor is opened. The second Expression Editor window is usually placed directly on top of the first window and this behaviour can sometimes be confusing (eg clicking OK closes the second window but the first window is still present and is usually not greatly different in appearance). For this reason, we recommend moving the second window slightly whenever you edit a global expression.
Create named expressions that are visible from all instances of the Expression Editor (Figure 73).
Input is:
Name
All expression names must start with a $.
Expression
Enter the global expression using the Expression Editor.
EXAMPLE - Application of the Global tab of the Expression Editor using a Minimum Flow Constraint node
As an example, the Expression Editor is used with a Minimum Flow constraint node to determine the value of the minimum flow for each time step based on a given set of flow requirements.
Example: There are two storages in series on a river segment. A Minimum Flow Requirement node is used to generate orders from the upstream storage so that the downstream storage can meet the orders from further down the valley. It is assumed that the average order from the previous week (last 7 days set) is a good approximation of the water that will be ordered from the lower dam when the water from the upstream storage arrives. In addition there is a flow constraint between the two storages that limits the flow in the channel to a maximum of 4000 ML/day.
Use Case: The Minimum Flow Requirement node sits on the river channel between two storages (Figure 72). The upstream dam is selected as the storage that orders generated by the minimum flow node will be sent to. In the minimum flow requirement Expression Editor, specify an internal model data set (orders) in the Variables tab of the Expression Editor and then calculate the preliminary minimum flow requirements using the Global tab of the Expression Editor. Finally enter an equation (or function) type of relationship into the expression box of the Expression Editor. When the model is configured and run, the model calculates the equation (or function) in the expression box of the Expression Editor.
Minimum Flow Constraint node (example)
From the Variables tab of the Minimum Flow Requirement node’s Expression Editor, specify the Variable Name (preceded by a $ sign) for developing an expression equation (or function) similar to Microsoft Excel syntax to determine the time periods in which flows meet the criteria of the example. Next, select the Global tab of the Expression Editor to calculate the preliminary minimum flow requirement by entering a Variable name preceded by the $ sign (for example, $MinimumFlow) and then the expression (or function) type relationship (for example, average($OrderWeek) ) (Table 51 and Figure 73).
Next, specify the final expression (or function) to set the minimum flow requirement after consideration of the flow constraint of 4000 ML per day and enter this in the expression box of the Expression Editor (Figure 73).
Expression Editor (Global Expressions tab)
Expression Editor (Custom Functions tab)
Expression Editor (Time of Evaluation tab)
Next, define the expression average($OrderWeek). Click on the ellipse button to the right of the expression average($OrderWeek) (Figure 73). Notice the words "Expression Editor ($MinimumFlow)" at the top of the schematic in Figure 76. This denotes the expression associated with the variable $MinimumFlow that had been previously defined in the Global tab of the Expression Editor. It is important to remember the difference between this and the Expression Editor shown in Figure 73.
Enter the arithmetic expression in the Expression Editor box as shown in Figure 76. After entering the expressions, the configure and run the model scenario. The model then evaluates the expression equation for each time step and returns a value for each time step.
Expression Editor (Variables, $OrderWeek)
Custom Functions tab
This functionality is yet to be documented. If you would like assistance, please call 1300-5-WATER (1300-592-837).
Time of Evaluation tab
Expressions are evaluated at the start of each time step. Providing a choice of:
- start of the ordering phase;
- end of the ordering phase;
- start of the flow distribution phase; or
- end of the flow distribution phase.
Time of Evaluation
Expression Editor (evaluation order)
Order of precedence | Operator symbol | Meaning |
---|---|---|
1 (highest) | ( ) | explicit ordering |
2 | - | negation |
3 | ** and ^ | exponentiation |
4 | * and / | multiplication and division |
5 | + and - | addition and subtraction |
6 (lowest) | < <= = >= > <> | comparison operators |
Sample expressions using functions
Expression | Result | Expression | Result | Expression | Result |
---|---|---|---|---|---|
Average($var1) | 3 | Median($var1) | 3 | Lookup($var1,13.5) | 2.5 |
Lookup($var1,14) | 3 | Count($var1) | 5 | Max($var1) | 5 |
Min($var1) | 1 | Sum($var1) | 15 | Stdev($var1) | 1.58113883 |
Where: $var1 is the piecewise linear relationship {(12, 1), (13, 2), (14, 3), (15, 4), (16, 5)}
Expression Editor (variables, expression inputs)
Variable Name | Source | Part | Units | Data Range |
---|---|---|---|---|
$Orders | Storage 2 | Requested Flow Rate | ML/day | Last time step |
$predictedinflow | Inflow 3 | Inflow (played input value) | ML/day | Last time step |
Expression Editor (custom calendars, value sets)
Option | Summary | Result |
---|---|---|
Simple Set | Returns the set of observations without modification | [1,2,3,4,5] |
Set of Averages | Returns a set of the same size where each member is the average of all of the members of the set | [3,3,3,3,3] |
Set of Progressive Averages | Returns a set of the same size where each member is the original value of that member averaged with the value of the first member. | [1,1.5,2,2.5,3] |
Where: input is the series [1,2,3,4,5]
Example expression
Expression | Result Units |
---|---|
If(($predictedinflow+$orders)>2000,3000,80 | ML/day |
Expression Editor (arithmetic operators)
Operator | Meaning | Example | Result |
---|---|---|---|
+ | addition | 10 + 5 | 15 |
- | subtraction; negation | 10 - 5 = 5 or 10 + (-5) | 5 |
* | multiplication | 10 * 5 | 50 |
/ | division | 10 / 5 | 2 |
** or ^ | power/exponentiation | 10**5 or 10^5 | 100000 |
( ) | influence order of evaluation | 5 * (10 + 5) | 75 |
Expression Editor (comparison operators)
Operator | Meaning | Example | Result |
---|---|---|---|
> | greater than | 10 > 5 | true |
< | less than | 10 < 5 | false |
>= | greater than or equal | 10 >= 5 | true |
<= | less than or equal | 10 <= 5 | false |
= | equal | 10 = 5 | false |
<> | not equal | 10 <> 5 | true |
Expression Editor (logical operators)
Operator | Meaning | Example | Result |
---|---|---|---|
OR | or | false OR true | true |
AND | and | false AND true | false |
NOT | not | NOT false | true |
Expression Editor (general mathematical functions)
Function | Meaning | Example use |
---|---|---|
EXP | Returns e raised to the power of a given number | EXP(number) |
LOG10 | Returns the base-10 logarithm of a number | LOG10(number) |
LN | Returns the natural logarithm of a number | LN(number) |
ABS | Returns the absolute value of a number | ABS(number) |
SQRT | Returns a positive square root | SQRT(number) |
MOD | Returns the remainder from division | MOD(number,divisor) |
ROUND | Rounds a number to the nearest integer | ROUND(number) |
INT | Rounds the number down to the nearest integer | INT(number) |
Expression Editor (statistical functions)
Function | Meaning | Example use |
---|---|---|
AVERAGE | Returns the average of its arguments | AVERAGE(variable_name) |
COUNT | Counts how many numbers are in the list of arguments | COUNT(variable_name) |
COUNTIF | Counts how many numbers in the list of arguments satisfy the expression | COUNTIF(variable_name,expression) |
MAX | Returns the maximum value in a list of arguments | MAX(variable_name) or MAX(number,number) |
MEDIAN | Returns the median of its arguments | MEDIAN(variable_name) |
MIN | Returns the minimum value in a list of arguments | MIN(variable_name) or MIN(number,number) |
STDEV | Estimates standard deviation based on a sample | STDEV(variable_name) |
SUM | Adds its arguments | SUM(variable_name) |
Expression Editor (trigonometric functions)
Function | Meaning | Example use |
---|---|---|
ARCCOS | Returns the inverse cosine of a number | ARCCOS(number) |
ARCSIN | Returns the inverse sine of a number | ARCSIN(number) |
ARCTAN | Returns the inverse tangent of a number | ARCTAN(number) |
COS | Returns the cosine of a number | COS(number) |
SIN | Returns the sine of a number | SIN(number) |
TAN | Returns the tangent of a number | TAN(number) |
Expression Editor (miscellaneous functions)
Function | Meaning | Example use |
---|---|---|
IF | Specifies a logical test to perform | IF(logical_test,value_if_true,value_if_false) |
LOOKUP | Looks up the Y-value corresponding to an X-value via a piecewise linear editor (uses linear interpolation) | LOOKUP(variable_name, number) |
N1 | Returns 1 if the number is less than zero, 0 otherwise | N1(number) |
P1 | Returns 1 if the number is greater than zero, 0 otherwise | P1(number) |
PI | Returns the mathematical constant Ï to 14 decimal places | PI() |
Expression Editor (predefined variables)
Function | Meaning |
---|---|
$now.year | Returns the 4-digit year of the current time-step |
$now.month | Returns the month of the current time-step (range: 1...12) |
$now.day | Returns the day of the current time-step (range: 1...31) |
$now.hour | Returns the hour of the current time-step (range 0...23) |
Expression Editor (date range instances)
Date Range | Meaning |
---|---|
Current Time Step | The most-recently-updated value. |
Current Iteration | Only applicable to NetLP. The value updated during the last iteration of the solver. |
Current Day | For a daily model, this is a synonym for Current Time Step. For a sub-daily model, it is the sum of the values for the current day. |
This Month | For a monthly model, this is a synonym for Current Time Step. For a sub-monthly model, it is the sum of the values for the current month. |
This Calendar Year | For a yearly model, this is a synonym for Current Time Step. For a sub-yearly model, it is the sum of the values for the current calendar year. |
This Water Year To Date | For a yearly model, this is a synonym for Current Time Step. For a sub-yearly model, it is the sum of the values for the current water year. |
Last Time Step | The value of the variable at the completion of the previous iteration of the model. |
Previous Day | For a daily model, this is a synonym for Last Time Step. For a sub-daily model, it is the sum of the values for the previous day. |
Last Month | For a monthly model, this is a synonym for Last Time Step. For a sub-monthly model, it is the sum of the values for the previous month. |
Last Calendar Year | For a yearly model, this is a synonym for Last Time Step. For a sub-yearly model, it is the sum of the values for the previous calendar year. |
Last Water Year | For a yearly model, this is a synonym for Last Time Step. For a sub-yearly model, it is the sum of the values for the previous water year. |
Expression Editor (date range sets)
Date Range | Meaning | Example of use |
---|---|---|
Last Hundred Time Steps | The set of values from the model for the previous 100 iterations. | Lookup($var,35) |
Last Seven Days | For a daily or monthly model, this is the set of the values from the last seven time steps. For a sub-daily model, it is the set of the average daily values for each of the previous seven days. | Average($var) |
Previous 30 Days | For a daily or monthly model, this is the set of the values from the last 30 time steps. For a sub-daily model, it is the set of the average daily values for each of the previous 30 days. | Average($var) |
Last 365 Days | For a daily or monthly model, this is the set of the values from the last 365 time steps. For a sub-daily model, it is the set of the average daily values for each of the previous 365 days. | Average($var) |
Patterns tab (expression inputs)
Name | Units | Type | Edit |
---|---|---|---|
$MonthlyInflows | ML/day | Monthly | Edit |
Patterns tab (result units)
Expression Editor Equation | Result Units |
---|---|
$MonthlyInflows | ML/day |
Time Series tab (expression inputs)
Variable Name | Edit | Start | End | Units |
---|---|---|---|---|
$DailyDemands1 | Edit | Model will auto fill | Model will auto fill | No units selected |
$DailyDemands2 | Edit | Model will auto fill | Model will auto fill | No units selected |
Time Series tab (result units)
Expression Editor Equation | Result Units |
---|---|
$DailyDemands1 + $DailyDemands2 | ML/day |
Variable Name | Source | Part | Units | Data Range |
---|---|---|---|---|
$OrderWeek | Storage 2 | Requested Flow Rate | ML/day | Last 7 days (set) |
Global expressions (expression inputs)
Name | Expression |
---|---|
$Minimum Flow | average($OrderWeek) |
Global expressions (example expression)Expression Box Equation using the Expression Editor | Result Units |
---|---|
If(($MinimumFlow>4000,4000,if($MinimumFlow<0,0,$MinimumFlow)) | ML/day |
Expression Editor file format (monthly pattern, .CSV)
Row | Column (comma-separated) | |
---|---|---|
1 | 2 | |
1 | Monthly | Monthly Amount (units) |
2..13 | month | value |
Where: units are the units specified in Expression Editor (eg "ML/day")
month is the full name of the month in order from "January" to "December"
value is the observation to apply for the corresponding month
Expression Editor file format (weekly pattern, .CSV)
Row | Column (comma-separated) | |
---|---|---|
1 | 2 | |
1 | Weekly | Weekly Amount (units) |
2..54 | week | value |
Where: units are the units specified in Expression Editor (eg "ML/day")
week is the week ordinal from 1 through 53
value is the observation to apply for the corresponding week
Expression Editor file format (daily pattern, .CSV)
Row | Column (comma-separated) | |
---|---|---|
1 | 2 | |
1 | Daily | Daily Amount (units) |
2..367 | dd-mmm | value |
Where: units are the units specified in Expression Editor (eg "ML/day")
dd is the day of the month (1...the number of days in the month, assuming 29 for February)
mm is the 3-character abbreviated month name (eg "Jan")
value is the observation to apply for the corresponding day
Expression Editor file format (6-hourly pattern, .CSV)
Row | Column (comma-separated) | |
---|---|---|
1 | 2 | |
1 | Six hourly | Six hourly Amount (units) |
2..1465 | ddd - hh:00 | value |
Where: units are the units specified in Expression Editor (eg "ML/day")
ddd is the Julian day of the year (1...366)
hh is a two digit hour, either "00", "06", "12" or "18"
value is the observation to apply for the corresponding six-hour period
Expression Editor file format (hourly pattern, .CSV)
Row | Column (comma-separated) | |
---|---|---|
1 | 2 | |
1 | Hourly | Hourly Amount (units) |
2..25 | hh:00 | value |
Where: units are the units specified in Expression Editor (eg "ML/day")
hh is a one- or two-digit hour from "0" ... "23"
value is the observation to apply for the corresponding hour