What | ModifierTypes.xml |
---|---|
Required | no |
Description | Definition of modifiers in an IFD environment |
schema location |
Contents
Introduction
The chapter describes the configuration options of the modifiers.xml.
The modifiers.xml is used to define which modifier types are available within a Delft-FEWS configuration. The modifiers can be
created in the modifiers panel. TimeValue-modifiers can also be created in the plot display by graphically
editing a time series or by changing values in the table.
Concept
Modifiers play an important role in the concept of interactive forecasting. By using modifiers a forecaster can manually change time series, module parameters or location attributes.
After creating one or more modifiers the forecaster can run a workflow locally in IFD mode to verify the effect of the modifiers.
When a modifier is created it is initially only visible for the user who created the modifier. In this case the modifier is always colored red.
At an OC the modifier is made final when a workflow in which the modifier is used is scheduled to run at the server. At an SA the modifier is made final when a regular workflow is started in which the modifier is used. When a modifier is made final the modifier will be colored green.
A modifier which is outside of the forecast period is colored grey. The forecast period is defined by the start of the selected state in the IFD and the selected forecast length.
Within Delft-FEWS there are 3 types of modifiers:
- location attribute modifiers,
- module parameter modifiers,
- time series modifiers.
The modifierTypes.xml can be used to define which modifier types are available in a FEWS system. It is for example possible to define that all time series which have parameter id X can be modified by using modifier A. If a topology node is selected in the forecast tree the module config quick scanner will determine which time series, locations and module parameter files are used in the workflow of the topology node. The time series which are used in the workflow and which have a parameter X can be modified in the modifiers panel by using modifier A.
Below an overview of all the modifiers in FEWS.
Modifier | Type | Description |
---|---|---|
missing value modifier | time series modifier | Set the values of a time series to missing over a certain period of time |
time series modifier | time series modifier | This modifier can be used to modify the values of a time series by defining new time value pairs. It is also possible to define an operation like add 2 or divided by 3 for a certain period. It is also possible to set all the values to missing for a certain period (comparable to the missing value modifier) |
constant value modifier | time series modifier | Set the values of a time series to a fixed value over a certain period of time |
enumeration modifier | time series modifier | The user can select an option from a pre-defined list of options. For each option a value will be defined which will stored in the time series. This modifier is usually applied to an empty time series. |
single value modifier | time series modifier | This modifier can be used to apply a certain value at a certain time to a time series. |
mark unreliable modifier | time series modifier | This modifier can used to set the values of a modifier to unreliable over a certain period of time. |
blending steps modifier | transformation/module parameter module | This modifier can be used to adjust the amount of "blending steps" which will be used in the adjustQ transformation. |
disable adjustment modifier | transformation/module parameter module | With this modifier it is possible to disable the adjustQ transformation |
time shift constant modifier | transformation/module parameter module | With this modifier it is possible to modify the amount of time steps which will be used in the timeShiftConstant transformation |
reverse order modifier | transformation/module parameter module | With this modifier it is possible to reverse the order of the time series in the mergeSimple transformation |
compound modifier | time series modifier | This modifier can be used to define a value at a single date/time for 1 or more time series by using sliders. |
high low surge selection modifier | time series modifier | |
switch option modifier | time series modifier | Modifier which can used to set a value for each time step for a set of time series. It is only possible to define a value for a one of the time series in the entire set. |
option modifier | time series modifier | This modifier can be used to set a single value at a single time for a set of time series. It is only possible to define a value for a one of the time series in the entire set. |
module parameter modifier | module parameter modifier | Generic module parameter modifier panel which can used for all modifiers. |
priority modifier | time series modifier | |
multiple model module parameter modifier | module parameter modifier | The module parameter modifier can be used to modify multiple model parameters in a single modifier. |
unit hydrograph modifier | module parameter modifier | The unit hydrograph modifier can be used to modify the area elevation curve of the unit hydrograph model. |
merge weighted modifier | transformation/module parameter modifier | This modifier can be used to modify the parameters of the mergeWeighted function. |
table rating curve modifier | time series modifier | |
shift multiply rating curve modifier | time series modifier | The rating curve can be modified by shifting the entire curve or by multiplying the entire curve with a defined factor. |
location attribute modifier | location attribute modifier | A modifier for modifying location attributes. |
Location attribute modifiers
Location attribute modifiers are used to change the value of a location attribute. When a modifier is applied to a location attribute the original value of the attribute will not change.
When the value of location attribute is retrieved from the data store, the original value will be retrieved first. After that FEWS will apply the available modifiers to the location attribute.
The available and active modifiers will applied from old to new. This means that only the newest active location attribute modifier which changes a certain attribute will be effective.
Module parameter modifiers
Module parameter modifiers are used to modify module parameter files.
It is possible to create multiple module parameter modifiers for a single module parameter file.
Module parameter modifiers can be applied in two ways:
- by overwriting the original values in the module parameter files,
- by adding an additional group to the module parameter file which contains the modified parameters.
The advantage of the first option is that the model adapter doesn't have to be changed to use module parameters.
The model receives a single set of module parameters in which the modifiers are already applied. In the second case the model parameter files contains the original values plus
one or more groups with the modified values. The model adapter has to create the modified set of module parameter values from this file.
The original set of module parameter values are always in the first group. This group always has the attribute modified set to false.
The additional groups contain the modified values and always have the attribute modified set to true;
Below an example of a modified module parameter file.
<?xml version="1.0" encoding="UTF-8"?> <parameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.wldelft.nl/fews/PI" xsi:schemaLocation="http://www.wldelft.nl/fews/PI http://fews.wldelft.nl/schemas/version1.0/pi-schemas/pi_modelparameters.xsd" version="1.5"> <group id="default" readonly="false" modified="false"> <parameter id="UHG_DURATION" name="UHG_DURATION"> <intValue>6</intValue> </parameter> <parameter id="UNIT" name="UNIT"> <stringValue>ENGLISH</stringValue> </parameter> <parameter id="UHG_INTERVAL" name="UHG_INTERVAL"> <intValue>6</intValue> </parameter> <parameter id="DRAINAGE_AREA" name="DRAINAGE_AREA"> <dblValue>3103.0</dblValue> </parameter> <parameter id="CONSTANT_BASE_FLOW" name="CONSTANT_BASE_FLOW"> <dblValue>111.0</dblValue> </parameter> <parameter id="UHG_ORDINATES" name="UHG_ORDINATES"> <table> <columnTypes A="double"/> <row A="7499.0"/> <row A="16872.0"/> <row A="29370.0"/> <row A="39993.0"/> <row A="48116.0"/> <row A="43742.0"/> <row A="38118.0"/> <row A="31869.0"/> <row A="24995.0"/> <row A="18747.0"/> <row A="13123.0"/> <row A="8123.0"/> <row A="5436.0"/> <row A="3874.0"/> <row A="2625.0"/> <row A="1687.0"/> <row A="1000.0"/> <row A="500.0"/> <row A="250.0"/> <row A="62.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> </table> </parameter> </group> <group id="default" readonly="false" modified="true"> <validPeriod> <timeZone>0.0</timeZone> <startDate date="2012-09-09" time="12:00:00"/> <endDate date="2012-09-27" time="12:00:00"/> </validPeriod> <parameter id="UHG_DURATION" name="UHG_DURATION"> <intValue>6</intValue> </parameter> <parameter id="UNIT" name="UNIT"> <stringValue>ENGLISH</stringValue> </parameter> <parameter id="UHG_INTERVAL" name="UHG_INTERVAL"> <intValue>6</intValue> </parameter> <parameter id="DRAINAGE_AREA" name="DRAINAGE_AREA"> <dblValue>3103.0</dblValue> </parameter> <parameter id="CONSTANT_BASE_FLOW" name="CONSTANT_BASE_FLOW"> <dblValue>0.0</dblValue> </parameter> <parameter id="UHG_ORDINATES" name="UHG_ORDINATES"> <table> <columnTypes A="double"/> <row A="8666.18"/> <row A="19498.05"/> <row A="33941.3"/> <row A="46217.72"/> <row A="24331.23"/> <row A="50550.24"/> <row A="23027.725"/> <row A="36829.26"/> <row A="28885.35"/> <row A="21664.88"/> <row A="15165.53"/> <row A="9387.31"/> <row A="6282.09"/> <row A="4476.97"/> <row A="3033.57"/> <row A="1949.57"/> <row A="1155.65"/> <row A="577.82"/> <row A="288.91"/> <row A="71.65"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> <row A="0.0"/> </table> </parameter> </group> </parameters>
Time series modifiers
Time series modifiers modify time series. It is possible to apply more than 1 modifier to a single time series.
A single time series modifier can be applied to multiple time series. The original time series will always be left unchanged in the database.
When a time series is retrieved from the database first the original time series will be retrieved.
After retrieving the time series from the database the modifiers will be applied to the time series. The modifiers will be applied from old to new.
Rating curves can also be modified in FEWS. Since rating curves are considered to be a form of time series, rating curve modifiers are a special type of time series modifiers.
Time series modifiers can be created by using the modifiers panel or by modifying a time series directly in the time series plot or time series table.
Config options which apply to all modifiers
The following config options apply to all modifier types.
restoreModifiersWhenApprovingForecastRun
In the forecast manager it is possible to approve a forecast. If this option is enabled the modifiers which were applied in this run will restored.
rollbackOverlappingModifiers
If an OC detects that another user committed new modifiers which overlap with local non-finalized modifiers then these local modifiers will be rolled back.
autoCommit
By default, local modifiers are committed when the user starts a server run in which these modifiers are used. When this option is enabled the modifiers will be committed directly after the moment they are changed.
Location attribute modifiers
Currently there is only one type of modifier, the locationAttributeModifier, available to modify location attributes.
This type has however a lot of configuration options so it can be used in a lot of different ways.
Location Attribute Modifier
This type is the only type available to modify location attributes. The section will explain the available configuration options in detail.
Basic examples
Although this modifier type offers a lot of configuration options, it is possible to configure a basic location attribute modifier without much effort.
Below an example.
<locationAttributeModifier id="example" name="example"> <modifiableGroup name="exampleGroupA"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute> <attribute id="wQO_Avg_Min_Day_RT"> <comment>Original value: @wQO_Avg_Min_Day_RT@</comment> </attribute> </modifiableGroup> </locationAttributeModifier>
The basic example above configures a modifier which can be used to modify two attributes of all the locations in locationSet MODIFIABLE_PROJECTS_QO_Avg_Min.
Below a screenshot of this modifier in the modifiers panel.
The modifier shows the original and the modified values by default. To hide the original values you can use the option <showOriginalValues>
<locationAttributeModifier id="example" name="example"> <modifiableGroup name="exampleGroupA"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute> <attribute id="wQO_Avg_Min_Day_RT"> <comment>Original value: @wQO_Avg_Min_Day_RT@</comment> </attribute> <tabularLayout> <showOriginalValues>false</showOriginalValues> </tabularLayout> </modifiableGroup> </locationAttributeModifier>
When this option is set to false, the original values will be hidden in the panel.
In the example above the attributes are located in the rows of the table and the locations are positioned in the columns of the table. To switch the locations to the rows and the attributes to the columns the option <locationOrientation> can be used.
Below an example.
<locationAttributeModifier id="example" name="example"> <modifiableGroup name="exampleGroupA"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute> <attribute id="wQO_Avg_Min_Day_RT"> <comment>Original value: @wQO_Avg_Min_Day_RT@</comment> </attribute> <tabularLayout> <showOriginalValues>false</showOriginalValues> <locationOrientation>row</locationOrientation> </tabularLayout> </modifiableGroup> </locationAttributeModifier>
Below a screenshot of the display.
In the examples above only one modifiableGroup was defined. It is also possible to define a location attribute modifier with multiple modifiableGroups.
Below a config example.
<locationAttributeModifier id="example" name="example"> <modifiableGroup name="exampleGroupA"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute> <attribute id="wQO_Avg_Min_Day_RT"> <comment>Original value: @wQO_Avg_Min_Day_RT@</comment> </attribute> <attribute id="QO_Avg_Min_Week_constraintType_RT"> <selection> <predefined> <option>hard</option> <option>soft</option> </predefined> </selection> <comment>Original value: @QO_Avg_Min_Week_constraintType_RT@</comment> </attribute> <tabularLayout> <showOriginalValues>false</showOriginalValues> <locationOrientation>row</locationOrientation> </tabularLayout> </modifiableGroup> <modifiableGroup name="exampleGroupB"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Min_Week_RT"/> </modifiableGroup> </locationAttributeModifier>
Because there are two modifiable groups defined in the config, the display will show two tabs instead of only one.
Attribute config options
The following config options are available for the <attribute> element:
- read only,
- visible,
- timeSeriesValueClosestToStateSelectionStartTime,
- selection,
- conditional selection,
- comment.
Read only
This option will make attribute read-only in the display
Visible
It is possible to configure an export-button in the location attribute panel. In some cases it is necessary to export a complete set of location attributes which includes attributes which should not be editable or visible in the location attribute modifiers panel. For this special case it is possible to define location attributes which are invisible. These attributes will be exported to file but will not be editable in the location attribute modifiers panel.
TimeSeriesValueClosestTostateSelectionStartTime
This option can be used to define a set time series from which the value of the attribute should be derived.
The value will be determined in the following way:
- Select the time series from the defined set which has the same location as the location from the location attribute,
- Select the value at the selected state time from the IFD. If a state selection period is defined the start of the period will be used to select a value.
Below a config example.
<attribute id="URBS_IL_AWRA"> <timeSeriesValueClosestToStateSelectionStartTime> <timeSeriesSet> <moduleInstanceId>AWRAGrid_To_SubCatchments</moduleInstanceId> <valueType>scalar</valueType> <parameterId>AWRA.IL</parameterId> <locationSetId>AUS_URBS_subcatchments</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day"/> <relativeViewPeriod unit="day" start="-14" end="0"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesValueClosestToStateSelectionStartTime> <comment>No advice</comment> </attribute>
Selection
The element <selection> can be used to predefine the list of options which are available for a certain attribute.
The predefined list op options can be defined by:
- a list of location id's,
- a location set,
- a hard-coded predefined list of options,
- a multi-value attribute which contains all the options which are available.
Below an example of a hard-coded list of options.
<attributeModifiers> <locationAttributeModifier id="example" name="example"> <modifiableGroup name="exampleGroupA"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute> <attribute id="wQO_Avg_Min_Day_RT"> <comment>Original value: @wQO_Avg_Min_Day_RT@</comment> </attribute> <attribute id="QO_Avg_Min_Week_constraintType_RT"> <selection> <predefined> <option>hard</option> <option>soft</option> </predefined> </selection> <comment>Original value: @QO_Avg_Min_Week_constraintType_RT@</comment> </attribute> <tabularLayout> <showOriginalValues>false</showOriginalValues> <locationOrientation>row</locationOrientation> </tabularLayout> </modifiableGroup> <modifiableGroup name="exampleGroupB"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Min_Week_RT"/> </modifiableGroup> </locationAttributeModifier>
The display will look like the example below.
Conditional selection
The conditional selection can be used to disable other attributes depending on which option is selected for an attribute.
For example if option A is selected for a certain attribute X then attribute Y should be disabled and attribute Z should be enabled. If option B is selected then attribute Z should be disabled and attribute Y should be enabled.
Below an example.
<locationAttributeModifier id="example" name="example"> <modifiableGroup name="exampleGroupA"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute> <attribute id="wQO_Avg_Min_Day_RT"> <comment>Original value: @wQO_Avg_Min_Day_RT@</comment> </attribute> <attribute id="QO_Avg_Min_Week_constraintType_RT"> <conditionalSelection> <option value="hard"> <disabledAttributeId>wQO_Avg_Req_Day_RT</disabledAttributeId> </option> <option value="soft"> <disabledAttributeId>wQO_Avg_Min_Day_RT</disabledAttributeId> </option> </conditionalSelection> <comment>Original value: @QO_Avg_Min_Week_constraintType_RT@</comment> </attribute> <tabularLayout> <showOriginalValues>false</showOriginalValues> <locationOrientation>row</locationOrientation> </tabularLayout> </modifiableGroup> </locationAttributeModifier>
If the option hard is selected, the attribute wQO_Avg_Req_Day_RT should be disabled. If the second option is selected the attribute wQO_Avg_Min_Day_RT should be disabled.
Below an example of the display
Comment
The bottom line of the display shows the comment for each attribute.
The comment can be defined by using this element. It is possible to use location attribute in the comment. The unmodified value of the defined attribute will be used in the comment.
Below an example.
<attribute id="QO_Avg_Min_Week_constraintType_RT"> <conditionalSelection> <option value="hard"> <disabledAttributeId>wQO_Avg_Req_Day_RT</disabledAttributeId> </option> <option value="soft"> <disabledAttributeId>wQO_Avg_Min_Day_RT</disabledAttributeId> </option> </conditionalSelection> <comment>Original value: @QO_Avg_Min_Week_constraintType_RT@</comment> </attribute>
Define which locations are modifiable
To define from which locations the attributes can be modified there are 3 options available:
- locationSetId,
- locationId,
- timeSeries
When the first two options are used the set of modifiable locations is determined in the following way;
After selecting a topology node the module config quick scanner will determine which locations are available in the workflow of the selected node.
The intersection of the locations which are found for the selected node and the configured locations (by either a location set or a list of locations) is the set of modifiable locations for the selected node.
The option timeSeries can be used to define a filter. First all the time series which are used in the topology workflow are determined. Then the found time series are filtered by using the defined filter the locations of the resulting time series are the modifiable locations for a toplogy node.
Below a configuration example of the option <timeSeries>.
<modifiableGroup name="exampleGroupA"> <timeSeries> <parameterId>QO</parameterId> </timeSeries> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute>
Export file
If this option is configured an additional button "export" will be shown in the modifiers display.
Below an example.
<locationAttributeModifier id="example" name="example"> <exportFile> <fileName>example</fileName> <exportAllAttributes>true</exportAllAttributes> <dataFormat>csv</dataFormat> </exportFile> <modifiableGroup name="exampleGroupA"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute> <attribute id="wQO_Avg_Min_Day_RT"> <comment>Original value: @wQO_Avg_Min_Day_RT@</comment> </attribute> <tabularLayout> <showOriginalValues>false</showOriginalValues> <locationOrientation>row</locationOrientation> </tabularLayout> </modifiableGroup> </locationAttributeModifier>
The element <fileName> is used to define the name of export file. The element <exportAllAttributes> can be used to define if only the visible attributes (exportAllAttributes=false) should be exported or all the attributes (exportAllAttributes=true).
Currently two dataFormats are supported for the export function csv and dbf. The dataFormat can be configured by using the element <dataFormat>
Below an example of a modifier with the element <exportFile> configured.
Summary function
The lower panel of the modifier display shows the details of the selected modifier. The upper section shows the list of modifiers for the selected topology node. Each modifier has a summary. By default Delft-FEWS will generate a summary based on the available information about the modifier. For the location attribute modifiers it is possible to configure a custom summary by using the element <summaryFunction>. In the <summaryFunction> element it is possible to include location attributes. When a summaryFunction element is added to the locationAttributeModifer, only the modifiers included in the summaryFunction will be shown. If a location attribute included in this summaryFunction is modified it will be coloured blue and bold to indicate that the value is modified. If a location attribute in the summaryFunction is not modifierd the value will be shown with original black font colour.
An example iof the summaryFunction s shown below.
<locationAttributeModifier id="example" name="example"> <exportFile> <fileName>example</fileName> <exportAllAttributes>true</exportAllAttributes> <dataFormat>csv</dataFormat> </exportFile> <modifiableGroup name="exampleGroupA"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute> <attribute id="wQO_Avg_Min_Day_RT"> <comment>Original value: @wQO_Avg_Min_Day_RT@</comment> </attribute> <tabularLayout> <showOriginalValues>false</showOriginalValues> <locationOrientation>row</locationOrientation> </tabularLayout> <summaryFunction>My summary= @wQO_Avg_Req_Day_RT@</summaryFunction> </modifiableGroup> </locationAttributeModifier>
Below an example of the modifiers display.
Layout
To define the layout of the modifier it is possible to use the options:
- tabularLayout
- panelLayout
The option tabularLayout is used in the majority of the examples above, this option can be used to display the modifiable groups in a tab panel. Each modifiable group will have its own tab.
The panel layout can be used to show the modifiable groups in a single panel.
A config example is shown below.
<locationAttributeModifier id="example" name="example"> <modifiableGroup name="exampleGroupA"> <locationSetId>MODIFIABLE_PROJECTS_QO_Avg_Min</locationSetId> <attribute id="wQO_Avg_Req_Day_RT"> <comment>Original value: @wQO_Avg_Req_Day_RT@</comment> </attribute> <attribute id="wQO_Avg_Min_Day_RT"> <comment>Original value: @wQO_Avg_Min_Day_RT@</comment> </attribute> <panelLayout> <tableLayout id="panelIdA"> <title>layoutA</title> <defaultColumnWidth>150</defaultColumnWidth> <attributeId width="200">wQO_Avg_Req_Day_RT</attributeId> <locationOrientation>row</locationOrientation> </tableLayout> <tableLayout id="panelIdB"> <title>layoutB</title> <defaultColumnWidth>300</defaultColumnWidth> <attributeId width="400">wQO_Avg_Min_Day_RT</attributeId> <locationOrientation>row</locationOrientation> </tableLayout> </panelLayout> <summaryFunction>My summary= @wQO_Avg_Req_Day_RT@</summaryFunction> </modifiableGroup> <template id="panelIdA" name="A"> <panel> <panelId>panelIdA</panelId> <position column="1" row="1"/> </panel> <panel> <panelId>panelIdB</panelId> <position column="2" row="1"/> </panel> </template> </locationAttributeModifier>
The panel layout section defines two tableLayout sections. In the template section both table layouts are positioned on the panel.
In the example the panels are placed in a grid with 1 row and 2 columns.
Below an example of the display.
The template section should always be used in combination with the panelLayout because the template section defines how the panels of the template section should be displayed.
Module parameter modifiers
Module parameter modifiers can be used to modify module parameters. The most common usage is to modify the module parameters of a model directly but it is also possible to modify transformations with this modifier.
To modify the parameters of a transformation the transformation must have a module parameter file configured.
Module parameter modifiers
Module parameter modifiers are used to modify module parameter file which are used by a model. Currently there are two types available:
- module parameter modifier
- multiple model parameter modifier
Module parameter modifier
The module parameter modifier is a generic module parameter file editor which can be used to modify every module parameter file.
It is possible to limit the number of module parameter files which can be modified by applying a filter. It is possible to have
more than one module parameter modifier type configured in a Delft-FEWS application.
An example of the use of this modifier is the BASEFLOW-modifier available in NWS (National Weather Service) applications. This modifier modifies the BASEFLOW-parameter of the UNITHG-
model.
Below an example of a module parameter modifier.
<moduleParameterModifier id="baseflow" name="baseflow"> <filter> <moduleParameterId>CONSTANT_BASE_FLOW</moduleParameterId> </filter> <defaultValidTime/> <overwriteParameterValues>true</overwriteParameterValues> </moduleParameterModifier>
Below an example of the display of a module parameter modifier
With the element <filter> can be identified which module parameter files can be modified.
In the example above every module parameter file with the element CONSTANT_BASE_FLOW can be modified.
The filter is also used to filter which part of the module parameter file can be modified.
In the example below only the module parameters with id CONSTANT_BASE_FLOW are editable by this modifier.
Multiple model parameter modifier
This type of modifier can also be used to modify module parameter files of models. The difference with the module parameter modifier type is that this type can be used to modify multiple parameter files with a single modifier.
This type of modifier is mainly used for calibration purposes but it can also be used in an operational environment.
Below an basic example of this modifier.
<multipleModuleParameterModifier id="example" name="example"> <numberParameter id="SCF"/> </multipleModuleParameterModifier>
The configuration above declares that all module parameter files which have parameter SCF can be modified with the modifier "example".
Below an example of the display of this modifier.
The display will show all the module parameter files of the selected segment which have a parameter SCF. In this case there are two module parameter files which have parameter SCF.
It is possible to define a minimum and/or a maximum value for the applied changes to a certain parameter.
Below an example.
<multipleModuleParameterModifier id="example" name="example"> <numberParameter id="SCF"> <minimumValue>0.1</minimumValue> <maximumValue>10</maximumValue> </numberParameter> </multipleModuleParameterModifier>
If an invalid value is entered then the display will show an error.
In addition it is also possible to keep the difference of the parameter value between models the same (interModelRelation = preserve difference) or keep the ratio of the values of a parameter the same between models (interModelRelation = preserve ration).
Below an configuration example.
<multipleModuleParameterModifier id="example" name="example"> <numberParameter id="SCF"> <minimumValue>0.1</minimumValue> <maximumValue>10</maximumValue> </numberParameter> <numberParameter id="SI"> <interModelRelation>preserve difference</interModelRelation> </numberParameter> </multipleModuleParameterModifier>
If the user changes the value of the parameter SI of one of the module parameter files then the values of the SI parameter of the other module parameter will automatically be adjusted so that the difference between the values is still the same.
In the example below the difference between the two values of SI is 550.
If the user changes the value of the SI parameter of the first model to 560 then the value of the SI parameter of the second model will change to 1060 to keep the difference the same.
To keep the ratio between the parameter values the same you should set the interModelRelation to preserve ratio
It is also possible to define a relation between parameter values of the same module parameter file. It is possible to keep the difference or the ratio between two different parameter values the same.
Below an configuration example.
<multipleModuleParameterModifier id="example" name="example"> <numberParameter id="SCF"> <minimumValue>0.1</minimumValue> <maximumValue>10</maximumValue> </numberParameter> <numberParameter id="SI"> <intraModelRelation> <relatedModuleParameterId>SCF</relatedModuleParameterId> <relation>preserve difference</relation> </intraModelRelation> </numberParameter> </multipleModuleParameterModifier>
In the example above the difference between the parameter SCF and SI will be kept the same.
Module parameters which are a table can by default be changed by using the table editor.
For tables with only a single column of values it is possible to define this parameter value as a singleTableRowParameter.
Below an config example.
<singleTableRowParameter id="AREA_DEPLETION_CURVE"> <xAxisTitle>WE/A(i)</xAxisTitle> <yAxisTitle>Areal extent of snow cover (percent)</yAxisTitle> <switchAxis>true</switchAxis> <columnName>0</columnName> <columnName>0.1</columnName> <columnName>0.2</columnName> <columnName>0.3</columnName> <columnName>0.4</columnName> <columnName>0.5</columnName> <columnName>0.6</columnName> <columnName>0.7</columnName> <columnName>0.8</columnName> <columnName>0.9</columnName> <columnName>1.0</columnName> </singleTableRowParameter>
The example below shows that the AREA_DEPLETION_CURVE has a button "curve".
After selecting this button the following display will be openened.
The values can editted by changing the values in the table and by clicking in the graph.
It is also possible to edit multiple parameters by using the <userDefinedXYEditor> option.
An config example is given below.
<userDefinedXYEditor> <xAxisParameterId>percolation demand</xAxisParameterId> <xAxisTitle>lzdefr</xAxisTitle> <invertXAxis>true</invertXAxis> <yAxisTitle>percolation demand</yAxisTitle> <xAxisStart>0</xAxisStart> <xAxisEnd>1</xAxisEnd> <xAxisScaleUnit>0.1</xAxisScaleUnit> <expression>(LZFPM*LZPK + LZFSM* LZSK)*(1+ZPERC*lzdefr^REXP)</expression> </userDefinedXYEditor>
If a this option is used a button will appear at the bottom of the table, after clicking this button the following display will appear.
The values of the parameters used in the expression can be editted by changing the values in the table. By default 1 new set of values is available for edit.
By clicking the add button more lines can be added. By selecting a row in the table and pressing apply a new set of parameter values can be applied.
Change ordinates modifier
This modifier can be used to change the ordinates of the module parameter file of the unit Hydrograph-model.
The ordinates can be changed in the table or in the graph. When the user presses the apply button the ordinates are adjusted by using a volume-correction.
The volume correction will ensure that the volume without the modifier applied is the same as the volume of unit hydrograph after the modifier is applied.
Display
Below an example of the display of this modifier.
configuration example
<unitHydrographModifiers> <changeOrdinatesModifier id="unithg" name="unithg"> <defaultStartTime>start run</defaultStartTime> <defaultEndTime>end run</defaultEndTime> <defaultValidTime/> <overwriteParameterValues>false</overwriteParameterValues> </changeOrdinatesModifier> </unitHydrographModifiers>
defaultStartTime
The default start time of the modifier. The available options are startrun and time zero. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
defaultEndTime
The default end time of the modifier. The available options are time zero and end run. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
offsetDefaultEndTime
The offset of the end time compared to the option defined in defaultEndTime. For example when the default end time of the modifier is set to end run and an offset of 100 days is defined than the default end time of the modifier
will be set to end run plus 100 days. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
defaultValidTime
If this option is configured than a valid time can be chosen for this modifier. The valid time always default to time zero.
Transformation module parameter modifiers
Reverse order modifiers
This modifier can be used to reverse the data hierarchy of the merge simple transformation.
When this modifier is active on the transformation the data hierachy is reversed.
An example of the use of this modifier is the switchts-modifier of the NWS. With this modifier the forecasters temporarily favor one timeseries above the other because the timeseries which normally is used as the primary timeseries is considered to be less reliable.
Display
Below an example of the display of a reverse order modifier. The display is empty. The forecaster can only set a start- and end time of the modifier.
If configured it is also to enter a valid time for this modifier.
Configuration example
<mergeSimpleModifiers> <reverseOrderModifiers id="switchts" name="SWITCHTS"> <defaultStartTime>start run</defaultStartTime> <defaultEndTime>time zero</defaultEndTime> </reverseOrderModifiers> </mergeSimpleModifiers>
defaultStartTime
The default start time of the modifier. The available options are startrun and time zero. It corresponds to the same field in the modifier display.
defaultEndTime
The default end time of the modifier. The available options are time zero and end run. It corresponds to the same fields in the modifier display.
defaultValidTime
If this option is configured than a valid time can be choosen for this modifier. The valid time always default to time zero. It corresponds to the same fields in the modifier display.
Blending steps modifier
The blending steps modifier is a modifier which can only be used in combination with the transformation <adjust><adjustQ>.
The adjustQ-transformation should also have a moduleparameterfile configured.
Below an example.
<transformation id="BRGN6NVR"> <adjust> <adjustQUsingObservedInstantaneousDischarge> <observedDischarge> <variableId>BRGN6_QIN_6</variableId> </observedDischarge> <simulatedInstantaneousDischarge> <variableId>BRGN6TOT_SQIN_6</variableId> </simulatedInstantaneousDischarge> <moduleParameterFile>ADJUSTQ_BRGN6NVR_BRGN6NVR_UpdateStates</moduleParameterFile> <adjustedForecastDischarge> <variableId>BRGN6NVR_QINE_6</variableId> </adjustedForecastDischarge> </adjustQUsingObservedInstantaneousDischarge> </adjust> </transformation>
This transformation uses observed discharges and simulated discharges to create an output timeseries.
One of the parameters of the adjustQ-transformation is the number of blending steps.
This parameter determines in how many steps the blend from the observed time series to the simulated time series is done.
The blending steps modifier is used to modify this parameter. The modifier doesn't have a start- and/or end time and is always valid.
The last applied blending steps modifier is always applied. Only one blending steps modifier can be defined in a fews configuration.
An example of the blending steps modifier is the CHGBLEND-modifier. This modifier is used by the NWS to modify the blending steps of the
adjustQ-operation.
Below is an example of a blending steps modifier. The forecaster can enter the value in the text box and/or change it with the up and down arrows next to the text box.
Below an example of the configuration an adjustQModifier.
<adjustQModifiers> <blendingStepsModifier id="CHGBLEND" name="CHGBLEND"/> </adjustQModifiers>
The only thing the configurator has to configure is the id of the modifier and its name.
By doing this the configuration declares that it is allowed to use the blending steps modifier.
Sample years modifier
The transformation sample historic creates ensembles based on historic time series.
The sample years modifier can only be used in combination with this transformation.
To be able to use this modifier the transformation sample historic should use a module parameter file to define its configuration options. Make sure all the following parameters are defined in the parameter file:
<parameter id="startYear"> <intValue>1966</intValue> </parameter> <parameter id="firstEnsembleMemberIndex"> <intValue>1966</intValue> </parameter> <parameter id="ensembleMemberCount"> <intValue>44</intValue> </parameter> <parameter id="startWaterYear"> <stringValue>--10-01</stringValue> </parameter>
An example of the use of this modifier is the modifier HistoricWaterYears which is in use by NWS.
It is used by the forecasters to overrule the default sample years in the transformation.
Display
Below an example of the display of this modifier.
The forecaster can modifiy the default sample years by changing the start year and end year in the display.
Configuration example
Below an example of the configuration of this modifier.
<sampleHistoricalModifiers> <sampleYearsModifier id="historicwateryears" name="historicwateryears"> </sampleYearsModifier> </sampleHistoricalModifiers>
Disable adjustment modifier
The transformation adjustQ creates a simulated time series by combining observed time series and simulated time series.
When this modifier is applied the observed time series are ignored and the output will be equal to the simulated time series. This modifier can, like the blending steps modifier, only be used in combination with the adjustQ transformation. The adjustQ-transformation should use a moduleparameterfile to define its parameters to be able to use this modifier.
The moduleparameterfile should define the parameter disableAdjustment.
Below an example
<parameters xmlns="http://www.wldelft.nl/fews/PI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.5" xsi:schemaLocation="http://www.wldelft.nl/fews/PI http://chps1/schemas/pi-schemas/pi_modelparameters.xsd"> <group id="default"> <parameter id="blendingSteps"> <intValue>1</intValue> </parameter> <parameter id="interpolationType"> <stringValue>difference</stringValue> </parameter> <parameter id="disableAdjustment"> < <boolValue>false</boolValue> </parameter> </group> </parameters>
Display
Below an example of the display for this modifier. The forecaster cannot select a start- and/or enddate which means that the modifier will always be active.
Configuration example
The configurator only has to configure the id and the name of the modifier. By doing this, Delft-FEWS knows that it is allowed to use this modifier at a each adjustQ-operation which uses a moduleparameterfile and has the element disableAdjustment in its
moduleparameterfile defined.
<adjustQModifiers> <disableAdjustmentModifier id="espadjq" name="ESPADJQ"/> </adjustQModifiers>
Time series modifiers
Single value modifiers
A single value modifier is a modifier which modifies only one value at one time step in a time series. The forecaster can define a single value modifier in the modifier panel by selecting a date and a value. The combination of the selected time and value is the definition of the single value modifier.
An example of the use of a single value modifier is the WECHNG-modifier used in several NWS (National Weather Service) applications. This modifier sets the snow water-equivalent for the date specified. The single value modifier is applied to an empty time series which holds after the application of the modifier only the value of the modifier. This time series is used as an input time series to the model. The model adapter reads the time series and knows that it has to change the snow water-equivalent for the mod date to the specified value.
Display
The display for the single value modifiers is shown below.
The user can enter a value in the text box by entering a value and by clicking on the spinner box next to it. The value can also be adjusted by the slider bar.
The date of the modifier can be selected in the area above which the forecaster can enter a value for the modifier. The units of the modifier is shown at the right side of the slider bar.
Configuration example
<singleValueModifier id="wechng" name="wechng"> <timeSeries> <parameterId>WECHNG</parameterId> </timeSeries> <softLimits> <maximumValue>25</maximumValue> <minimumValue>0</minimumValue> </softLimits> <hardLimits> <maximumValue>100</maximumValue> <minimumValue>0</minimumValue> </hardLimits> <defaultTime>time zero</defaultTime> <defaultValue>1</defaultValue> </singleValueModifier>
timeSeries
The element timeseries is used to define to which timeseries this modifier can be applied.
softLimits
The slider in the display is bounded to the soft limits defined. However they can be overruled by entering a higher or lower value in the text box.
hardLimits
The values entered in the text box or the slider are bounded by the hard limits defined.
defaultTime
The default time of the modifier. Currently two options are available: time zero and start run.
defaultValue
It is possible to assign a default value to a single value modifier.
In the config example above a default value is configured as the initial value for the modifier.
Below a summary of the options which can be used to define the initial value of the modifier.
default value
This option defines a hard-coded value as the initial value for the modifier
derive a default value from a time series
This option defines a set of time series. The initial value will be derived from the time series which has the same location as the location of the modifier.
From this time series the the value at the time of the modifier will be chosen.
derive default value from a statistical function
The last option allows the forecaster to configure a statistical function from which the value should be derived. Currently only the principal component analysis-functions support this option.
When the principal component analysis is run in the plot display by selecting the principal component analysis-function the output value of this function will be default value for the modifier.
Constant value modifiers
Constant value modifiers are very similar to single value modifiers. But instead of modifying a single value at a particular point in time, they modify a time series over a period of time with a fixed value.
An example of the use of the constant value modifier is the MFC-modifier. This modifier adjusts the melt factor of the snow17-model over the specified period of time with the specified value. It is (just as the WECHNG-modifier) applied to an
empty time series and used as an input time series to the snow17-model.
Display
Below the display of a constant value modifier is shown. Which is very similar to the display of single value modifier.
Note however that this modifier has a start and an end time. The constant value of the modifier can be specified in the
text box or with the slider. The period can be defined by using the start and end date boxes.
Configuration example
<constantValueModifier id="mfc" name="mfc"> <timeSeries> <parameterId>MFC</parameterId> </timeSeries> <softLimits> <maximumValue>3</maximumValue> <minimumValue>0</minimumValue> </softLimits> <hardLimits> <maximumValue>10</maximumValue> <minimumValue>0</minimumValue> </hardLimits> <sliderTicksStepSize>1</sliderTicksStepSize> <spinnerStepSize>1</spinnerStepSize> <defaultStartTime>start run</defaultStartTime> <defaultEndTime>end run</defaultEndTime> <defaultValue>1</defaultValue> </constantValueModifier>
timeseries
The user can define a timeseries filter in this element to define to which time series the modifier can be applied.
softLimits
The slider in the display is bounded to the soft limits defined. However they can be overruled by entering a higher or lower value in the text box.
hardLimits
The values entered in the text box or the slider are bounded by the hard limits defined.
sliderTicksStepSize
The step size of the the ticks in the slider.
spinnerStepSize
The step size by which the value in the spinner box increases or decreases by each click on the spinner.
defaultstarttime
The default start time of the modifier can be defined here. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
Possible options are: "start run" or "time zero"
defaultendtime
The default end time of the modifier can be defined here. It corresponds to the same fields in the modifier display. These are only default values, which can be changed by the user.
Possible options are: "time zero" or "end run"
defaultvalue
A default value can be defined here.
Enumeration modifiers
Enumeration modifiers are modifiers in which the user can select an option from a dropdown-list. Each available option in the drop-down list is represented by a value.
This value is applied by the modifier to a period of time.
An example of the use of the eneration modifier is the rain snow modifier from the NWS. In this modifier the forecaster can determine the precipitation in the snow17-model. Only two options are available rain and snow. If the forecaster chooses option rain than
a value of 1 is set into the timeseries, if an option snow is chosen than the value 2 is set into the timeseries at the specified time. The modifier is applied to an empty time series and used an input to the model. The model knows that if value 1 is set into the
timeseries that the user has chosen option rain and that if value is 2 that option snow was chosen.
Display
Below an example of the display for an enumeration modifier.
Configuration example
<enumerationModifier id="rainsnow" name="rainsnow"> <timeSeries> <parameterId>RAINSNOW</parameterId> </timeSeries> <descriptionEnumeration>choose precipitation:</descriptionEnumeration> <enumeration> <item text="rain" value="1"/> <item text="snow" value="2"/> </enumeration> <defaultStartTime>start run</defaultStartTime> <defaultEndTime>end run</defaultEndTime> </enumerationModifier>
timeseries
The user can define a timeseries filter in this element.
descriptionEnumeration
Define the text value in the display which is shown before the dropdown list
enumeration
Define the list of options available in the drop down list and its associated value which will be placed into the time series.
defaultstarttime
The default start time of the modifier can be defined here. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
Possible options are: "start run" or "time zero"
defaultendtime
The default end time of the modifier can be defined here. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
Possible options are: "time zero" or "end run"
Time series modifier
The time series modifier is a modifier which allows the forecaster to edit a timeseries by selecting points in a graph (graphical appointment of modifiers, aka GAM, see below) or by changing values in a modifier. In most applications of this modifier the forecaster is directly editing a time series which is used by the models. For example it might be used to directly edit the precipitation. This is contrary to how for example the single value modifier WECHNG is used. This modifier edits an empty time series which is than read by the snow17-model which modifies its state based on the input from this modifier. A time series modifier always has a start- and end date. Optionally (if configured) a valid time is available.
When using a valid time in combination with a simulated forecast timeseries, the modifier is applied from the valid time to T0.
When using a valid time in combination with a external forecast timeseries, the modifier is applied when the valid time is later than the external forecast time.
The forecaster can edit this time series by making changes in table or in the graph. The changes in the graph are made by clicking in the graph.
When the user clicks from left to right then the values between the points are interpolated.
When the user clicks from right to left only the newly added or changed points are adjusted but no interpolation will be done between the last two points. When more than one time series is shown in the display it is possible to make a selection of which time series should edited when making changes by clicking in the graph.
The time series which should be changed can be selected by clicking on the legend of that example time series in the graph
Besides editing the time series by editing values in the graph or table another type can be selected by the dropdownbox.
Available options are:
- add
- subtract
- multiply
- divide
- replace
- missing
- ignore time series
- time series
When one of the options add, subtract, multiply, divide or replace is chosen than a text box in which a value can be entered appears next to the operation type-dropdownbox.
The options add, subtract, multiply, divide or replace are self-explaining. They add, subtract, multiply, divide or replace the timeseries with the specified value over the specified period of time.
The option missing replaces the values in the time series with missing values over the specified period of time, the ignore time series sets the value over the specified period of time to unreliable.
The last option time series is the default option which will be selected after the initial creation of this modifier and this option allows the forecaster to freely edit the timeseries.
An example of the use of the time series modifier is the RRICHNG modifier.
Display
Below a screenshot of the timeseries modifier.
Configuration example
<timeSeriesModifier id="rrichng" name="rrichng"> <timeSeries> <moduleInstanceSetId>SNOW17_Forecast</moduleInstanceSetId> <valueType>scalar</valueType> <parameterId>RAIM</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="hour" multiplier="6"/> </timeSeries> <defaultStartTime>start run</defaultStartTime> <defaultEndTime>end run</defaultEndTime> <defaultValidTime/> <resolveInWorkflow>true</resolveInWorkflow> <resolveInPlots>false</resolveInPlots> <createContinuousModifiers>true</createContinuousModifiers> </timeSeriesModifier>
timeSeries
This element can be used to identify to which timeseries this modifier can be applied.
resolveInWorkflow
In the element timeSeries is a filter defined which defines which timeseries can be modified with this timeseries. If the element resolveInWorkflow is set than the modifier can be applied to all timeseries in the current workflow to which the defined time
series filter applies. In an IFD-environment the current workflow is the workflow which is associated to the selected topology node.
resolveInPlots
This element can only be used in IFD-environments. If this element is enabled than the timeseries-filter is also applied to all timseries in the plots associated with the current selected topology node.
editInPlots
It is possible to create a timeseries modifier in the plot displays. This can be done by selecting a timeseries by selecting a legend. After selection the timeseries can be modified by graphically editing the timeseries or by changing values in the graph. This feature can
be disabled by setting this option to false.
createContinousModifiers
If a modifier is created in the graph by default one modifier will be created. However when the option createContinousModifiers is disabled one modifier will be created for every continuous range of modifications made. For example if the forecaster changes a 6 hours timeseries at 00z and at 12z but not a 0600z than by default this will result in creating a single modifier, but when this option is disabled two modifiers will be created. One for each continuous range of changes. In this case there is a change at 00z and one at 12z therefore two modifiers will be created.
Graphical appointment of modifiers (aka GAM)
To make use of the graphical appointment of modifiers menu, you need to configure several things in the ModifierTypes.xml
Create a modifier type for the parameter you want to modify (as described on this page), e.g.:
<timeSeriesModifier id="timeseries.to.modify" name="GAM.timeseries"> <timeSeries> <moduleInstanceId>My.Module.Instance.Id</moduleInstanceId> <!-- optional --> <parameterId>My.parameter</parameterId> </timeSeries> <defaultStartTime>start run</defaultStartTime> <defaultEndTime>end run</defaultEndTime> <resolveInWorkflow>true</resolveInWorkflow> <resolveInPlots>true</resolveInPlots> </timeSeriesModifier>
In the DisplayGroups.xml, you need to define a displayGroup with a display showing a plotId containing the timeseries you just made a modifierType for, e.g.:
<displayGroup name="Graphical Appointment of Modifiers" id="GAM"> <display name="GAM"> <relativeViewPeriod unit="day" start="-3" end="7"/> <locationId>H-MS-SINT</locationId> <plotId>Maas_kansverwachtingen_GAM</plotId> </display> </displayGroup>
In the Topology.xml you need to define a node in the topology linked to the displayGroupId of the displayGroup you've just created, e.g.:
<nodes id="GAM"> <node id="GAM_node"> <displayGroupId>GAM</displayGroupId> </node> </nodes>
In the TimeSeriesDisplayConfig.xml, there's an optional configuration setting.
If you want to be assisted by default markers when graphically editing the time series, you can configure this behavior, e.g.:
<graphicalEditingConfig> <adjustShapeByDragging> <preSelectTimeStepsPeriodically> <parameterId>My.parameter</parameterId> <timeSpan unit="hour" multiplier="12"/> </preSelectTimeStepsPeriodically> </adjustShapeByDragging> </graphicalEditingConfig>
Mark unreliable modifier
This modifier sets all the values in a time series to unreliable over a period so the data will not be used in the models, but the original values will be displayed. The display is very similar to the display used for the timeseries modifier however the dropdownbox is disabled and the option ignore timeseries is enabled. The forecaster can only edit the start and end dates of the period in which the time series will be set to invalid. In the Modifiers Display table the unreliable values in the modified time series are marked yellow.
An example of the use of this modifier is the modifier IGNORETS. This modifier is available in the NWS (National Weather Service) applications. To arrange that the model RESSNGL or the transformation AdjustQ ingores certain types of data.
By setting the correct filter in configuration only certain input time series of ressngl or adjustQ can be ignored by using the modifier.
Display
Below an example of the display of the mark unreliable modifier.
Configuration example
<markUnreliableModifier id="ignorets" name="ignorets"> <expiryTime unit="day" multiplier="150"/> <timeSeries> <moduleInstanceId>ImportIHFSDB</moduleInstanceId> <valueType>scalar</valueType> <parameterId>QIN</parameterId> <locationSetId>Gages_AK</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="hour" multiplier="1"/> </timeSeries> <defaultStartTime>start run</defaultStartTime> <defaultEndTime>end run</defaultEndTime> </markUnreliableModifier>
timeSeries
This element can be used to identify which timeseries this modifier can be applied.
defaultstarttime
The default start time of the modifier can be defined here. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
Possible options are: "start run: or "time zero"
defaultendtime
The default end time of the modifier can be defined here. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
Possible options are: "time zero" or "end run"
Compound modifier
The compound modifier can be used to modify a set of time series with slider bars. Each slider shows a reference value in blue. If no modification is made the value of the slider will be equal to the reference value. If a modification is made the slider will always be equal to the value of the modifier. Too indicate that a modification was made the text box will be made yellow.
An example of the use of the compound modifier is the sacco-modifier. This modifier is used to modify the state of the Sacramento-model. Each slider represents a state parameter. In blue the current value is shown, the slider is equal to current value of the model or if the state parameter is changed it will be equal to the modification.
Display
Below an example of the display of this modifier.
Schema
Configuration example
<compoundModifier id="sacco" name="sacco"> <slider> <currentTimeSeries> <moduleInstanceSetId>SACSMA_Forecast</moduleInstanceSetId> <valueType>scalar</valueType> <parameterId>UZTWC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="hour" multiplier="6"/> </currentTimeSeries> <modifiedTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>UZTWC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="nonequidistant"/> </modifiedTimeSeries> <hardLimits> <maximumValue>10</maximumValue> <minimumValue>0</minimumValue> </hardLimits> </slider> <slider> <currentTimeSeries> <moduleInstanceSetId>SACSMA_Forecast</moduleInstanceSetId> <valueType>scalar</valueType> <parameterId>UZFWC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="hour" multiplier="6"/> </currentTimeSeries> <modifiedTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>UZFWC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="nonequidistant"/> </modifiedTimeSeries> <maximumAllowedValueParameterId>UZFWM</maximumAllowedValueParameterId> </slider> <slider> <currentTimeSeries> <moduleInstanceSetId>SACSMA_Forecast</moduleInstanceSetId> <valueType>scalar</valueType> <parameterId>LZTWC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="hour" multiplier="6"/> </currentTimeSeries> <modifiedTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>LZTWC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="nonequidistant"/> </modifiedTimeSeries> <maximumAllowedValueParameterId>LZTWM</maximumAllowedValueParameterId> </slider> <slider> <currentTimeSeries> <moduleInstanceSetId>SACSMA_Forecast</moduleInstanceSetId> <valueType>scalar</valueType> <parameterId>LZFSC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="hour" multiplier="6"/> </currentTimeSeries> <modifiedTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>LZFSC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="nonequidistant"/> </modifiedTimeSeries> <maximumAllowedValueParameterId>LZFSM</maximumAllowedValueParameterId> </slider> <slider> <currentTimeSeries> <moduleInstanceSetId>SACSMA_Forecast</moduleInstanceSetId> <valueType>scalar</valueType> <parameterId>LZFPC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="hour" multiplier="6"/> </currentTimeSeries> <modifiedTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>LZFPC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="nonequidistant"/> </modifiedTimeSeries> <maximumAllowedValueParameterId>LZFPM</maximumAllowedValueParameterId> </slider> <slider> <currentTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>ADIMC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="nonequidistant"/> </currentTimeSeries> <modifiedTimeSeries> <moduleInstanceSetId>SACSMA_Forecast</moduleInstanceSetId> <valueType>scalar</valueType> <parameterId>ADIMC</parameterId> <locationSetId>Gages_Catchments</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="hour" multiplier="6"/> </modifiedTimeSeries> <maximumAllowedValueParameterId>UZTWM+LZTWM</maximumAllowedValueParameterId> </slider> <defaultTime>start run</defaultTime> <offsetDefaultTime unit="day" multiplier="1"/> </compoundModifier>
slider
For each slider the time series which holds the reference values should be configured, and the time series which should contain the modified value should be configured. Each slider also has maximum value. This maximum is retrieved from the module parameter file of the model. The element maximumAllowedValueParameterId identifies which parameter should be used to identify the maximum.
current time series
This time series holds the current value of the model and will be used to determine the value of the blue reference value.
modified time series
If a parameter is changed the modifier will be applied to this time series
maximumAllowedParameterId
The maximum of the slider can be derived from the module parameter file by identifying the parameterId which holds the value of the maximum
hardLimits
It also possible to define the minimum and maximum of the modifications by hard coding them in the configuration.
defaultTime
Default of modifier date. Possible options are "start run" and "time zero".
Missing value modifier
The missing value modifier can be used to set the values in a time series to missing over a period of time. The user can only define the period of time over which this modifier is active.
The panel which is used for this modifier is very similar to the panel of the time series modifier. The difference with the time series modifier panel is that the dropdown box which is used to select an operation type is disabled and set to the type Missing.
An example of the use of this modifier is the SETMSNG-modifier which is applied in NWS (National Weather Service) applications. To set the value of certain time series to missing this modifier is used.
Display
An example of the missing value modifier is shown below.
Configuration example
<missingValueModifier id="setmsng" name="setmsng"> <timeSeries> <moduleInstanceId>ImportIHFSDB</moduleInstanceId> <valueType>scalar</valueType> <parameterId>STG</parameterId> <locationSetId>Gages_AK</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="hour" multiplier="6"/> </timeSeries> <timeSeries> <moduleInstanceId>ImportIHFSDB</moduleInstanceId> <valueType>scalar</valueType> <parameterId>STG</parameterId> <locationSetId>Gages_AK</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="hour" multiplier="1"/> </timeSeries> <defaultStartTime>start run</defaultStartTime> <defaultEndTime>end run</defaultEndTime> <resolveInWorkflow>false</resolveInWorkflow> <resolveInPlots>true</resolveInPlots> </missingValueModifier>
timeseries
This element can be used to identify to which timeseries this modifier should be applied.
defaultStartTime
The default start time of the modifier. The available options are startrun and time zero. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
offsetDefaultStartTime
The offset start time compared to the option defined in defaultStartTime. For example when an offset of 1 day is configured in this option and the defaultStartTime is set to time zero than the default start time of the modifier will be set to
time zero plus 1 day. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
defaultEndTime
The default end time of the modifier. The available options are time zero and end run. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
offsetDefaultEndTime
The offset of the end time compared to the option defined in defaultEndTime. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
expiryTime
This element can be used to overrule the default expiry time. The expiryTime is not related to the display (and is thus hidden from the user) and can be used to maximize the period a rating table modifier can be applied. This expiryTime is related to the period to which the modifier is applied, it does not indicate the period after which the rating table will be removed by the rollingBarrel. By using this option, you can overrule the default expiryTime.
resolveInWorkflow
In the element timeSeries is a filter defined which defines which timeseries can be modified with this timeseries. If the element resolveInWorkflow is set than the modifier can be applied to all timeseries in the current workflow to which the defined time series filter applies. In an IFD-environment the current workflow is the workflow which is associated to the selected topology node.
resolveInPlots
This element can only be used in IFD-environments. If this element is enabled than the timeseries-filter is also applied to all timeseries in the plots associated with the current selected topology node.
Switch option modifier
This modifier allows the forecaster to choose one of the configured time series. If the chosen time series was defined as a timeValue-timeseries than the forecaster will also have the option to enter a value. If the timeseries was defined as a boolean time series than the forecaster cannot enter a value and the textbox for the value will be grayed out.
An example of the use of this modifier is the SSARREG-modifier of the NWS. This modifier is used to set the regulation options for a basin. By using the radio-button a regulation option can be selected. For most regulation options a value can be entered. However the option FREEFLOW can only be switched on.
Below an example of the display of a switch option modifier just after it is created by using the "create mod"-button.
In the example above only 1 regulation option is shown. It is possible to add a new one clicking on the Add-button.
It is only possible to create regulation options at the time step of this modifier.
The delete button can be used to delete an entry. For most regulation option a value can be entered in the value-box. The freeflow option can only be selected. It is not possible to enter a value.
Below a configuration example.
<switchOptionModifier id="ssarreg" name="SSARREG"> <expiryTime unit="day" multiplier="365"/> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETQ</parameterId> <qualifierId>US</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> <!-- <ensembleId>main</ensembleId> --> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETH</parameterId> <qualifierId>US</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETS</parameterId> <qualifierId>US</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETDQ</parameterId> <qualifierId>US</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETDH</parameterId> <qualifierId>US</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETDS</parameterId> <qualifierId>US</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <booleanTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>FREEFLOW</parameterId> <qualifierId>US</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </booleanTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETQ</parameterId> <qualifierId>DS</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETH</parameterId> <qualifierId>DS</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETS</parameterId> <qualifierId>DS</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETDQ</parameterId> <qualifierId>DS</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETDH</parameterId> <qualifierId>DS</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <timeValueTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SETDS</parameterId> <qualifierId>DS</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </timeValueTimeSeries> <booleanTimeSeries> <moduleInstanceId>ExportMODS</moduleInstanceId> <valueType>scalar</valueType> <parameterId>FREEFLOW</parameterId> <qualifierId>DS</qualifierId> <locationSetId>Reservoirs</locationSetId> <timeSeriesType>external forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> </booleanTimeSeries> <startTime>time zero</startTime> </switchOptionModifier>
The timeValueTimeSeries and the booleanTimeSeries define which options are available in the radio button. A timeValueTimeSeries will define an option for which a value can be entered. A booleanTimeSeries will define an option which can only be selected. The startTime defines the initial time of the modifier after creation. The available values are "time zero" and "start run".
Option modifiers
This modifier is very similar to the switch option modifier. However this modifier doesn't allow to define an option per date. It only allows to define one option which will be always valid after creation of the modifier. Note that this modifier is obsolete and should not be used anymore. This modifier is replaced by the generic location attribute modifier by which the same functionality can be created. An example of the use of this modifier is the rainfall_switch of the seqwater-system. This option allows the forecaster to choose a forecast type (user defined forecast, no rainfall forecast or use the rainfall forecast). Secondly it is also possible to choose which rainfall observations to use the forecast.
Display
Below an example of a option modifier. In this case the example shows the rainfall switch-modifier.
Schema
<optionModifier id="Rainfall_Switch" name="Rainfall Switch"> <booleanTimeSeries> <parameterId>Grid</parameterId> <qualifierId>observed</qualifierId> </booleanTimeSeries> <booleanTimeSeries> <parameterId>Stations</parameterId> <qualifierId>observed</qualifierId> </booleanTimeSeries> <booleanTimeSeries> <parameterId>SeqGrid</parameterId> <qualifierId>observed</qualifierId> </booleanTimeSeries> <booleanTimeSeries> <parameterId>SeqStations</parameterId> <qualifierId>observed</qualifierId> </booleanTimeSeries> <booleanTimeSeries> <parameterId>Forecast ON</parameterId> <qualifierId>forecast</qualifierId> </booleanTimeSeries> <booleanTimeSeries> <parameterId>Forecast OFF</parameterId> <qualifierId>forecast</qualifierId> </booleanTimeSeries> <booleanTimeSeries> <parameterId>User ON</parameterId> <qualifierId>forecast</qualifierId> </booleanTimeSeries> <expiryTime unit="day" multiplier="1000"/> </optionModifier>
timeValueTimeSeries
First the timeValueTimeSeries are defined. The parameterid of the defined timeseries will be used as an identifier
in radiobutton which can be used to select an option. When an option is selected which is defined as a timeValue-timeseries
than the user can also define a value.
booleanTimeSeries
This option allows the user to define option-types which can only be selected by used, but doesn't offer the possibility to
enter a additional value.
expiryTime
This option can be used to define an expiry time for this modifier which overrules the default expiry time. The expiryTime is not related to the modifier display (and is thus hidden from the user) and can be used to maximize the period a rating table modifier can be applied. This expiryTime is related to the period to which the modifier is applied, it does not indicate the period after which the rating table will be removed by the rollingBarrel. By using this option, you can overrule the default expiryTime.
Shift rating curve modifiers
Rating curve modifiers are used to modify a rating curve. The rating curve can be modified by shifting the whole rating curve a constant value or by multiplying it with a factor. The constant value or the multiplication factor is calculated by the following procedure. The forecaster defines a stage/discharge pair, from the given stage the discharge is calculated by using the rating curve, the difference or factor between the given discharge and the calculated discharge is calculated. This type of modifier is in use by North-Central RFC (NCRFC) one of the River Forecast Centers of the NWS. They use this modifier to temporarily modify the rating curve.
However, when new rating curves are available they are imported in their system.
Display
An example of the display of this modifier is shown below. The forecaster can define a stage/discharge pair by defining a pair in the text boxes. However it is also possible to double click on a point in the graph to define a pair. From the defined stage/discharge pair automatically the constant value or multiplication factor is derived, which is displayed besides the given stage/discharge pair. The radio button at the top of the display can be used to switch between the two types of modifier (constant value or percentage).
Configuration example
<ratingCurveModifiers> <shiftMultiplyRatingCurveModifier id="qpcshift" name="qpcshift"> <defaultStartTime>start run</defaultStartTime> <defaultEndTime>end run</defaultEndTime> <offsetDefaultEndTime unit="day" multiplier="3"/> </shiftMultiplyRatingCurveModifier> </ratingCurveModifiers>
defaultStartTime
The default start time of the modifier. The available options are startrun and time zero. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
offsetDefaultStartTime
The offset start time compared to the option defined in defaultStartTime. For example when an offset of 1 day is configured in this option and the defaultStartTime is set to timezero than the default starttime of the modifier will be set to time zero plus 1 day. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
defaultEndTime
The default end time of the modifier. The available options are time zero and end run. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
offsetDefaultEndTime
The offset of the end time compared to the option defined in defaultEndTime. It corresponds to the same fields in the modifier display. This is only a default value, which can be changed by the user.
expiryTime
This element can be used to overrule the default expiry time. The expiryTime is not related to the display (and is thus hidden from the user) and can be used to maximize the period a rating table modifier can be applied. This expiryTime is related to the period to which the modifier is applied, it does not indicate the period after which the rating table will be removed by the rollingBarrel. By using this option, you can overrule the default expiryTime.
expiryTimeDeletedModifiers
The expiryTimeDeletedModifiers is related to the rollingBarrel. When a modifier is deleted by the user (in the GUI) it will not be deleted but only set to invisible, so that it can be restored. However, when the expiryTimeDeletedModifiers has passed, the modifier will be removed from the database and the modifier can no longer be restored. So if the expiry time is 50 years, the modifier remains 50 years in the database, visible or invisible.