SWAT Pre-adapter
The pre-adapter processes the following NetCDF files from FEWS to be used in the model run.
- Meteorological forcing data:
- hmd.nc (SWAT file: hmd.hmd)
- pcp1.nc (SWAT file: pcp1.pcp)
- pet.nc (SWAT file: pet.txt)
- slr.nc (SWAT file: slr.slr)
- tmp1.nc (SWAT file: tmp1.tmp)
- wnd.nc (SWAT file: wnd.wnd)
Point source forcing data (written to SWAT file #p.dat):
- WQ_BACTLPCNST.nc
- WQ_BACTPCNST.nc
- WQ_CBODCNST.nc
- WQ_CHLACNST.nc
- WQ_CMTL1CNST.nc
- WQ_CMTL2CNST.nc
- WQ_CMTL3CNST.nc
- WQ_DISOXCNST.nc
- WQ_FLOCNST.nc
- WQ_MINPCNST.nc
- WQ_NH3CNST.nc
- WQ_NO2CNST.nc
- WQ_NO3CNST.nc
- WQ_ORGNCNST.nc
- WQ_ORGPCNST.nc
- WQ_SEDCNST.nc
- WQ_SOLPSTCNST.nc
- WQ_SRBPSTCNST.nc
The pre-adapter also updates the SWAT master file (i.e. writing starttime and endtime, read from the run_info.xml).
- file.cio
SWAT Post-adapter
The post-adapter uses the following files and the results of the model run to create NetCDF files to load into FEWS.
- file.cio (master file)
- schema.ini
- this file contains information on how to read the model's output files because the column width's aren't fixed and can differ per modelset
(output.rch > reach.nc, output.sed > sediment.nc, output.sub > subbasin.nc)
- this file contains information on how to read the model's output files because the column width's aren't fixed and can differ per modelset
GeneralAdapterRun Example Configuration
The following gives an example of how to set up the GeneralAdapterRun file for SWAT in FEWS using the SWAT model pre and post-adapters. The GeneralAdapterRun file follows the general structure as described here.
General
This section specifies general information regarding the module such as version number, file directories, missing values, and time zone information.
<general> <description>SWAT Model for $BASIN$</description> <piVersion>1.8</piVersion> <rootDir>%REGION_HOME%/Modules/SWAT/$BASIN$</rootDir> <workDir>%ROOT_DIR%/work-dir</workDir> <exportDir>%ROOT_DIR%/export-dir</exportDir> <exportDataSetDir>%ROOT_DIR%</exportDataSetDir> <exportIdMap>IdExportSWAT</exportIdMap> <importDir>%ROOT_DIR%/import-dir</importDir> <importIdMap>IdImportSWAT</importIdMap> <dumpFileDir>$GA_DUMPFILEDIR$</dumpFileDir> <dumpDir>%ROOT_DIR%</dumpDir> <diagnosticFile>%ROOT_DIR%/swat_adapter_log.xml</diagnosticFile> <missVal>-999.0</missVal> <timeZone> <timeZoneName>MST</timeZoneName> </timeZone> </general>
Start-Up Activities
This section can be used to clear data from previous runs.
<startUpActivities> <purgeActivity> <filter>%ROOT_DIR%/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/work-dir/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/import-dir/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/export-dir/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/TablesOut/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/TablesIn/*.*</filter> </purgeActivity> </startUpActivities>
Export Activities
This section specifies the data to be exported from FEWS as input to the module and properties to run the model. Properties include the file.cio and schema.ini as reference to input files and the file locations the model should output.
<exportActivities> <exportDataSetActivity> <moduleInstanceId>SWAT_$BASIN$</moduleInstanceId> </exportDataSetActivity> <!-- --> <exportNetcdfActivity> <exportFile>pcp1.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessACISScalar</moduleInstanceId> <valueType>scalar</valueType> <parameterId>PC.obs</parameterId> <locationId>3036086</locationId> <locationId>3036205</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>tmp1.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessACISScalar</moduleInstanceId> <valueType>scalar</valueType> <parameterId>TA.obs</parameterId> <locationId>3036086</locationId> <locationId>3036205</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>hmd.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessACISScalar</moduleInstanceId> <valueType>scalar</valueType> <parameterId>XR.obs</parameterId> <locationId>3036086</locationId> <locationId>3036205</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>wnd.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessACISScalar</moduleInstanceId> <valueType>scalar</valueType> <parameterId>US.obs</parameterId> <locationId>3036086</locationId> <locationId>3036205</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>slr.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessACISScalar_historical</moduleInstanceId> <valueType>scalar</valueType> <parameterId>RW.obs.day</parameterId> <locationId>3036086</locationId> <locationId>3036205</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>pet.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessSWAT</moduleInstanceId> <valueType>scalar</valueType> <parameterId>EA.obs</parameterId> <locationId>3036086</locationId> <locationId>3036205</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <!-- WQ data exports --> <exportNetcdfActivity> <exportFile>WQ_FLOCNST.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessWQ_historical</moduleInstanceId> <valueType>scalar</valueType> <parameterId>Q.sim</parameterId> <locationSetId>WQ_Stations</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>WQ_SEDCNST.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessWQ_historical</moduleInstanceId> <valueType>scalar</valueType> <parameterId>SuspSed</parameterId> <locationSetId>WQ_Stations</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>WQ_NO3CNST.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessWQ_historical</moduleInstanceId> <valueType>scalar</valueType> <parameterId>NO3</parameterId> <locationSetId>WQ_Stations</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>WQ_CBODCNST.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessWQ_historical</moduleInstanceId> <valueType>scalar</valueType> <parameterId>CBOD</parameterId> <locationSetId>WQ_Stations</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>WQ_DISOXCNST.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessWQ_historical</moduleInstanceId> <valueType>scalar</valueType> <parameterId>DO</parameterId> <locationSetId>WQ_Stations</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>WQ_CHLACNST.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessWQ_historical</moduleInstanceId> <valueType>scalar</valueType> <parameterId>CHLA</parameterId> <locationSetId>WQ_Stations</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportNetcdfActivity> <exportFile>WQ_SOLPSTCNST.nc</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PreprocessWQ_historical</moduleInstanceId> <valueType>scalar</valueType> <parameterId>PTO4</parameterId> <locationSetId>WQ_Stations</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep id="day_MST"/> <relativeViewPeriod unit="day" end="0" startOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> </exportNetcdfActivity> <exportRunFileActivity> <exportFile>%ROOT_DIR%/run_info.xml</exportFile> <properties> <string key="master-watershed" value="%WORK_DIR%/file.cio"/> <string key="schema" value="%WORK_DIR%/schema.ini"/> <string key="reach" value="%WORK_DIR%/output.rch"/> <string key="reach-output" value="%ROOT_DIR%/export-dir/reach.nc"/> <string key="sediment" value="%WORK_DIR%/output.sed"/> <string key="sediment-output" value="%ROOT_DIR%/export-dir/sediment.nc"/> <string key="subbasin" value="%WORK_DIR%/output.sub"/> <string key="subbasin-output" value="%ROOT_DIR%/export-dir/subbasin.nc"/> </properties> </exportRunFileActivity> </exportActivities>
Execute Activities
This section calls the SWAT pre-adapter, SWAT executable, and SWAT post-adapter. Note: the run_info.xml is passed to the adapters.
<executeActivities> <executeActivity> <description>run SWAT preAdapter</description> <command> <className>nl.deltares.fews.swatadapter.SwatPreAdapter</className> <binDir>%ROOT_DIR%/binAdapter</binDir> </command> <arguments> <argument>%ROOT_DIR%/run_info.xml</argument> </arguments> <timeOut>300000</timeOut> <ignoreDiagnostics>false</ignoreDiagnostics> </executeActivity> <executeActivity> <description>run SWAT model</description> <command> <executable>%WORK_DIR%/swat2012.exe</executable> </command> <console> </console> <timeOut>300000</timeOut> <ignoreDiagnostics>true</ignoreDiagnostics> </executeActivity> <executeActivity> <description>run SWAT postAdapter</description> <command> <className>nl.deltares.fews.swatadapter.SwatPostAdapter</className> <binDir>%ROOT_DIR%/binAdapter</binDir> </command> <arguments> <argument>%ROOT_DIR%/run_info.xml</argument> </arguments> <timeOut>300000</timeOut> <ignoreDiagnostics>false</ignoreDiagnostics> </executeActivity> </executeActivities>
Import Activities
This section imports data into FEWS from the model run. Data can be imported from the reach.nc, sediment.nc, and subbasin.nc files.
<importActivities> <importNetcdfActivity> <importFile>reach.nc</importFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>SWAT_Basin_Historic</moduleInstanceId> <valueType>scalar</valueType> <parameterId>QR.sim</parameterId> <locationId>LocationA</locationId> <timeSeriesType>simulated historical</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> <timeSeriesSet> <moduleInstanceId>SWAT_Basin_Historic</moduleInstanceId> <valueType>scalar</valueType> <parameterId>NO3.load</parameterId> <locationId>LocationA</locationId> <timeSeriesType>simulated historical</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> <timeSeriesSet> <moduleInstanceId>SWAT_Basin_Historic</moduleInstanceId> <valueType>scalar</valueType> <parameterId>NO3</parameterId> <locationId>LocationA</locationId> <timeSeriesType>simulated historical</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> <timeSeriesSet> <moduleInstanceId>SWAT_Basin_Historic</moduleInstanceId> <valueType>scalar</valueType> <parameterId>TW.sim</parameterId> <locationId>LocationA</locationId> <timeSeriesType>simulated historical</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </timeSeriesSets> </importNetcdfActivity> </importActivities>