- 积分
- 3006
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-1-19
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以下是我用两种方法画的温度平流 ,感觉都有些勉强,因为数值过大 且冷暖平流夹杂,想请大家帮忙看下哪种计算方法是正确的 或是有其他更好的方法求告知advect_variable函数法:
pressure = 700.
tc = wrf_user_getvar(a,"tc",it) ; T in C
rh = wrf_user_getvar(a,"rh",it) ; relative humidity
u = wrf_user_getvar(a,"ua",it) ; 3D U at mass points
v = wrf_user_getvar(a,"va",it) ; 3D V at mass points
tc_p = tc+273.166
copy_VarCoords(tc, tc_p)
Tadv = advect_var(u, v, tc_p, 0, "advection of temperature", "K/s", 0)
Tadv = -1*Tadv*100000
copy_VarCoords(Tadv, u)
Tadv_p = wrf_user_intrp3d(Tadv, p,"h",pressure,0.,False)
中央差分法:
tk = wrf_user_intrp3d(tc,p,"h",pressure,0.,False)
z_p = wrf_user_intrp3d(z,p,"h",pressure,0.,False)
rh_p = wrf_user_intrp3d(rh,p,"h",pressure,0.,False)
u_p = wrf_user_intrp3d(u,p,"h",pressure,0.,False)
v_p = wrf_user_intrp3d(v,p,"h",pressure,0.,False)
tc_p = tk+273.166
copy_VarCoords(tk, tc_p)
;printVarSummary(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)
;printVarSummary(dTdX)
do nl = 0,141-1
dX =6378388.*cos(0.0174533*x(nl,1))*dlon
;print(dX)
;printVarSummary(tc_p(nl:nl,:))
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
;print(dY)
dTdY(:,ml:ml) = center_finite_diff_n(tc_p(:,ml:ml),dY,True,0,0)
;printVarSummary(dTdY)
end do
advT=-(u_p*dTdX/dX+v_p*dTdY/dY)*100000
copy_VarCoords(u_p, advT)
printVarSummary(advT)
printMinMax(advT, 0)
advT=smth9(advT,0.5,0.25,False)
|
-
-
|