Versions Compared

Key

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

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)

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.

Code Block
languagexml
titleGeneral
	<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.

Code Block
languagexml
titleStart-Up Activities
		<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.

Code Block
languagexml
titleExport Activities
 		 <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.

Code Block
languagexml
titleExecute Activities
 		 <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.

Code Block
languagexml
titleImport Activities
 		 <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>