diff --git a/lib/xmet/sounding.py b/lib/xmet/sounding.py index 64642a2..feef1af 100644 --- a/lib/xmet/sounding.py +++ b/lib/xmet/sounding.py @@ -1,3 +1,4 @@ +import math import datetime import shapely @@ -11,7 +12,11 @@ from xmet.thermo import follow_dry_adiabat, \ follow_saturated_mixing_ratio, \ pressure_height, \ virtual_temp, \ - kelvin + kelvin, \ + wind_u, \ + wind_v + +from xmet.units import deg LAPSE_RATE_DRY = 9.8 # degrees C per 1000m LAPSE_RATE_MOIST = 4.0 @@ -204,6 +209,26 @@ class Sounding(DatabaseTable): return series + def shear(self, level: int): + s1 = self.samples[level] + s2 = self.samples[level+1] + + u1 = wind_u(s1.wind_speed, s1.wind_dir) + u2 = wind_u(s2.wind_speed, s2.wind_dir) + + v1 = wind_v(s1.wind_speed, s1.wind_dir) + v2 = wind_v(s2.wind_speed, s2.wind_dir) + + zd = s2.height - s1.height + + ud = u2 - u1 + vd = v2 - v1 + + return ( + ((ud**2 + vd**2)**0.5) / zd, + 90 - deg(math.atan(vd / ud)) + ) + def between(n, a, b): return n > a and n < b