Versions Compared

Key

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

...

Code Block
languagexml
titlePI-run.xml
<?xml version="1.0" encoding="UTF-8"?>
<Run 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_run.xsd" version="1.5">
    <timeZone>0.0</timeZone>
    <startDateTime date="2017-03-26" time="06:00:00"/>
    <endDateTime date="2017-03-29" time="06:00:00"/>
    <time0 date="2017-03-26" time="06:00:00"/>
    <workDir>X:\XXX\DimrPreAdapterTest\piRunFile1d2dRTC\dimr_model</workDir>
    <inputTimeSeriesFile>X:\XXX\piRunFile1d2dRTC\Input\export_pi_flow1d.xml</inputTimeSeriesFile>
    <inputTimeSeriesFile>X:\XXX\piRunFile1d2dRTC\Input\export_pi_fm.xml</inputTimeSeriesFile>
    <inputTimeSeriesFile>X:\XXX\piRunFile1d2dRTC\Input\export_pi_fbc.xml</inputTimeSeriesFile>
    <outputDiagnosticFile>notUsed.xml</outputDiagnosticFile>
    <properties>
		<!-- Reference to dimr configuration file, relative to parent directory of the/this pi-run.xml file -->
		<!-- This file will be read to see which components of the dimr are used and find references to .md1d, .mdu, flow1d2d.ini and/or fbc runtime config -->
        <string key="dimrConfigFile" value="../dimr_config.xml"/>
        <!-- Specify which of the above time series xml files is meant for flow1d --> 
        <string key="piFileForFlow1d" value="inputTimeSeriesFile-1"/>
        <!-- Overwrite RstInterval value in the .mdu file with this property --> 
        <string key="restartIntervalForFm" value="600"/>
        <!-- Specify which of the above time series xml files is meant for FM --> 
        <string key="piFileForFm" value="inputTimeSeriesFile-2"/>
        <!-- Specify which of the above time series xml files is meant for FBC (rtc1) --> 
        <string key="piFileForFbc" value="inputTimeSeriesFile-3"/>
        <!-- Will write the pi time series values for fbc as binary in timeseries_import.bin-->
        <string key="piTimeSeriesAsBin" value="true"/>
		<!-- Will convert the specified boundary NetCDF file to ASCII write the pi time series values for fbc as binary in timeseries_import.bin-->
		<string key="dWaveNetcdfBoundaryFileToConvert" value="input/boundary.nc"/>
		<!-- Optional settings for conversion of boundary file to ASCII, values shown here are default-->
        <string key="dWaveBoundaryFilePrefix" value="WW3_"/>
		<string key="dWaveBoundaryFileNumberOfCopies" value="3"/>


    </properties>
</Run>

The dimr configuration file will be read to find the components that are being used so it knows which files need to be changed.


Important: the adapter doesn't support timezones. Therefore, the timezone in the General Adapter should be set at +00:00 and the timezones in the model too. This means for example for D-Flow FM that in the mdu file the Tzone property is set to 0.

Important: if the exported timeseries from the GA are exceeding the T0 (like in case of RR is often the case with daily evaporation timeseries), use the <ignoreRunPeriod> option in the export timeseries activity to ignore the timeseries that exceed the T0. This ensures that the modelstate is imported into FEWS on the proper time (in most cases T0) instead of the last timestamp. See also 05 General Adapter Module - DELFT-FEWS Documentation - Deltares Public Wiki

The dimr configuration file will be read to find the components that are being used so it knows which files need to be changed.

