SWAT+ methods — water temperature
Channel water temperature in SWAT+: what the model computes
Every SWATGenX model runs the SWAT+ channel water-temperature model on its default parameters. Temperature does not yet route downstream between reaches in the engine we ship: each reach computes its own heat balance, and the reach below it does not receive that result. This page explains what the model calculates, what we fixed in it, and what it does not do.
A schematic of the engine we ship, not model output.
What the model calculates
For each channel and each day, the engine:
- Mixes the water entering the reach. Snowmelt, surface runoff, lateral flow and groundwater are each given a temperature from a lagged average of air temperature, and mixed by flow with the water arriving from up to two upstream channels. That upstream water arrives at an air-temperature estimate, not at the temperature computed for the reach above.
- Finds the equilibrium temperature the water would reach with the atmosphere, from incoming short-wave radiation (reduced by a shade factor), long-wave radiation corrected for cloud, dew point, and a heat-exchange coefficient that rises with wind speed.
- Moves the water toward that equilibrium over the time it takes to travel through the reach.
The result is written to each channel's daily, monthly and yearly output. In the text files it is the water_temp column. In NetCDF output, where variables carry numbers rather than names, it is v58, and v59 holds the same value.
Whose model it is
The temperature model is upstream SWAT+ work. The component-mixing model is by Kristin Peters, and the equilibrium-temperature heat exchange by Efrain Noa-Yarasca, with the wind function from Edinger et al. (1974). We ship it as part of the SWAT+ engine we build and maintain.
What we fixed
We found two faults in the engine and fixed both. Each fix is described in the engine source.
- The result never reached the output. Two later steps overwrote the heat balance with a simple air-temperature estimate, so the reported temperature was that estimate. From engine version v1.0-50, the reported temperature is the heat-balance result.
- An unstable calculation step. The step toward equilibrium could overshoot when flow was low, and the channel storage temperature reached more than 1,000 °C. We replaced it with the exact solution, which is stable at any flow.
On a 2,058-channel model of the White River in Michigan, the fixes took the number of channel-days above 60 °C in the storage temperature from 55,113 to zero. They also widened the July spread of outflow temperature between reaches (the interquartile range) from 0.26 °F (0.15 °C) to 8.1 °F (4.5 °C).
Models run on an engine older than v1.0-50 report the air-temperature estimate under the same column name.
What the model does not do
- Route temperature downstream. A reach does not pass its computed temperature to the reach below. A cold tributary or a shaded reach does not change the temperature downstream of it.
- Claim accuracy. The temperature output has not been validated against observed water temperature. We make no claim about how closely it matches a river.
- Use a calibrated setup. Every model runs the default temperature parameters.
- Link to groundwater. Groundwater inflow is given a temperature from lagged air temperature, not from an aquifer model.
- Model reservoirs or ice. There is no reservoir or impoundment temperature, and the model floors water temperature just above 0 °C, so it does not represent ice.
