爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 342|回复: 3

ncl绘制水汽通量散度

[复制链接]

新浪微博达人勋

发表于 2025-1-8 14:38:09 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
为什么我绘制出来的会成这样的形状

u      = fu->U(:,{750:1000},{5:45},{80:135})
v      = fv->V(:,{750:1000},{5:45},{80:135})
q      = fq->Q(:,{750:1000},{5:45},{80:135})               ;unit:kg kg**-1
ps     = fps->sp(0:23,{5:45},{80:135})          ;units:pa

;750-1000
pp=fuvq->level             ;hpa
p=pp*100      ;pa

;--------------计算水汽通量 moisture flux=(dp(Pa)*u(m/s)*q(kg/kg))/g(m/s^2)  --
ptop = 75000
g    = 9.80665 ; m/s2
dp   = dpres_plevel_Wrap(p, ps, ptop, 0);这里变量单位必须全部统一成pa或者hpa
dpg  = dp/g
dpg@long_name = "Layer Mass Weighting"
dpg@units     = "kg/m2"
copy_VarCoords(u,dpg)

uq   = u*q                                  ; (:,:,:,:)
uq@long_name  = "Zonal Moisture Flux [uq]"
uq@units      = "["+u@units+"]["+q@units+"]"
copy_VarCoords(u,uq)
vq   = v*q                                  ; (:,:,:,:)
vq@long_name  = "Meridional Moisture Flux [vq]"
vq@units      = "["+v@units+"]["+q@units+"]"
copy_VarCoords(v,vq)

uq_dpg = uq*dpg
iuq    = dim_avg_n_Wrap(dim_sum_n(uq_dpg, 1),0);kg/m*s
vq_dpg = vq*dpg
ivq    = dim_avg_n_Wrap(dim_sum_n(vq_dpg, 1),0);kg/m*s
copy_VarCoords(u(0,0,:,:), iuq(:,:))
copy_VarCoords(u(0,0,:,:), ivq(:,:))
delete(u)
delete(v)


duvq  = uv2dv_cfd(uq, vq,uq&latitude,uq&longitude,2)    ; (time,level,lat,lon)

duvq@long_name = "Divergence of Moisture Flux"
duvq@units     = "kg/(kg-s)"    ; (1/m)*[(m/s)(g/kg)] => [g/(kg-s)]
duvq_dpg = duvq*dpg            ;  [g/(kg-s)][kg/m2] => [g/(m2-s)]
iduvq    = dim_avg_n_Wrap(dim_sum_n(duvq_dpg, 1),0)
iduvq@long_name = "Integrated Mass Wgt MFC"
iduvq@LONG_NAME = "Integrated Mass Weighted Moisture Flux Convergence"
iduvq@units     = "g/(m2-s)"
;copy_VarCoords(u, iduvq)      ; (time,lat,lon)
copy_VarCoords(ps(0,:,:), iduvq)
delete(duvq_dpg)
printVarSummary(iduvq)

wks = gsn_open_wks("pdf" ,"fluxes")
res2=True
res2@gsnDraw=False
res2@gsnFrame=False

res2@cnFillOn=True
res2@cnLineLabelsOn=False
res2@lbLabelBarOn     = True
res2@cnFillPalette ="cmp_b2r"
res2@gsnAddCyclic=False

res2@mpMinLatF=10.
res2@mpMaxLatF=40.
res2@mpMinLonF=90.
res2@mpMaxLonF=130.

res2@mpDataSetName         = "Earth..4"   ; This new database contains; divisions for other countries.
  res2@mpDataBaseVersion     = "MediumRes"  ; Medium resolution database
  res2@mpOutlineOn           = True         ; Turn on map outlines
  res2@mpAreaMaskingOn            = True
  res2@mpMaskAreaSpecifiers       = (/"land"/)
  res2@mpOutlineSpecifiers   = (/"China"/)
  res2@mpLandFillColor            = "white"
  res2@mpInlandWaterFillColor     = "white"
res2@cnLinesOn   = False
plot=gsn_csm_contour_map(wks,iduvq,res2)

draw(plot)

截屏2025-01-08 14.37.05.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2025-1-9 08:32:26 | 显示全部楼层
要么是绘图的数据里面有Nan值  而不是固定的缺省值, 要么就是坐标变量不对。看起来可能是前者
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2025-1-10 15:34:07 | 显示全部楼层
AuuuTi 发表于 2025-1-9 08:32
要么是绘图的数据里面有Nan值  而不是固定的缺省值, 要么就是坐标变量不对。看起来可能是前者

想问一下这个要怎么解决呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 成长值: 0
发表于 2025-1-11 18:35:40 | 显示全部楼层
encore 发表于 2025-1-10 15:34
想问一下这个要怎么解决呢

如果是坐标变量问题的话,可以从其他变量复制过来 用类似于这种函数:copy_VarCoords(var_from, var_to) ; copy_VarMeta(var_from, v0ar_to)
如果是nan值问题,论坛里有很多回答可以搜搜看。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表