Skip to content

Commit 12f6713

Browse files
committed
Add eqn 14 and 13 from Essery 199 to pomli param. Don't remove out of triangles that did not saltate.
1 parent 346ac82 commit 12f6713

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

src/modules/PBSM3D.cpp

+19-7
Original file line numberDiff line numberDiff line change
@@ -845,12 +845,16 @@ void PBSM3D::run(mesh& domain)
845845
if (use_PomLi_probability) // Pomeroy and Li 2000 upscaled
846846
// probability
847847
{
848-
// Essery, Li, and Pomeroy 1999
848+
// 1.Essery, R., Li, L. & Pomeroy, J. A distributed model of blowing snow over complex terrain. Hydrological Processes 13, 2423–2438 (1999).
849849
// Probability of blowing snow
850850
double A = (*face)["p_snow_hours"_s]; // hours since last snowfall
851851
double u_mean = 11.2 + 0.365 * T + 0.00706 * T * T + 0.9 * log(A); // eqn 10 T -> air temp, degC
852852
double delta = 0.145 * T + 0.00196 * T * T + 4.3; // eqn 11
853-
double Pu10 = 1.0 / (1.0 + exp((sqrt(M_PI) * (u_mean - u10)) / delta)); // eqn 12
853+
854+
double z0v = (d.N * d.dv * height_diff) / 2.0; // eqn 14
855+
double us = u10 / sqrt((1+340.0*z0v)); // eqn 13
856+
857+
double Pu10 = 1.0 / (1.0 + exp((sqrt(M_PI) * (u_mean - us)) / delta)); // eqn 12
854858
(*face)["blowingsnow_probability"_s] = Pu10;
855859

856860
// decrease the saltation by the probability amount
@@ -1715,11 +1719,19 @@ void PBSM3D::run(mesh& domain)
17151719
double swe = (*face)["swe"_s]; // mm --> kg/m^2
17161720
swe = is_nan(swe) ? 0 : swe; // handle the first timestep where swe won't have been
17171721
// updated if we override the module order
1718-
if( mass < 0 && std::fabs(mass) > swe )
1719-
{
1720-
(*face)["pbsm_more_than_avail"_s] = 1;
1721-
mass = -swe;
1722-
}
1722+
if( mass < 0 && std::fabs(mass) > swe )
1723+
{
1724+
(*face)["pbsm_more_than_avail"_s] = 1;
1725+
mass = -swe;
1726+
}
1727+
1728+
// if this triangle did not saltate, it is not a candidate for removal
1729+
auto& d = face->get_module_data<data>(ID);
1730+
if (mass < 0 && !d.saltation)
1731+
{
1732+
mass = 0;
1733+
}
1734+
17231735
(*face)["drift_mass"_s] = mass;
17241736
(*face)["sum_drift"_s] += mass;
17251737
}

0 commit comments

Comments
 (0)