Code Block
languagexml
titledimr_config.xml
<?xml version="1.
Code Block
languagexml
titledimr_config.xml
<?xml version="1.0" encoding="UTF-8"?>
<dimrConfig xsi:schemaLocation="http://schemas.deltares.nl/dimr http://content.oss.deltares.nl/schemas/dimr-1.0.xsd" xmlns="http://schemas.deltares.nl/dimr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <documentation>
    <fileVersion>1.00</fileVersion>
    <createdBy>Deltares, Coupling Team</createdBy>
    <creationDate>2018-07-07T14:49:48.9157275Z</creationDate>
  <control>
    <parallel>
      <startGroup>
        <time>1 60 2678500</time>
        <coupler name="1d2d_to_rtc"/>
        <start name="real-time control"/>
        <coupler name="rtc_to_1d2d"/>
      </startGroup>
      <start name="1d2d"/>
    </parallel>
  </control>
  <component name="real-time control">
    <library>FBCTools_BMI</library>
    <workingDir>rtc</workingDir>
    <inputFile>.</inputFile>
  </component>
  <component name="1d2d">
    <library>flow1d2d</library>
    <workingDir>1d2dcoupler</workingDir>
    <inputFile>1d2d.ini</inputFile>
  </component>
  <coupler name="rtc_to_1d2d">
    <sourceComponent>real-time control</sourceComponent>
    <targetComponent>1d2d</targetComponent>
    <item>
      <sourceName>output_Langel_zu_Crest level (s)</sourceName>
      <targetName>water flow 1d/weirs/Langel_zu/structure_crest_level</targetName>
    </item>
    <item>
      <sourceName>output_02_Wehr_Duis~~1_Crest level (s)</sourceName>
      <targetName>water flow 1d/weirs/02_Wehr_Duis~~1/structure_crest_level</targetName>
    </item>
  </coupler>
  <coupler name="1d2d_to_rtc">
    <sourceComponent>1d2d</sourceComponent>
    <targetComponent>real-time control</targetComponent>
    <item>
      <sourceName>water flow 1d/observations/P_Langel/water_level</sourceName>
      <targetName>input_P_Langel_Water level (op)</targetName>
    </item>
    <item>
      <sourceName>water flow 1d/observations/RuhrOWDuisburg/water_level</sourceName>
      <targetName>input_RuhrOWDuisburg_Water level (op)</targetName>
    </item>
  </coupler>
</dimrConfig>


...

It will read "ExtForceFileNew" value and "ExtForceFile" specifically for wind forcing.

Code Block
titleFind .ext file
[external forcing]
ExtForceFile      =
ExtForceFileNew   = FlowFM_bnd.ext

...

Other parameters like wind, precipitation and atmospheric pressure can be supplied by FEWS only for 2D using a netcdf export directly to the file-location the model expects the nc-file to be. In the model you can use the old-style ext format file (in mdu keyword ExtForceFile) to use these netcdf-files. How to do this can be found in the D-Flow FM manual.

Since 2022.02 there is support for windxy tim files. Only 1 timeseries for windspeed and 1 for winddirection are supported in the pi xml file. The adapter looks at the parameterIds "Windspeed" and "Winddirection" and replaces the whole tim file with the values from these timeseries including new timesteps referenced to the refdate in the mdu file. It is advised to set METHOD=7 in the .ext file for wind timeseries.

In the .mdu file itself it will replace Tstart, In the .mdu file itself it will replace Tstart, Tstop and RstInterval with the appropriate values.

...

Important: notice that the above snippet starts at number 125. You need the lines till 125 in the sobek_3b.fnm file for it to work. If you are missing the lines for numbers 121 till 124, see the snippet below to add them. Another very important step after adding the lines is to make an empty file in the rr model directory called CacheFile.txt. If this file doesn't exists, this could lead the model to use infinity precipitation values!

Code Block
'wqrtc.his'                               *121. coupling WQ salt RTC
'BoundaryConditions.bc'                           *122. RR Boundary conditions file for SOBEK3
'ASCIIRestartOpenDA.txt'                          *123. Optional RR ASCII restart (test) for OpenDA
'CacheFile.txt'                   *124. Optional LGSI cachefile

...

Code Block
title1D2D ini
[Model]
    type                  = Flow1D              
    name                  = water flow 1d       
    directory             = ..\dflow1d          
    modelDefinitionFile   = water flow 1d.md1d  

[Model]
    type                  = FlowFM              
    name                  = FlowFM              
    directory             = ..\dflowfm           = ..\dflowfm          
    modelDefinitionFile   = FlowFM.mdu

