Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. FEWS Po (Paolo Reggiani)
  2. FEWS Georgia (Paolo Reggiani)
  3. FEWS Sudan (Jan Verkade)
  4. FEWS Trinidad (Matthijs Lemans)

Recently (July 2013), An improved version of the adapter has been improved. The new adapter has been (or will) developed and is implemented in the following configurations:

  1. FEWS CEMIG (Jan Talsma, Dirk Schwanenberg)
  2. FEWS Salto Grande (Jan Talsma, Otto de Keizer)
  3. FEWS Colombia (Micha Werner, Otto de Keizer)
  4. FEWS Sava (Klaas-Jan van Heeringen, Daniel Tollenaar, Arjen Haag)

In October 2019 the HEC-HMS adapter was improved with Parameter Updating capabilities for the preAdapter. This adapter is implemented in the following configurations:

  1. FEWS Manitoba Hydro (Ivo Miltenburg, Ben Balk)

Download

Download of the model adapter is not available here: pls please e-mail to Delft-FEWS Product Management for more information.
A tutorial of how to add a HEC-HMS model as an adapter in FEWS is attached.

...

The data directories and configuration files that are required for operating the FEWS Adapter for HEC-RAS HMS have been shown below.

Note that only binary and configuration files relevant to the HEC-RAS HMS adapter are included, in a real configuration a lot more files can be involved used by another modules of the FEWS system.

No Format
+---bin
|       <FEWS binaries>
\---FEWS_sa

    |
    +---Config
    |   +---ColdStateFiles
    |   |       HECHMS_UpdateStates Default.zip....cold state files
    |   |
    |   +---IdMapFiles
    |   |       IdExportHECHMS.xml
    |	|	IdImportHECHMS.xml.......................... custom mappings for the HEC-HMS variables and locations
    |   |
    |   +---ModuleConfigFiles
    |   |        HECHMS_Forecast.xml
    |	|	     HECHMS_Update.xml............ main configuration file of the adapter
    |   |
    |   \---ModuleDataSetFiles
    |            HECHMS_model.zip.........zipped hechms files, transported to Models directory
    |
    \---Models|
     |   \---hec/hecras
ModuleParFiles
    |            +---bin.HEC-HMS_Parameters.xml....................................... directory which contains all HEC-HMS executables for Windows and Linux platforms(optional) hechms (template) parameter files, transported to Models directory by a exportParameterActivity in the GA
    |
    \---Models
    |
	    +\---binAdapter..hec/hechms
            +---bin........................................ directory which contains all allHECHEC-HMS adapter java files executables for Windows and Linux platforms
            |
	            \+---model

		|    run_info.xmlbinAdapter................................. adirectory filewhich generatedcontains byallHEC-HMS FEWSadapter containing paths, run options
    java files
            |
            \---model

		|    +---basinStates........run_info.xml.......................... foldera containingfile thegenerated start/endby statesinputFEWS directory of the adaptercontaining paths, input FEWS-PI time series files
run options
                 |
		+---map
		|
		+---optimizer
		|
                |
                +---piInputTimeseries+---basinStates..................................... folder containing the start/end statesinput directory of the adapter, input FEWS-PI time series files
                |       input.xml
      |
		+---map
		|
		+---optimizer
		|
                |
                +---piOutputTimeseriesoutputpiInputTimeseries.................................... outputinput FEWS-PI time series files
                |       outputinput.xml
                |
                |

		|model files
		|.dssfiles/results
		|debugfiles

Configuring HEC-HMS adapter

HEC-HMS model adapter follows standard way of integrating external models into the Delft-FEWS system by use of General Adapter. For more details about configuration of General Adapter please check 05 General Adapter Module.

A very important part of the configuration is defined under the <exportRunFileActivity> element. It contains path to the HMS project file, location of the HMS binary files and list of variables to be written into the output files. It can also contain the path to HMS script file in property "hmsScriptFile", if it does the pre adapter will replace the path separator \ or / in the call OpenProject("project_name", "d:\dir\another") to \\. . If the path separator already is \\ it will remain unchanged.

Example configuration of the HEC-HMS adapter:

+---piOutputTimeseriesoutput................................. output FEWS-PI time series files
                |       output.xml
                |
                |

		|model files
		|.dssfiles/results
		|debugfiles

Configuring HEC-HMS adapter

HEC-HMS model adapter follows standard way of integrating external models into the Delft-FEWS system by use of General Adapter. For more details about configuration of General Adapter please check 05 General Adapter Module.

