- 积分
- 2916
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-1-19
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2019-8-30 21:26:53
|
显示全部楼层
想请教一下尽头的尽头大神 我用advect_var这个函数对用wrf_user_getvar读取后的u、v和tc进行计算 然后再插值到我想要的气压层上 这样计算出的数值 和我用中央差分计算的结果不一样 请问是什么原因呢 数值如下:这是用函数计算出的结果:
Variable: Tadv_p
Type: float
Total Size: 86292 bytes
21573 values
Number of Dimensions: 2
Dimensions and sizes: [south_north | 141] x [west_east | 153]
Coordinates:
Number Of Attributes: 5
_FillValue : 9.96921e+36
units : K/s
description :
long_name : advection of temperature
PlotLevelID : 700 hPa
(0) advection of temperature: min=-72.5483 max=73.8407
下面是用公式计算出的结果:
Variable: advT
Type: float
Total Size: 86292 bytes
21573 values
Number of Dimensions: 2
Dimensions and sizes: [south_north | 141] x [west_east | 153]
Coordinates:
Number Of Attributes: 1
_FillValue : 9.96921e+36
(0) min=-0.297379 max=0.112401
公式如下:
tc_p = tk+273.166
copy_VarCoords(tk, tc_p)
tc_p@_FillValue = 9.96921e+36
dlon = (y(1,2)-y(1,1))*0.0174533
dTdX = new((/141,153/),typeof(tc_p),tc_p@_FillValue)
do nl = 0,141-1
dX =6378388.*cos(0.0174533*x(nl,1))*dlon
dTdX(nl:nl,:) = center_finite_diff_n(tc_p(nl:nl,:),dX,True,0,1)
end do
dlat = (x(2,1)-x(1,1))*0.0174533
dTdY = new((/141,153/),typeof(tc_p),tc_p@_FillValue)
do ml = 0,153-1
dY = 6378388.*dlat
dTdY(:,ml:ml) = center_finite_diff_n(tc_p(:,ml:ml),dY,True,0,0)
end do
advT=-(u_p*dTdX/dX+v_p*dTdY/dY)*100000
copy_VarCoords(u_p, advT)
其中u_p、v_p、tk都已经内插到700hpa气压层
跪求大神解答疑惑 这个问题始终没有解决 困扰很久了
|
|