-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add q
and theta
to L2
#92
Comments
For the interpolation needed in L3, it is better to interpolate specific humidity and potential temperature (because they are conserved) than the relative humidity and temperature (which are the values in L2). Therefore, we first add the variables import numpy as np
import metpy.calc as mpcalc
from metpy.units import units
def calc_saturation_pressure(temperature_K, method='hardy1998'):
"""
Calculate saturation water vapor pressure
Input
-----
temperature_K : array
array of temperature in Kevlin or dew point temperature for actual vapor pressure
method : str
Formula used for calculating the saturation pressure
'hardy1998' : ITS-90 Formulations for Vapor Pressure, Frostpoint Temperature,
Dewpoint Temperature, and Enhancement Factors in the Range –100 to +100 C,
Bob Hardy, Proceedings of the Third International Symposium on Humidity and Moisture,
1998 (same as used in Aspen software after May 2018)
Return
------
e_sw : array
saturation pressure (Pa)
Examples
--------
>>> calc_saturation_pressure([273.15])
array([ 611.2129107])
>>> calc_saturation_pressure([273.15, 293.15, 253.15])
array([ 611.2129107 , 2339.26239586, 125.58350529])
"""
if method == 'hardy1998':
g = np.empty(8)
g[0] = -2.8365744*10**3
g[1] = -6.028076559*10**3
g[2] = 1.954263612*10**1
g[3] = -2.737830188*10**(-2)
g[4] = 1.6261698*10**(-5)
g[5] = 7.0229056*10**(-10)
g[6] = -1.8680009*10**(-13)
g[7] = 2.7150305
e_sw = np.zeros_like(temperature_K)
for t, temp in enumerate(temperature_K):
ln_e_sw = np.sum([g[i]*temp**(i-2) for i in range(0,7)]) + g[7]*np.log(temp)
e_sw[t] = np.exp(ln_e_sw)
return e_sw
def calc_q_from_rh(ds):
"""
Input :
ds : Dataset
Output :
q : Specific humidity values
Function to estimate specific humidity from the relative humidity,
temperature and pressure in the given dataset.
"""
e_s = calc_saturation_pressure(ds.ta.values)
w_s = mpcalc.mixing_ratio(e_s * units.Pa, ds.p.values * units.Pa).magnitude
w = ds.rh.values * w_s
q = w / (1 + w)
return q
def calc_theta_from_T(dataset):
"""
Input :
dataset : Dataset
Output :
theta : Potential temperature values
Function to estimate potential temperature from the
temperature and pressure in the given dataset. This function uses MetPy's
functions to get theta:
(i) mpcalc.potential_temperature()
"""
theta = mpcalc.potential_temperature(
dataset.p.values * units.Pa, dataset.ta.values * units.kelvin
).magnitude
return theta
|
Fixed with #119 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
No description provided.
The text was updated successfully, but these errors were encountered: