Initial commit of sounding.py
This commit is contained in:
parent
a5879df512
commit
dc4e6f3423
1 changed files with 66 additions and 0 deletions
66
lib/xmet/sounding.py
Normal file
66
lib/xmet/sounding.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
import datetime
|
||||||
|
import shapely
|
||||||
|
|
||||||
|
LAPSE_RATE_DRY = 9.8 / 1000 # degrees C per 1000m
|
||||||
|
LAPSE_RATE_MOIST = 4.0 / 1000
|
||||||
|
|
||||||
|
MIXING_RATIO_CONST = 621.97
|
||||||
|
|
||||||
|
class SoundingSample():
|
||||||
|
__slots__ = (
|
||||||
|
'id', 'sounding_id', 'elapsed', 'pressure', 'pressure_qa',
|
||||||
|
'height', 'height_qa', 'temp', 'temp_qa', 'humidity',
|
||||||
|
'dewpoint', 'wind_dir', 'wind_speed'
|
||||||
|
)
|
||||||
|
|
||||||
|
id: int
|
||||||
|
sounding_id: int
|
||||||
|
elapsed: int
|
||||||
|
pressure: float
|
||||||
|
pressure_qa: str
|
||||||
|
height: float
|
||||||
|
height_qa: str
|
||||||
|
temp: float
|
||||||
|
temp_qa: str
|
||||||
|
humidity: float
|
||||||
|
dewpoint: float
|
||||||
|
wind_dir: float
|
||||||
|
wind_speed: float
|
||||||
|
|
||||||
|
def vapor_pressure(self) -> float:
|
||||||
|
return 6.11 * 10 * (
|
||||||
|
(7.5 * self.dewpoint) / (237.3 * self.dewpoint)
|
||||||
|
)
|
||||||
|
|
||||||
|
def saturated_vapor_pressure(self) -> float:
|
||||||
|
return 6.11 * 10 * (
|
||||||
|
(7.5 * self.temp) / (237.3 * self.temp)
|
||||||
|
)
|
||||||
|
|
||||||
|
def mixing_ratio(self) -> float:
|
||||||
|
e = self.vapor_pressure()
|
||||||
|
|
||||||
|
return 621.97 * (e / (self.pressure - e))
|
||||||
|
|
||||||
|
def saturated_mixing_ratio(self) -> float:
|
||||||
|
es = self.saturated_vapor_pressure()
|
||||||
|
|
||||||
|
return 621.97 * (es / (self.pressure - es))
|
||||||
|
|
||||||
|
def is_saturated(self) -> bool:
|
||||||
|
return self.humidity >= 100.0
|
||||||
|
|
||||||
|
class Sounding():
|
||||||
|
__slots__ = (
|
||||||
|
'id', 'station', 'timestamp_observed', 'timestamp_released',
|
||||||
|
'data_source_pressure', 'data_source_other', 'samples', 'coord'
|
||||||
|
)
|
||||||
|
|
||||||
|
id: int
|
||||||
|
station: str
|
||||||
|
timestamp_observed: datetime.datetime
|
||||||
|
timestamp_released: datetime.datetime
|
||||||
|
data_source_pressure: str
|
||||||
|
data_source_other: str
|
||||||
|
coord: shapely.Point
|
||||||
|
samples: list[SoundingSample]
|
Loading…
Add table
Reference in a new issue