爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 45635|回复: 22

[其他] ncl 计算水汽通量、水汽通量散度

[复制链接]

新浪微博达人勋

发表于 2020-10-11 12:35:55 | 显示全部楼层 |阅读模式

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

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

x
从ncl官网下载下来然后算出整层水汽通量、水汽通量散度、单层水汽通量、水汽通量散度

all_flux.ncl

3.01 KB, 下载次数: 51, 下载积分: 金钱 -5

售价: 5 贡献  [记录]

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2021-4-18 12:06:17 | 显示全部楼层
别下载,不会搞,下面有
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-10-11 16:48:55 | 显示全部楼层
fu = addfile("/home/wangfeiha/data/uwnd.mon.mean.nc","r")
fv = addfile("/home/wangfeiha/data/vwnd.mon.mean.nc","r")
fq = addfile("/home/wangfeiha/data/shum.mon.mean.nc","r")
fp = addfile("/home/wangfeiha/data/pres.mon.mean.nc", "r")
time = fu->time
YYYYMM=cd_calendar(time, -1)
it_s=196101
it_e=201912
rec_s=ind(it_s.eq.YYYYMM)
rec_e=ind(it_e.eq.YYYYMM)
u = fu->uwnd(rec_s:rec_e,0:7,:,:);m/s
v = fv->vwnd(rec_s:rec_e,0:7,:,:)
q = fq->shum(rec_s:rec_e,:,:,:) ;g/kg
ps= fp->pres(rec_s:rec_e,:,:)
p = fq->level

ptop = 300
g    = 9.80665          ; m/s2

ptop = ptop*100
  ptop@units = "Pa"

  plev = q&level                      ; hPa  
  plev = plev*100                     ; [100000,...,30000] Pa [kg/(m-s2)]
  plev@units = "Pa"

;---Change [kg/kg] to [g/kg]; not necessary: but common units for q

  q    = q*1000            
  q@units = "g/kg"

;---Divergence function [used later] requires S->N grid order

  u    = u(:,:,::-1,:)  
  v    = v(:,:,::-1,:)
  q    = q(:,:,::-1,:)     
  ps   =ps(:,  ::-1,:)      

;---Layer thickness: ; Pa=>[kg/(m-s2)], (time,level,lat,lon)
;---Mass weighting:  (dp/g) => [Pa/(m/s2)] => (Pa-s2)/m => [kg/(m-s2)][s2/m] =>  (kg/m2)
;---Reference: http://www.cgd.ucar.edu/cas/catalog/newbudgets/

  dp   = dpres_plevel_Wrap(plev, ps, ptop, 0) ; Pa; layar thickness

  dpg  = dp/g   
  dpg@long_name = "Layer Mass Weighting"
  dpg@units     = "kg/m2"                     ; dp/g, Pa/(m s-2), reduce to kg m-2

;---Moisture flux components at each pressure level

  uq   = u*q                                  ; (:,:,:,:)
  uq@long_name = "Zonal Moisture Flux [uq]"
  uq@units = "["+u@units+"]["+q@units+"]"     ; [m/s][g/kg]     
  copy_VarCoords(u,uq)                        ; (time,level,lat,lon)

  vq   = v*q                                  ; (:,:,:,:)
  vq@long_name = "Meridional Moisture Flux [vq]"
  vq@units = "["+v@units+"]["+q@units+"]"
  copy_VarCoords(v,vq)                        ; (time,level,lat,lon)
   
;---Divergence of moisture flux: uv2dvF => global 'fixed' rectilinear grid

  duvq  = uv2dvF_Wrap(uq, vq)    ; (time,level,lat,lon)
  duvq@long_name = "Divergence of Moisture Flux"
  duvq@units     = "g/(kg-s)"    ; (1/m)*[(m/s)(g/kg)] => [g/(kg-s)]
;---Integrated mass weighted moisture flux components
  uq_dpg = uq*dpg                ; mass weighted 'uq'; [m/s][g/kg][kg/m2]=>[m/s][g/kg]
  iuq    = dim_sum_n(uq_dpg, 1)
  iuq@long_name = "Integrated Zonal UQ [uq*dpg]"
  iuq@LONG_NAME = "Sum: Mass Weighted Integrated Zonal Moisture Flux [uq*dpg]"
  iuq@units     = "[m/s][g/kg]"
  copy_VarCoords(u(:,0,:,:), iuq); (time,lat,lon)
  delete(uq_dpg)

  vq_dpg = vq*dpg                ; mass weighted 'vq'; [m/s][g/kg][kg/m2]=>[m/s][g/kg]
  ivq    = dim_sum_n(vq_dpg, 1)
  ivq@long_name = "Integrated Meridional VQ [vq*dpg]"
  ivq@LONG_NAME = "Sum: Mass Weighted Integrated Meridional Moisture Flux [vq*dpg]"
  ivq@units     = "[m/s][g/kg]"
  copy_VarCoords(v(:,0,:,:), ivq); (time,lat,lon)
  delete(vq_dpg)



;---Mass weighted integration [sum] of the divergence of moisture flux

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

  VIMFC =  iduvq           ; keep meta data                        
  VIMFC = -VIMFC           ; Note the preceding -1 [negative precedes integration]
  VIMFC@long_name = "VIMFC"

ncdf = addfile("/home/wangfeiha/data/new/integrated_vapor_flux_1961-2019.nc","c")
密码修改失败请联系微信:mofangbao
回复 支持 7 反对 0

使用道具 举报

新浪微博达人勋

发表于 2021-10-10 17:29:38 | 显示全部楼层
ncdf->flux_u = uq
ncdf->flux_v = vq
ncdf->flux = duvq

ncdf->int_flux_u = iuq
ncdf->int_flux_v = ivq
ncdf->int_flux = VIMFC

end
这是作者三楼没发完的,下载的ncl里面剩下的几行
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-10-17 18:56:17 | 显示全部楼层
别下载 下面有
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-10-17 22:42:37 | 显示全部楼层
你好,wrfout数据水汽通量计算的ncl代码有吗,求分享谢谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-11-30 18:58:05 | 显示全部楼层
下面这个程序是不是不全啊
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-12-17 13:41:59 | 显示全部楼层
覃建明 发表于 2020-10-17 22:42
你好,wrfout数据水汽通量计算的ncl代码有吗,求分享谢谢

请问您后来怎么用wrfout的数据计算的水汽通量呢,我遇到了这个问题,求指点
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-12-18 16:04:37 | 显示全部楼层
Ms朝阳 发表于 2020-12-17 13:41
请问您后来怎么用wrfout的数据计算的水汽通量呢,我遇到了这个问题,求指点

还没解决呢~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-6 18:33:42 | 显示全部楼层
你好,shum数据里面的比湿单位原本就是g/kg啊,为什么还要转化额
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-3-29 13:11:48 | 显示全部楼层
在调用计算出的数据画图的时候显示no valid values in scalar field; ContourPlot not possible:[errno=1101]怎么解决啊
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-4-6 19:41:47 | 显示全部楼层
感谢楼主分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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