- 积分
- 651
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2021-9-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 又又又加零 于 2023-4-15 18:44 编辑
在进行假相当位温的运算时,计算露点温度下的饱和水汽压es时出现了警告:
C:\Users\user\AppData\Local\Temp\ipykernel_6572\2629662609.py:11: RuntimeWarning: invalid value encountered in double_scalars
cttd[i,j] = e0*((t0/ttd[i,j])**(cl/Rw))*(np.e**((L0+cl*t0)*(ttd[i,j]-t0)/(Rw*ttd[i,j]*t0)))
E:\Anaconda3\lib\site-packages\xarray\core\computation.py:771: RuntimeWarning: invalid value encountered in log
result_data = func(*input_data)
我画的是剖面图,发现高层几乎全是缺测值,我想知道怎么才能避免呢?感觉算法没有什么问题,求指导
看了下警告应该是在计算 cttd[i,j] 的过程中可能 ttd[i,j] 的值为零或者负数;第二个是np.log()取对数时出现参数为负,导致了缺测。我看低层基本上都有计算值出来,高层出现很多缺测,不知道怎么解决。
将假相当位温的计算代码附上,希望有好心人指导下【已解决】
- #设置物理常数
- t0 = 273.16 #水的冰点时的绝对温度,单位K
- e0 = 6.1078 #273.16K时水面饱和水气压,单位hPa
- L0 = 2500.79 #273.16K时水的气化潜热,单位J/g
- cl = 2.3697 #水汽凝结潜热随温度变化率,单位J/(g*K)
- cpd = 1.0048 #干空气定压比热容,单位J/(g*K)
- Rd = 0.28704 #干空气比气体常数,单位J/(g*K)
- Rw = 0.4615 #水汽比气体常数,单位J/(g*K)
- nx = 23 #level
- ny = 41 #lon
- cttd,Ftd,tc,Lc,cetad,wc,cetase,Ltd,ttd,lew,ee = np.ones((11,nx,ny))
- for i in range(nx):
- for j in range(ny):
-
- lew[i,j] = 6.112*(np.e**((17.67*tt[i,j])/(tt[i,j]+243.5))) #用Tetens经验公式求饱和水气压es
- ee[i,j] = ((lew[i,j]*RRh[i,j])/100)/6.112
-
- ttd[i,j] = (243.5*(np.log(ee[i,j])))/(17.67-np.log(ee[i,j])) #用Tetens经验公式反推露点温度td
-
- 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]/tt[i,j])) #求温度tc
-
- Lc[i,j] = L0-cl*(tc[i,j]-t0) #求水汽潜热Lv
-
- cetad[i,j] = tt[i,j]*((1000.0/(pp[i]-cttd[i,j]))**(Rd/cpd)) #求干空气位温
- wc[i,j] = 0.622*cttd[i,j]/(pp[i]-cttd[i,j])
-
- cetase[i,j] = cetad[i,j]*(np.e**(wc[i,j]*Lc[i,j]/(cpd*tc[i,j])))
复制代码
|
|