Table of Contents |
---|
How to set up a Sobek-RURAL Model in FEWS
...
Output
To make sure the amount of output produced by SOBEK is no more than needed, it is important to uncheck all unnecessary output creation. If only water depth is needed in 2D then only have this option checked.
Settings inside the SOBEK module directory
...
type | description | ||
---|---|---|---|
undefined | not allowed as type | ||
rainfallfile precipitation, used as meteo event file, should be a single PI file | converts full contents of the file into RR rainfall file. All series should have same time stamps. File name will be *.bui and will be written in cmtwork. Case registry will be updated, so the file will be used in the computation | ||
rrrestart | rr restartfile (state file) | ||
flowrestart | flow restart (state file) | ||
flow_hc_boundary | H boundary with constant value | ||
flow_ht_boundary | H boundary with timeSeries | ||
flow_qc_boundary | Q boundary with constant value | ||
flow_qt_boundary | Q boundary with timeSeries | ||
flow_htref_boundary | H boundary with timeSeries from ref.table | ||
flow_qtref_boundary | Q boundary with timeSeries from ref.table | ||
windfile | wind, should be a single PI file | ||
flow_latndc | lateral flow on connection node, constant value | ||
flow_latndt | lateral flow on connection node, time series | ||
flow_latndref | lateral flow on connection node, time series from ref.table | ||
flow_latbrc | lateral flow on node at branch, constant value | ||
flow_latbrt | lateral flow on node at branch, time series | ||
flow_latbrref | lateral flow on node at branch, time series from ref.table | ||
flow_latdic | diffuse lateral flow on branch, constant value | ||
flow_latdit | diffuse lateral flow on branch, time series | ||
flow_latdiref | diffuse lateral flow on branch, time series from ref.table | ||
flsboundline_hc | H line boundary on grid, constant value | ||
flsboundline_ht | H line boundary on grid, time series | ||
flsboundline_qc | Q line boundary on grid, constant value | ||
flsboundline_qt | Q line boundary on grid, time series | ||
flsboundnode_hc | H boundary node on grid, constant value | ||
flsboundnode_ht | H boundary node on grid, time series | ||
flsboundnode_qc | Q boundary node on grid, constant value | ||
flsboundnode_qt | Q boundary node on grid, time series | ||
flsinitpoint | initial condition point at grid | ||
rr_up_seepdef | rainfall-runoff seepage definition ID, (no timeSeries!) | ||
rr_up_stordef | rainfall-runoff storage definition ID, (no timeSeries!) | ||
rr_up_alfadef | rainfall-runoff alfa drainage coeff. definition ID, (no timeSeries!) | ||
rr_up_infdef | rainfall-runoff infiltratie definition ID (no timeSeries!) | ||
rr_up_initdef | rainfall-runoff initial definition ID (no timeSeries!) | ||
rr_up_ernstdef | rainfall-runoff ernst drainage coeff. definition ID, (no timeSeries!) | ||
rr_insodemandtable | rainfall-runoff industrial demand time series, like a lateral flow. Note: a dummy salt concentration of 0 mg/l will be used! | ||
rr_insodischargetable | rainfall-runoff insdustrial discharge time series, like a lateral flow | ||
evapfile | evaporation, should be a single PI file converts full contents of the file into RR evaporation file. All series should have same time stamps. File name will be *.evp and will be written in cmtwork. Case registry will be updated, so the file will be used in the computation | ||
rtc_par3 | RTC, parameter3 record ID | ||
rtc_rule | RTC, rule record ID | ||
rtc_maxf | RTC, maxf record ID | ||
rtc_engd | RTC, engd record ID | ||
flow_timecontroller_tiwithbl | 1D flow structure time controller, time series | ||
flow_intervalcontrollersetpoint_tiwithbl | 1D flow structure interval controller setpoint, time series | ||
flow_controllerpidsetpoint_tiwithbl | 1D flow structure PID setpoint, time series | ||
1dwq_fraction_concentration_tiwithbl | 1d waq substance concentration for fraction type, time series | ||
1dwq_boundary_concentration_tiwithbl | 1d waq substance concentration for local boundary, time series | ||
2dwq_fraction_concentration_tiwithbl | 2d waq substance concentration for fraction type, time series | ||
2dwq_boundary_concentration_tiwithbl | 2d waq substance concentration for local boundary, time series | ||
fls_restart | fls restart / state | ||
1dwq_restart | 1d waq restart / state | ||
2dwq_restart | 2d waq restart / state | ||
1d_flow_dam | 1d flow weir object, representing a obstruction in the river | ||
1d_flow_dambreak_hc_boundary, 1d_flow_dambreak_connectionnode | do exactly the same: create a breach in the dike | ||
rr_temperature | temperature for the RR module, should be a single PI file | ||
1d_flow_lateral_dat_file | one single PI file that will be completely converted to all laterals, especially usefull for a large number of laterals | rr_boundarytable | Converts the complete contents of a PI xml file into a 1D flow lateral.dat file. The PI locationID should be used to map to the lateral IDs (any type). The parameter (and qualifier) is not used. All series in the XML should exist as definition with a time series table in the SOBEK lateral .dat file. Vice versa is not needed, as SbkBatch only updates the definitions. |
rr_boundarytable | rainfall-runoff boundary node, water level time table. Note: a dummy salt concentration of 0 mg/l will be used! | ||
1d_flow_boundary_dat_file | Converts the complete contents of a PI xml file into a 1D flow Boundary.Dat file. The PI locationID should be used to map to the boundary IDs. The parameter (and qualifier) is not used. All series in the XML should exist as definition with a time series table in the SOBEK boundary.dat file. Vice versa is not needed, as SbkBatch only updates the definitions. | ||
1d_flow_control_def_file | Converts the complete contents of a PI xml file into a 1D flow control.def file. The PI locationID should be used to map to the control def IDs (of time controller type). The parameter (and qualifier) is not used. All series in the XML should exist as definition with a time series table in the SOBEK control.def file. Vice versa is not needed, as SbkBatch only updates the definitions. | ||
1d_flow_profile_def | changes the reference to a cross section definition in profile.dat. The sobekObjectId should refer to the record in the profile.dat, while the classFile(s) refer to the records in the profile.def. Typically used in batching runs with varying cross sections per run. | ||
greenhouse_water_usage_file | Convert the complete contents of a PI xml file into the \sobek\fixed\3b\KasGebrData.Dat file, which is referred to in the sbkbatch.ini key [General]KasGebrDataFile=.... In delft_3b.ini [Options]NewFormatKasdata should be -1 and greenhouse node definitions should be setup to using this new format (which is not supported by the GUI). All series in the XML are converted to update existing definitions in the KasGebrData.Dat. Note that this file is not register to in the case registry ,so updating this file may affect other cases too. Only definition with single column tables are supported. The PI locationID should be used to map to the kasgebr IDs . The parameter (and qualifier) is not used. All series in the XML should exist as definition with a time series table in the SOBEK kasgebr file. Vice versa is not needed, as SbkBatch only updates the definitions. | ||
rr_runoff_rnf | Converts the complete contents of a PI xml file into a *.rnf file. Can only be used in case also a rainfallfile is used, so sbkbatch can write it to the same base file name as the RR module uses that. | rainfall-runoff boundary node, water level time table. Note: a dummy salt concentration of 0 mg/l will be used!
Flow_dam and Flow_dambreak should be triggered by time series with non-missing values. The flow_dam should have timeseries where the location id is equal to the reachsegment id. The adapter creates the weir/dam at this segment. The time series values represent the height of the weir. This is automatically added to the bed level to get a correct crest level of the weir.
...
In the 'jobs' section nothing needs to be changed.
It should be:
Code Block | ||||
---|---|---|---|---|
| ||||
<jobs>
<job>
<jobName>Sobek historical run</jobName>
<storeDir/>
<parameter>
<classIndex>1</classIndex>
</parameter>
</job>
</jobs>
|
...
In the 'mapStack' part the 2D maps are put together in a so called map stack. The generalAdapter will import these map stacks as a grid timeSeries.
Example:
Code Block | ||||
---|---|---|---|---|
| ||||
<mapStack>
<fileName>output\dm1dmapstack.xml</fileName>
<fileMask>dm1d????.asc</fileMask>
<geoDatum>Rijks Driehoekstelsel</geoDatum>
<locationId>map</locationId>
<parameterId>InundationDepth</parameterId>
<timeStep>unit="hour" multiplier="1"</timeStep>
<module>2dflow</module>
<mapStackActive>true</mapStackActive>
</mapStack>
|
...
The last section in the SOBEK_Adapter.xml file is 'states'. This describes the read locations and writelocations of the model states. This is similar to other external modules.
RR states: * rrr
1D states: *.rda, *.rdf
2D states: *.fls
WQ states: *.res
Example:
Code Block | ||||
---|---|---|---|---|
| ||||
<states>
<stateXmlOutputFile>States\Outputstates.xml</stateXmlOutputFile>
<state>
<readLocation>States\Input.rda</readLocation>
<writeLocation>States\Output.rda</writeLocation>
</state>
<state>
<readLocation>States\Input.rdf</readLocation>
<writeLocation>States\Output.rdf</writeLocation>
</state>
<state>
<readLocation>States\Input.fls</readLocation>
<writeLocation>States\Output.fls</writeLocation>
</state>
<state>
<readLocation>States\1Dlevels-in.xyz</readLocation>
<writeLocation>States\1Dlevels-out.xyz</writeLocation>
</state>
<state>
<readLocation>States\Input.rrr</readLocation>
<writeLocation>States\Output.rrr</writeLocation>
</state>
</states>
|
...
Please make sure the GA run is configured to set the missing value definition in the XML files it exports to -999.99 and not the default NaN. This should be set in general section, please see the example below. If NaN is used as missing value definition the SOBEK adapter will complain about missing value when there is 0.0 precipitation.
Code Block | ||||
---|---|---|---|---|
| ||||
<general>
<rootDir>$REGION_HOME$/Modules/Sobek/Singapore</rootDir>
<workDir>%ROOT_DIR%</workDir>
<exportDir>%ROOT_DIR%/Input</exportDir>
<exportIdMap>IdExportSobek</exportIdMap>
<importDir>%ROOT_DIR%/Output</importDir>
<importIdMap>IdImportSobekForecast</importIdMap>
<dumpFileDir>$GA_DUMPFILEDIR$</dumpFileDir>
<dumpDir>%ROOT_DIR%</dumpDir>
<diagnosticFile>%ROOT_DIR%/Logs/diagnostics.xml</diagnosticFile>
<missVal>-999.99</missVal>
<convertDatum>true</convertDatum>
<timeZone>
<timeZoneOffset>+08:00</timeZoneOffset>
</timeZone>
</general>
|
...
The first option is the preferred one as it guarantees that all Case Management is correct. However, it requires quite a lot of configuration as all the possible workingdirectories have to be pre-configured. Instead of one, for all the ensemble members a working directory should be prepared. In the General Adapter you should link to these directories by using
<rootDir>$REGION_HOME$/Modules/Sobek/Singapore_%ENSEMBLE_MEMBER_INDEX%</rootDir>.
See also 19 Parallel running of ensemble loops and activities on one forecasting shell instance.
The second option is more advanced but faster and especially useful for small models where the CMT activities are a significant part of the simulation time. Next to that the configuration is much easier as only one temp directory has to be specified.
In the General Adapter you specify only <rootDir>%TEMP_DIR%</rootDir> where the TEMP_DIR will be defined as the system TEMP_DIR (or defined in the global.properties) and an added unique subdirectory. In case your system TEMP_DIR variable is "c:\windows\Temp" the General Adapter will use as TEMP_DIR in each particular instance of the General Adapter (i.e. per ensemble member) TEMP_DIR = "C:\windows\temp\<FSS><ModuleInstance><ENSEMBLE_MEMBER_INDEX>_<threadId>."
In this configuration it is quite useful to have no CMT activities anymore. Therefore define in the SBKBATCH.INI the key [General]RunFromTempDirWithoutCMT=-1. Then you need to configure:
- a CMTWORK and WORK directory where all the files are available already
- FNM files in the CMTWORK that has only relative paths or links to files that are not specific to the actual run (like language files)
use as [General]SimulateCall and [General]SimulateCallRtnFile directly the required program or a batch file that runs multiple programs. For example if you need to run only the RR module, you define:
Code Block [General} SimulateCall=\Sobek212\Programs\3b\sobek_3b.exe sobek_3b.fnm sobek_3b.rtn SimulateCallRtnFile=sobek_3b.rtn
- save the whole setup in a moduleDataSet that will be exported before starting the simulation
...
This may happen if sbkbatch cannot write it's diagnostics file. Check if the directory is present and if it is readable by the adapter. The location of the diagnostics file is set in the general section of the xml configuration file:
Code Block | ||||
---|---|---|---|---|
| ||||
<fewsDiagnosticsFile>Logs\Diagnostics.xml</fewsDiagnosticsFile>
|
...