Initial implementation of shear calculation
This commit is contained in:
parent
9d9cfab9e2
commit
f24c1d2b07
1 changed files with 26 additions and 1 deletions
|
@ -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) / zd
|
||||
vd = (v2 - v1) / zd
|
||||
|
||||
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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue