From dbe62fb1299f8df1adc103fe3d292e70b0cc748f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alexander=20B=C3=B6hml=C3=A4nder?=
 <alexander.boehmlaender@kit.edu>
Date: Wed, 26 Mar 2025 18:14:57 +0100
Subject: [PATCH] Added blowing snow probability estimation.

---
 Calculations/parameterizations.py | 57 ++++++++++++++++++++++++++++++-
 1 file changed, 56 insertions(+), 1 deletion(-)

diff --git a/Calculations/parameterizations.py b/Calculations/parameterizations.py
index e1337f4..3bc300d 100644
--- a/Calculations/parameterizations.py
+++ b/Calculations/parameterizations.py
@@ -8,9 +8,27 @@ Collection of parameterizations for INP concentrations and INAS densities.
 """
 
 import numpy as np
+import numpy.typing as npt
 
 
-def inas_parameterizations(T, material):
+def inas_parameterizations(T: npt.ArrayLike, material: str) -> npt.ArrayLike:
+    """
+    Ice Nucleation Active Site (INAS) density parameterizations for different
+    materials.
+
+    Parameters
+    ----------
+    T : npt.ArrayLike
+        Temperature in K.
+    material : str
+        Aerosol type.
+
+    Returns
+    -------
+    npt.ArrayLike
+        INAS density in cm-2.
+
+    """
     match material:
         case 'dust':
             a = 1e-4
@@ -63,3 +81,40 @@ def inas_parameterizations(T, material):
             b0 = 141
             b1 = -0.495
             return 1e-4 * np.exp(b1 * (T + 273.15)**1 + b0)
+
+
+def blowing_snow_probability(
+    wind_speed: npt.ArrayLike, temperature: npt.ArrayLike, snow_age: npt.ArrayLike
+) -> npt.ArrayLike:
+    """
+    Blowing snow probability as a function of the wind speed, temperature and snow age.
+    Parameterization developed by _[1] and valid for wind speeds between 3 and 20 m/s,
+    and for air temperatures above -35 °C.
+
+    Parameters
+    ----------
+    wind_speed : npt.ArrayLike
+        Wind speed in m/s.
+    temperature : npt.ArrayLike
+        Temperature in °C.
+    snow_age : npt.ArrayLike
+        Snow age in hours.
+
+    Returns
+    -------
+    npt.ArrayLike
+        Probability of blowing snow.
+
+    References
+    ----------
+    [1] Li, L. and J. W. Pomeroy (1997). “Probability of occurrence of blowing snow”.
+        In: Journal of Geophysical Research: Atmospheres 102.D18, pp. 21955–21964.
+        issn: 0148-0227. doi: 10.1029/97jd01522.
+    """
+    from scipy.special import erf
+
+    T = temperature
+    I = np.log(snow_age)
+    mean_wind_speed = 0.365 * T + 0.00706 * T**2 + 0.9 * I + 11.2
+    delta = 0.145 * T + 0.00196 * T**2 + 4.3
+    return -1 / 2 * erf((mean_wind_speed - wind_speed) / (np.sqrt(2) * delta)) + 0.5
-- 
GitLab