When updating the soil water algorithm to fix some bugs, there are a few decisions we ought to make related to the water/energy balance. Line numbers reference the v7 branch version of SoilWater.cs. Some of these might just be my misunderstanding of things.
Lines 139-158: Melting snow takes energy; should this energy be taken out of remainingPET?
Lines 168-188: Should evaporated snow be added to AET? It seems like it should be treated similarly to bare soil evaporation. It is decremented from PET, which would later decrease the maximum possible AET in lines 242-252. This means that greater snow evaporation could decrease AET, which is counterintuitive.
Line 242: Under what conditions should AET be set to remainingPET? The original code does this if (soilWaterContent > waterFull), which doesn't make much sense; it doesn't seem that soil water or field capacity necessarily are related to AET or PET in a useful way here. Paul Henne has the condition as ((soilWaterContent - waterEmpty) >= remainingPET), which assumes that soil water cannot go lower than waterEmpty. My suggestion is to have this condition as (soilWaterContent >= remainingPET), which will allow ET to reduce soil water below permanent wilting point.
Line 289: ratioPrecipPET is the name of the variable, but it is actually calculated as the ratio of plant available water : PET. Should we change the name of this variable?
Line 316: When calculating Dry Days, I was finding that soils with water contents well above field capacity at AvailableWaterMax were preventing many dry days from occurring, even if water content at the end of the month was fairly low. I changed this calculation to take Math.Min(availableWaterMax, waterFull) instead of availableWaterMax; this caps the maximum water at waterFull (field capacity), which seems reasonable to me. This change doesn't affect much, but it does increase the dry days somewhat.
When updating the soil water algorithm to fix some bugs, there are a few decisions we ought to make related to the water/energy balance. Line numbers reference the v7 branch version of SoilWater.cs. Some of these might just be my misunderstanding of things.