It will extract .md1d file (with directory and model definition file relative to parent dir of the .ini file) by looking for model = Flow1D

It will extract .mdu file (with directory and model definition file relative to parent dir of the .ini file) by looking for model = FlowFM

It will process the .md1d and .mdu file the same way as described in DFlow1D and DFlowFM component

D-Waves component

Will be used if library "wave" is configured

Code Block
languagexml
titleFlow1D2D component
  <component name="1d2d">
	<library>wave</library>
	<workingDir>wave</workingDir>
	<inputFile>stmartin.mdw</inputFile>
  </component>

It will look for the .mdw file in working directory relative to the parent dir of dimr config file.

At this point the DIMR adapter only performs a conversion of the boundary conditions NetCDF file to ASCII format. The relative path of the netCDF file to convert must be provided in the PI runinfo file using the dWaveNetcdfBoundaryFileToConvert property as shown in the example runinfo file above. Two additional properties are provided, to summarize:

...


    modelDefinitionFile   = FlowFM.mdu

It will extract .md1d file (with directory and model definition file relative to parent dir of the .ini file) by looking for model = Flow1D

It will extract .mdu file (with directory and model definition file relative to parent dir of the .ini file) by looking for model = FlowFM

It will process the .md1d and .mdu file the same way as described in DFlow1D and DFlowFM component


D-Waves component

Will be used if library "wave" is configured

Code Block
languagexml
titleFlow1D2D component
  <component name="1d2d">
	<library>wave</library>
	<workingDir>wave</workingDir>
	<inputFile>stmartin.mdw</inputFile>
  </component>

It will look for the .mdw file in working directory relative to the parent dir of dimr config file.

At this point the DIMR adapter only performs a conversion of the boundary conditions NetCDF file to ASCII format. The relative path of the netCDF file to convert must be provided in the PI runinfo file using the dWaveNetcdfBoundaryFileToConvert property as shown in the example runinfo file above. Two additional properties are provided, to summarize:

  • dWaveNetcdfBoundaryFileToConvert = relative path of the boundary conditions netCdf file
  • dWaveBoundaryFilePrefix = prefix for the filenames of the output ASCII files, the default prefix is  "WW3_"
  • dWaveBoundaryFileNumberOfCopies = the number of file copies to provide for each boundary, the default number is 3


Installing and running the Delft3D-FM model on Windows and Linux

A Delft3D-FM model can be run on Windows and LINUX. Installation of the model binaries on Windows and Linux can be straight forward when simple models are run on single VM's. A typical Delft-FEWS configuration solution can be the following.

  • Create a ModuleDataSet "D3D_bin_Windows.zip" with the Windows binaries
  • Create a ModuleDataSet "D3D_bin_Linux.zip" with the Linux binaries
  • Create a ModuleDataSet "D3D_bin_adapter.zip" with the Delft3D Dimr Java Adapter
  • In your fss_windows_clientConfig.xml file add a line:  <autoExportModuleDataSet name="D3D_bin_Windows" exportDir="Modules"/>
  • In your fss_linux_clientConfig.xml file add a line: <autoExportModuleDataSet name="D3D_bin_Linux" exportDir="Modules"/>
  • In your Windows and Linux clientConfig.xml file add a line:  <autoExportModuleDataSet name="D3D_bin_adapter" exportDir="Modules"/>
  • In your Delft-FEWS General Adapter executeActivity element, start the Delft3D model with the following command  <executable>%REGION_HOME%/Modules/Delft3DFM/bin_delft3dfm/$D3D_MODEL_EXE$</executable>
  • In your fss_linux_global.properties add a line: D3D_MODEL_EXE=/bin/run_dimr.sh
  • In your fss_windows_global.properties add a line: D3D_MODEL_EXE=dimr\\scripts\\run_dimr.bat

When a Delft-FEWS FSS is started the clientConfig.xml file automatically unzips the correct Delft3D-FM binaries to your \Modules folder ( \Delft3DFM). When the Delft3D-FM model is started in a workflow from the General Adapter the correct script is started to run the DIMR.

...