Initial implementation of shear calculation

This commit is contained in:
XANTRONIX 2025-03-17 22:30:23 -04:00
parent 9d9cfab9e2
commit 8e474da691

View file

@ -1,3 +1,4 @@
import math
import datetime import datetime
import shapely import shapely
@ -11,7 +12,11 @@ from xmet.thermo import follow_dry_adiabat, \
follow_saturated_mixing_ratio, \ follow_saturated_mixing_ratio, \
pressure_height, \ pressure_height, \
virtual_temp, \ virtual_temp, \
kelvin kelvin, \
wind_u, \
wind_v
from xmet.units import deg
LAPSE_RATE_DRY = 9.8 # degrees C per 1000m LAPSE_RATE_DRY = 9.8 # degrees C per 1000m
LAPSE_RATE_MOIST = 4.0 LAPSE_RATE_MOIST = 4.0
@ -204,6 +209,26 @@ class Sounding(DatabaseTable):
return series 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): def between(n, a, b):
return n > a and n < b return n > a and n < b