SWE_prob (SWEpeak, Melt, CV)
Calculates the probability of the snow water equivalent exceeding Melt, for a snowpack having an average areal snow water equivalence of SWEpeak at the beginning of melt.
Units
- ()
Inputs
- SWEpeak (m) - average areal SWE at the beginning of melt.
- Melt (mm) - amount of SWEpeak melted this interval.
- CV () - coefficient of variation of SWE.
Return P
if(Melt<= 1.0) return 1.0; // handle log(0) error
float K = (Melt-SWEpeak)/(CV*SWEpeak)
float Sy = sqrt(log(CV*CV+1.0))
float Ky = (log(K*sqrt(exp(Sy*Sy)-1.0)+1.0) + Sy*Sy/2.0)/Sy
float t = 1 /(1+little_p * Ky)
float P = (exp(-Ky*Ky/2)/sqrt(2*M_PI)) * (a1*t + a2*t*t + a3*t*t*t)
if(P > 1.0 || P < 0.001) P = 1.0 // handle discontinuity
where:
K = frequency factor
Sy = standard deviation of the transformed variable.
Ky = the frequency factor for the transformed data having an exceedence probability equal to K.
t, a1, a2, a3 coefficients for the interval-halving method using the approximation by Abramowitz and Stegun, 1965.
Notes
The Abramowitz and Stegun interval halving approximation is not continuous and emits extraneous values when the ratio of SWE to SWEpeak is low. It can generate values greater than one and less than 0.0 in this range. If either condition occurs the probability is made equal to 1.0. The five term approximation is only marginally better than the three term approximation used here.
Coefficient of Variation sample values.
Fallow | 0.3 | 0.58 |
Stubble | 0.33 | 0.33 |
Pasture | 0.41 | 0.57 |
Brush | 0.42 | 0.52 |
Yards | 0.5 | 0.5 |