- 积分
- 135
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2020-5-25
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 xpz0212 于 2022-1-19 21:25 编辑
参考各个大佬们对于假相当位温计算(通过温度场,气压值,相对湿度场),(这是链接)
https://mp.weixin.qq.com/s/mLuWEfD4hIt-4CSmphE8FAhttp://bbs.06climate.com/forum.php?mod=viewthread&tid=99672&fromuid=123871
稍微修改了一下,改成计算假相当位温的函数
可以直接调用,放入相对湿度和温度的二维数组,气压值,经向和纬向格点数,返回值为假相当位温值(单位:摄氏度)
下面是代码部分:
def Theta_se(Rh,t,p,nx,ny):
#计算假相当位温
#Rh:相对湿度(%)|t:温度(K)|p:气压值(hPa)|nx:经向格点数|ny:纬向格点数
t0 = 273.16
e0 = 6.1078
L0 = 2500.79
cl = 2.3697
cpd = 1.0048
Rd = 0.28704
Rw = 0.4615
#11个变量统一初始化成11个(ny,nx)二维数组
cttd,Ftd,tc,Lc,thetad,wc,thetase,Ltd,ttd,lew,ee = np.ones((11,ny,nx))
for i in range(ny):
for j in range(nx):
lew[i,j] = 6.112*(np.e**((17.67*t[i,j])/(t[i,j]+243.5)))
ee[i,j] = ((lew[i,j]*Rh[i,j])/100)/6.112
ttd[i,j] = (243.5*(np.log(ee[i,j])))/(17.67-np.log(ee[i,j]))
Ltd[i,j] = L0-cl*(ttd[i,j]-t0)
cttd[i,j] = e0*((t0/ttd[i,j])**(cl/Rw))*(np.e**((L0+cl*t0)*(ttd[i,j]-t0)/(Rw*ttd[i,j]*t0)))
Ftd[i,j] = (0.622*Ltd[i,j]/(cpd*ttd[i,j]))-1
tc[i,j] = ttd[i,j]*Ftd[i,j]/(Ftd[i,j]+np.log(ttd[i,j]/t[i,j]))
Lc[i,j] = L0-cl*(tc[i,j]-t0)
thetad[i,j] = t[i,j]*((1000.0/(p-cttd[i,j]))**(Rd/cpd))
wc[i,j] = 0.622*cttd[i,j]/(p-cttd[i,j])
thetase[i,j] = thetad[i,j]*(np.e**(wc[i,j]*Lc[i,j]/(cpd*tc[i,j])))
thetase=thetase-273.15
return thetase
|
-
|