Snowmelt modelling: rainfall induced melting |
I have a simple question about snowmelt. The model uses temperature data to estimate the melting of snow. Does it also take into account the rainfall that may accelerate the melting?
I am having trouble calibrating a model where there was some snow followed by rain. I know all the snow melted, and increased the runoff, but I can't find a way to reproduce that with the model. I am using hourly temperature data, and I would rather not have to manually exaggerate my temperature data in order to force the snow to melt. Has anyone run into this problem before?
On an event basis, I wouldn't put a lot of faith in SWMM's snowmelt algorithms, as it not only can't float the snow on top of the water as you're suspecting, but it also doesn't base its melt parameters on insolation, as I believe is done in HSPF. Snow melts a lot faster on a sunny day than on a cloudy one. That said, I think it performs adequately for urban runoff purposes over the course of a winter given good parameters. Here's a simple model I recently did in New York. I used US units (we still like to call them English, but the rest of you seem to have abandoned us!). Also, don't make the mistake I made - where the GUI asks for 'Fraction of Impervious Area That is Plowable', I initially entered 50. The model ran, but gave wacky results. A better input is 0.5, which makes lots of sense when one reads the question more closely than I first did.
[TEMPERATURE] SNOWMELT 34.0 0.5 0.6 150 44.7 0.0 ADC IMPERVIOUS 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 ADC PERVIOUS 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 [SNOWPACKS] MyPack PLOWABLE 0.006 0.01 30 0.2 0.00 0.00 0.50 MyPack IMPERVIOUS 0.006 0.01 30 0.2 0.00 0.00 0.00 MyPack PERVIOUS 0.004 0.08 30 0.2 0.00 0.00 0.00 MyPack REMOVAL 4 0.0 0.0 0.8 0.2 0.0
I recommend calibrating to long-term data. In the US, major airports have long-term daily snowfall and snowpack data, facilitating a long-term check of the model.
SWMM 4 and 5 uses a function called rainmelt that melts the snow when new rainfall based on the rainfall and the wind speed entered or read by the user. It is tricky to use this and I can show you some graphs later in the evening when I get back that may help you.
double getRainmelt(double rainfall) // // Input: rainfall = rainfall rate (ft/sec) // Output: returns snow melt rate (ft/sec) // Purpose: computes rate of snow melt when rainfall occurs. // { double uadj; // adjusted wind speed double t1, t2, t3; double smelt; // snow melt in in/hr rainfall = rainfall * 43200.0; // convert rain to in/hr if ( rainfall > 0.02 ) { uadj = 0.006 * Wind.ws; t1 = Temp.ta - 32.0; t2 = 7.5 * Temp.gamma * uadj; t3 = 8.5 * uadj * (Temp.ea - 0.18); smelt = t1 * (0.001167 + t2 + 0.007 * rainfall) + t3; return smelt / 43200.0; } else return 0.0; }
Snow melt under rainfall conditions is computed differently than at other times. Instead of a degree-day formula, a heat budget equation is used which computes melt rate solely as a function of air temperature, rainfall intensity, and wind speed. So to increase your melt rate without changing your historical temperature data you could add some wind speed data to your input. (Note: this is the only place in SWMM where wind speed is used.)
It's good advice on the long term vs short event modelling. Trying too hard to calibrate for an event might make one lose track of the long term behaviour of the system. I'll keep playing with the various parameters to get a general agreement.
You mention "I am having trouble calibrating a model where there was some snow followed by rain. I know all the snow melted, and increased the runoff, but I can't find a way to reproduce that with the model. I am using hourly temperature data, and I would rather not have to manually exaggerate my temperature data in order to force the snow to melt."
Another reason for this anomaly is that SWMM is using min and max air temperatures instead of the NWS hourly air temperature. It may just be that the SWMM generated sinusoidal air temperatures over the day do not match the hourly historical record - thus explaining your non observance of snowmelt in the program.
So if I read your email correctly, SWMM only reads the max and min temperatures every day and produces a sinusoidal curve of temperatures, that it then uses to compute snowmelt? When I plot the "system" "Temperature", I can see the hourly values I entered, interpolated linearly between each hour, which seemed to me that this is what it was using. Seems odd, but it might explain some anomalies.
SWMM 5 uses the sinusoidal temperature function only when temperatures are supplied by an external climate file that contains daily min/max values. When temperatures are supplied by a time series object, then SWMM uses the interpolated value from the time series, not a sinusoidal fit to the daily min/max., in its snow melt routines.
Good point Lew. If Alexander is currently using the min/max climate file then he MAY get better results using the user-supplied temperature time series and loading it with hourly data. If he is already using hourly data then he has calibration problems.
Thanks for the clarifications, I am indeed using hourly timeseries as recorded by Environment Canada. As Lewis suggested, I'm going to try my luck by adding some wind data. Rainfall-induced snowmelt is pretty tricky since the rainfall itself can have a different temperature that that of the ground, especially in this case where temperature rose from -2oC to +8oC in 7 hours. I don't really know how to account for that in the calcs, but from the excerpt of the code Robert sent, it looks like the rainfall temperature is taken into account - through t1, t2, t3 (not sure what each represents).
Since each event will be different, and depend on so many factors, (including the stratified density of the snow pack), even a "rainfall-induced melting efficiency" coefficient might not be that useful. I'll look for a more general agreement rather than over a specific event.
Two other parameters that you might want to look in your simulation are the:
The melt coefficients in particular also have a sinusoidal pattern during the year and the model can be quite sensitive to changes in the min and max melt cofficients.
Thanks for the suggestion, I have been looking at those as well, and I found that if I set the melt coefficients higher, the snow in other events will melt too quickly, and if I increase my dividing temperature, there is less snowfall than measured. Those parameters have usually done a great job to reproduce measured data, but this case seems a little special.