A very important part of the configuration is defined under the <exportRunFileActivity> element. It contains path to the HMS project file, location of the HMS binary files and list of variables to be written into the output files. It can also contain the path to HMS script file in property "hmsScriptFile", if it does the pre adapter will replace the path separator \ or / in the call OpenProject("project_name", "d:\dir\another") to \\. . If the path separator already is \\ it will remain unchanged.


Example configuration of the HEC-HMS adapter:

Code Block
xml
xml
<generalAdapterRun xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/generalAdapterRun.xsd">
	<general>
		<piVersion>1.8</piVersion>
		<rootDir>$REGION_HOME$/Modules/HEC-HMS</rootDir>
		<workDir>$REGION_HOME$/Modules/HEC-HMS/bin</workDir>
		<exportDir>%ROOT_DIR%/$CATCHMENT$/piInputTimeSeries</exportDir>
		<exportDataSetDir>%ROOT_DIR%</exportDataSetDir>
		<exportIdMap>IdExportHEC-HMS</exportIdMap>
		<exportUnitConversionsId>ExportHEC-HMS</exportUnitConversionsId>
		<importDir>%ROOT_DIR%/work/piOutputTimeSeries</importDir>
		<importIdMap>IdImportHEC-HMS</importIdMap>
		<dumpFileDir>$GA_DUMPFILEDIR$</dumpFileDir>
		<dumpDir>%ROOT_DIR%/$CATCHMENT$</dumpDir>
		<diagnosticFile>%ROOT_DIR%/$CATCHMENT$/piDiagnostic.xml</diagnosticFile>
		<missVal>-999</missVal>
		<timeZone>
			<timeZoneOffset>-06:00</timeZoneOffset>
		</timeZone>
	</general>
	<activities>
		<startUpActivities>
			<purgeActivity>
				<filter>%ROOT_DIR%/$CATCHMENT$/piInputTimeSeries/*.*</filter>
			</purgeActivity>
			<purgeActivity>
				<filter>%ROOT_DIR%/$CATCHMENT$/piOutputTimeSeries/*.*</filter>
			</purgeActivity>
			<purgeActivity>
				<filter>%ROOT_DIR%/$CATCHMENT$/basinStates/*.*</filter>
			</purgeActivity>
			<purgeActivity>
				<filter>%ROOT_DIR%/$CATCHMENT$/results/*.*</filter>
			</purgeActivity>
			<purgeActivity>
				<filter>%ROOT_DIR%/$CATCHMENT$/*.*</filter>
			</purgeActivity>
		</startUpActivities>
		<exportActivities>
			<!--Export States-->
			<exportStateActivity>
				<moduleInstanceId>HEC-HMS_$CATCHMENT$_Update</moduleInstanceId>
				<stateExportDir>%ROOT_DIR%/$CATCHMENT$/basinStates</stateExportDir>
				<stateConfigFile>%ROOT_DIR%/$CATCHMENT$/state.xml</stateConfigFile>
				<stateLocations type="file">
					<stateLocation>
						<readLocation>$HMSproject$_state.state</readLocation>
						<writeLocation>$HMSproject$_state.state</writeLocation>
					</stateLocation>
				</stateLocations>
				<stateSelection>
					<warmState>
						<stateSearchPeriod unit="day" start="$STARTTIME$" end="-1"/>
					</warmState>
				</stateSelection>
			</exportStateActivity>
			<!--Export times eries-->
			<exportTimeSeriesActivity>
				<exportFile>%ROOT_DIR%/$CATCHMENT$/piInputTimeSeries/input.xml</exportFile>
				<timeSeriesSets>
					<timeSeriesSet>
						<moduleInstanceId>Grid_Sampling_HEC-HMS_$CATCHMENT$_Update</moduleInstanceId>
						<valueType>scalar</valueType>
						<parameterId>PC.obs</parameterId>
						<locationSetId>HEC-HMS_$CATCHMENT$_precip_input</locationSetId>
						<timeSeriesType>simulated historical</timeSeriesType>
						<timeStep unit="hour" multiplier="6"/>
						<relativeViewPeriod unit="day" end="0" startOverrulable="true"/>
						<readWriteMode>read only</readWriteMode>
					</timeSeriesSet>
					<timeSeriesSet>
						<moduleInstanceId>Grid_Sampling_HEC-HMS_$CATCHMENT$_Update</moduleInstanceId>
						<valueType>scalar</valueType>
						<parameterId>TA.obs</parameterId>
						<locationSetId>HEC-HMS_$CATCHMENT$_temperature_input</locationSetId>
						<timeSeriesType>simulated historical</timeSeriesType>
						<timeStep unit="hour" multiplier="6"/>
						<relativeViewPeriod unit="day" end="0" startOverrulable="true"/>
						<readWriteMode>read only</readWriteMode>
					</timeSeriesSet>
					<timeSeriesSet>
						<moduleInstanceId>Preprocess_HEC-HMS_$CATCHMENT$_Update</moduleInstanceId>
						<valueType>scalar</valueType>
						<parameterId>QR.obs</parameterId>
						<locationSetId>HEC-HMS_$CATCHMENT$_flow_input</locationSetId>
						<timeSeriesType>simulated historical</timeSeriesType>
						<timeStep unit="hour" multiplier="6"/>
						<relativeViewPeriod unit="day" end="0" startOverrulable="true"/>
						<readWriteMode>read only</readWriteMode>
					</timeSeriesSet>
					<timeSeriesSet>
						<moduleInstanceId>Preprocess_HEC-HMS_$CATCHMENT$_Update</moduleInstanceId>
						<valueType>scalar</valueType>
						<parameterId>HG.obs</parameterId>
						<locationSetId>HEC-HMS_$CATCHMENT$_stage_input</locationSetId>
						<timeSeriesType>simulated historical</timeSeriesType>
						<timeStep unit="hour" multiplier="6"/>
						<relativeViewPeriod unit="day" end="0" startOverrulable="true"/>
						<readWriteMode>read only</readWriteMode>
					</timeSeriesSet>
				</timeSeriesSets>
			</exportTimeSeriesActivity>
			<!--Export Model Data Set (.basin, .contol, .gage, .hms, .pdata, .run, .script, .met, .dss etc.)-->
			<exportDataSetActivity>
				<moduleInstanceId>HEC-HMS_$CATCHMENT$_Update</moduleInstanceId>
			</exportDataSetActivity>
			<!--(Optional) Export parameter files-->
			<exportParameterActivity>
				<fileName>%ROOT_DIR%/$CATCHMENT$/$CATCHMENT$_Basin_Subbasin_params.xml</fileName>
				<templateLocationLooping>
					<locationModelLoop>
						<locationSetId>HEC-HMS_$CATCHMENT$_subbasin_params</locationSetId>
						<model>HECHMS_B_SB</model>
					</locationModelLoop>
				</templateLocationLooping>
				<moduleInstanceId>HEC-HMS_Parameters</moduleInstanceId>
			</exportParameterActivity>
			<exportParameterActivity>
				<fileName>%ROOT_DIR%/$CATCHMENT$/$CATCHMENT$_Basin_Reach_params.xml</fileName>
				<templateLocationLooping>
					<locationModelLoop>
						<locationSetId>HEC-HMS_$CATCHMENT$_reach_params</locationSetId>
						<model>HECHMS_B_R</model>
					</locationModelLoop>
				</templateLocationLooping>
				<moduleInstanceId>HEC-HMS_Parameters</moduleInstanceId>
			</exportParameterActivity>
			<exportParameterActivity>
				<fileName>%ROOT_DIR%/$CATCHMENT$/$CATCHMENT$_Met_SnowMelt_params.xml</fileName>
				<templateLocationLooping>
					<locationModelLoop>
						<locationSetId>HEC-HMS_$CATCHMENT$_snowmelt_method_temperature_index_params</locationSetId>
						<model>HECHMS_M</model>
					</locationModelLoop>
				</templateLocationLooping>
				<moduleInstanceId>HEC-HMS_Parameters</moduleInstanceId>
			</exportParameterActivity>
			<!--Export RunFile (Params related keys are optional)-->
			<exportRunFileActivity>
				<exportFile>%ROOT_DIR%/$CATCHMENT$/RunInfo.xml</exportFile>
				<properties>
					<string key="hmsProjectFile" value="%ROOT_DIR%/$CATCHMENT$/$HMSproject$.hms"/>
					<string key="hmsScriptFile" value="%ROOT_DIR%/$CATCHMENT$/$HMSproject$.script"/>
					<string key="Basin_Subbasin_Params_File" value="$CATCHMENT$_Basin_Subbasin_params.xml"/>
					<string key="Basin_Reach_Params_File" value="$CATCHMENT$_Basin_Reach_params.xml"/>
					<string key="Precipitation_SnowMelt_Params_File" value="$CATCHMENT$_Met_SnowMelt_params.xml"/>
				</properties>
			</exportRunFileActivity>
		</exportActivities>
		<executeActivities>
			<executeActivity>
				<!--Run the HEC-HMS preAdapter-->
				<command>
					<className>nl.wldelft.fews.adapter.hec.HmsPreAdapter</className>
					<binDir>$REGION_HOME$/Modules/HEC-HMS/binAdapter</binDir>
					<customJreDir>$CUSTOMJRE_32B_DIR$</customJreDir>
				</command>
				<arguments>
					<argument>%ROOT_DIR%/$CATCHMENT$/RunInfo.xml</argument>
				</arguments>
				<timeOut>600000</timeOut>
			</executeActivity>
			<!--Run the HEC-HMS model-->
			<executeActivity>
				<command>
					<executable>$REGION_HOME$/Modules/HEC-HMS/bin/HEC-HMS.cmd</executable>
				</command>
				<arguments>
					<argument>-s</argument>
					<argument>%ROOT_DIR%/$CATCHMENT$/$HMSproject$.script</argument>
					<argument>&gt; NULL</argument>
				</arguments>
				<logFile>
					<file>%ROOT_DIR%\$CATCHMENT$\$CATCHMENT$_HEC.log</file>
					<errorLinePattern>*ERROR*</errorLinePattern>
					<warningLinePattern>*WARNING*</warningLinePattern>
					<infoLinePattern>*NOTE*</infoLinePattern>
					<debugLinePattern>*DEBUG*</debugLinePattern>
				</logFile>
				<timeOut>1800000</timeOut>
				<ignoreDiagnostics>false</ignoreDiagnostics>
			</executeActivity>
			<!--Run the HEC-HMS postAdapter-->
Code Block
xmlxml
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by ICT (Stichting Deltares) -->
<generalAdapterRun xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/generalAdapterRun.xsd">
	<general>
		<rootDir>%REGION_HOME%/Modules/hechms</rootDir>
		<workDir>%ROOT_DIR%/bin</workDir>
		<exportDir>%ROOT_DIR%/UpperBlueNile/piInputTimeSeries</exportDir>
		<exportIdMap>IdExportHECHMS</exportIdMap>
		<importDir>%ROOT_DIR%/UpperBlueNile/piOutputTimeSeries</importDir>
		<importIdMap>IdImportHECHMS</importIdMap>
		<dumpFileDir>$GA_DUMPFILEDIR$</dumpFileDir>
		<dumpDir>%ROOT_DIR%/UpperBlueNile</dumpDir>
		<diagnosticFile>%ROOT_DIR%/UpperBlueNile/piDiagnostic.xml</diagnosticFile>
		<missVal>-901.0</missVal>
		<convertDatum>true</convertDatum>
	</general>
	<activities>
		<startUpActivities>
			<purgeActivity>
				<filter>%ROOT_DIR%/UpperBlueNile/piInputTimeSeries/*.*</filter>
			</purgeActivity>
			<purgeActivity>
				<filter>%ROOT_DIR%/UpperBlueNile/piOutputTimeSeries/*.*</filter>
			</purgeActivity>
			<purgeActivity>
				<filter>%ROOT_DIR%/UpperBlueNile/*.ds*</filter>
			</purgeActivity>
		</startUpActivities>
		<exportActivities>
			<!-- Export state (warm state)-->
			<exportStateActivity>
				<moduleInstanceId>UpperBlueNile_HEC-HMS_historical</moduleInstanceId>
				<stateExportDir>%ROOT_DIR%/UpperBlueNile/basinStates</stateExportDir>
				<stateConfigFile>%ROOT_DIR%/UpperBlueNile/State.xml</stateConfigFile>
				<stateLocations type="file">
					<stateLocation>
						<readLocation>UpperBlueNile_hist_state.state</readLocation>
						<writeLocation>UpperBlueNile_hist_state.state</writeLocation>
					</stateLocation>
				</stateLocations>
				<stateSelection>
					<warmState>
						<stateSearchPeriod unit="hour" start="-240" end="-1"/>
					</warmState>
				</stateSelection>
			</exportStateActivity>
			<!-- Export time series -->
			<exportTimeSeriesActivity>
				<description>Export rainfall as input for HecHms model</description>
				<exportFile>FEWS2DSS.xml</exportFile>
				<timeSeriesSets>
					<timeSeriesSet>
						<moduleInstanceId>Catchments_Aggregate_Precipitation_Historical</moduleInstanceId>
						<valueType>scalar</valueType>
						<parameterId>P.merged</parameterId>
						<locationId>UpperBlueNile</locationId>
						<timeSeriesType>external historical</timeSeriesType>
						<timeStep times="21:00"/>
						<relativeViewPeriod unit="day" startOverrulable="true" end="0"/>
						<readWriteMode>read only</readWriteMode>
					</timeSeriesSet>
				</timeSeriesSets>
				<checkMissing>true</checkMissing>
			</exportTimeSeriesActivity>
		</exportActivities>
		<executeActivities>
			<executeActivity>
				<command>
					<className>nl.wldelft.fews.adapter.hec.HmsPreAdapter<HmsPostAdapter</className>
					<binDir>%ROOT_DIR%<binDir>$REGION_HOME$/Modules/HEC-HMS/binAdapter</binDir>
					<customJreDir>$CUSTOMJRE_32B_DIR$</customJreDir>
				</command>
				<arguments>
					<argument>%ROOT_DIR%/work$CATCHMENT$/RunInfo.xml</argument>
				</arguments>
				<timeOut>120000<<timeOut>600000</timeOut>
				<<ignoreDiagnostics>true</executeActivity>ignoreDiagnostics>
			<executeActivity></executeActivity>
				<command>
					<executable>%WORK_DIR%/HEC-HMS.cmd</executable>
				</command></executeActivities>
		<importActivities>
			<!--Import States (Update runs)-->
				<arguments><importStateActivity>
					<argument>-s</argument><stateFile>
					<argument>%ROOT<importFile>%ROOT_DIR%/$CATCHMENT$/UpperBlueNile/UpperBlueNile.script </argument>
				</arguments>
				<timeOut>120000</timeOut>basinStates/$HMSproject$_out_state.state</importFile>
			</executeActivity>
			<executeActivity><relativeExportFile>$HMSproject$_state.state</relativeExportFile>
				<command></stateFile>
					<className>nl.wldelft.fews.adapter.hec.HmsPostAdapter</className><expiryTime multiplier="30" unit="day"/>
			</importStateActivity>
		<binDir>%ROOT_DIR%/binAdapter</binDir>
				</command>	<!--Import Time Series-->
				<arguments><importTimeSeriesActivity>
					<argument>%ROOT<importFile>%ROOT_DIR%/$CATCHMENT$/workpiOutputTimeSeries/RunInfosimulation.xml</argument>importFile>
				</arguments><timeSeriesSets>
					<timeOut>120000</timeOut><timeSeriesSet>
				</executeActivity>
		</executeActivities>
<moduleInstanceId>$MODULE_INSTANCE_ID$</moduleInstanceId>
			<importActivities>
			<!-- Import state --><valueType>scalar</valueType>
			<importStateActivity>
				<stateConfigFile>%ROOT_DIR%/UpperBlueNile/piOutputState.xml</stateConfigFile><parameterId>QR.sim</parameterId>
			</importStateActivity>
			<!-- Import HMS results-->
			<importTimeSeriesActivity>
				<description>Import XML file</description>
				<importFile>simulation.xml</importFile>
				<timeSeriesSets><locationSetId>HEC-HMS_$CATCHMENT$_flow_output</locationSetId>
						<timeSeriesType>simulated historical</timeSeriesType>
						<timeStep unit="hour" multiplier="6"/>
						<readWriteMode>add originals</readWriteMode>
					</timeSeriesSet>
					<timeSeriesSet>
						<moduleInstanceId>UpperBlueNile<moduleInstanceId>$MODULE_HEC-HMSINSTANCE_historical<ID$</moduleInstanceId>
						<valueType>scalar</valueType>
						<parameterId>Q<parameterId>HG.simulated.historical<sim</parameterId>
						<locationId>900012</locationId><locationSetId>HEC-HMS_$CATCHMENT$_stage_output</locationSetId>
						<timeSeriesType>simulated historical</timeSeriesType>
						<timeStep times unit="hour" multiplier="21:006"/>
						<readWriteMode>add originals</readWriteMode>
					</timeSeriesSet>
				</timeSeriesSets>
			</importTimeSeriesActivity>
		</importActivities>
	</activities>
</generalAdapterRun>

The hecras hechms files (.basin, .contol, .gage, .hms, .pdata, .run, .script, .met, .dss etc.)are saved in the /Config/ModuleDataSet directory. These are copied to the /Model/hecrashechms/<model> directory during the exportDataSet activity in the General Adapter file.