爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 12500|回复: 9

wrf输出结果 时间序列

[复制链接]
回帖奖励 6 金钱 回复本帖可获得 2 金钱奖励! 每人限 2 次(中奖概率 50%)

新浪微博达人勋

发表于 2014-5-4 19:30:23 | 显示全部楼层 |阅读模式
NCL
系统平台: linux
问题截图:
问题概况: wrf输出结果做散度/涡度时间序列,模仿官网上的例子自己修改了一下脚本,发现几个问题:
1.x轴是时间维,应该是41个时次,图中的时间轴出了问题
2.y轴为高度,是要自己定义数组使百pa高度显示吗?
我看过提问的智慧: 看过
自己思考时长(天): 2

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

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

x
下面是脚本:

oad "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRF_contributed.ncl"
begin
   in  = addfile("/home/zssapr/WRF3.5.1/20110710/data/wrf_data/wrfout_d02_2011-07-10_00:00:00","r")

   U =in->U
   ua = wrf_user_unstagger(U,U@stagger)
   V = in->V
   va = wrf_user_unstagger(V,V@stagger)
   lat = in->XLAT(0,:,0)
   lon = in->XLONG(0,0,:)

   Time   = WRF_Times2Udunits_c(in->Times, 0)  ; convert to "hours since"
   scale=1.e05
   dv = new ( dimsizes(ua), typeof(ua), ua@_FillValue )
   dv@long_name  = "divengence"
   dv@units      = "scaled"
   dv = uv2dv_cfd (ua,va,lat,lon, 2)

   vr = new ( dimsizes(ua), typeof(ua), ua@_FillValue )
   vr@long_name  = "vorticity"
   vr@units      = "scaled"
   vr = uv2vr_cfd (ua,va,lat,lon, 2) * scale

   svbit = new ( dimsizes(ua), typeof(ua), ua@_FillValue )
   svbit =dv/vr


   time=new(41,integer)
   bottom_top=new(27,integer)
   south_north=new(81,integer)
   west_east=new(81,integer)
   svbit!0="time"
   svbit!1="bottom_top"
   svbit!2="south_north"
   svbit!3="west_east"
   svbit@time=Time
   svbit@bottom_top=bottom_top
   svbit@south_north=south_north
   svbit@west_east=west_east
   znu     = in->ZNU(0,:)                 ; znu(bottom_top)
   Svbit       =svbit(:,:,6,7 )
   wks  = gsn_open_wks("ps","press_time")
   gsn_define_colormap(wks,"BlueWhiteOrangeRed")
   res = True
   res@cnFillOn = True
   plot = gsn_csm_contour(wks, Svbit(bottom_top|:,time|:),res)
end
NCL学习过程得到了许多同学的帮助,在此谢谢了,希望以后能帮助更多的人


捕获.PNG
捕获.PNG
捕获.PNG

本帖被以下淘专辑推荐:

  • · 模式|主题: 18, 订阅: 3
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-4 19:36:19 | 显示全部楼层
本帖最后由 longlivehj 于 2014-5-4 19:41 编辑

   time=new(41,integer)
   bottom_top=new(27,integer)
   south_north=new(81,integer)
   west_east=new(81,integer)
坐标数组全部是missing,没有赋值。

   svbit@time=Time
   svbit@bottom_top=bottom_top
   svbit@south_north=south_north
   svbit@west_east=west_east

坐标变量的赋值要用“&”,“@”是属性赋值时采用的。

另外,我总觉得最后不需要自己去定义坐标信息,用copy_VarCoords应该可以解决。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-4 19:53:08 | 显示全部楼层
longlivehj 发表于 2014-5-4 19:36
time=new(41,integer)
   bottom_top=new(27,integer)
   south_north=new(81,integer)

谢谢你的热心帮助!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-4 20:07:27 | 显示全部楼层
追风的阳光 发表于 2014-5-4 19:53
谢谢你的热心帮助!

做好了放上来啊~~~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-4 20:48:50 | 显示全部楼层
andrewsoong 发表于 2014-5-4 20:07
做好了放上来啊~~~~

明天放。。现在连不上校内网。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-5 15:34:03 | 显示全部楼层
longlivehj 发表于 2014-5-4 19:36
time=new(41,integer)
   bottom_top=new(27,integer)
   south_north=new(81,integer)

你好,我今天做又发现了一个问题,上面脚本中的svbit是四维的(时间,高度,经度,纬度),我想取每一时刻高度上的一个区域内的svbit平均值,于是添加了下面这个脚本: Svbit = new ( dimsizes(FNM), typeof(ua) )
copy_VarCoords(ua, svbit )   
dimp   = dimsizes( ua )
ntime   = dimp(0)
nlev   = dimp(1)
Svbit   =  new ( (/ntime,nlev/), typeof(ua) )
do i=0,120,1
do  j=0,26,1
      Svbit(i,j)=dim_sum_n(svbit(i,j,1:5,1:5),0)
end do
end do

这个脚本我想把svbit转换成二维的(FNM是wrf文件中的一个变量(时间,高度),我就图方便把FNM的维度信息赋给Svbit)。
运行后提示说:
Dimension sizes on right hand side of assignment do not match dimension sizes of left hand side
即Svbit(i,j)=dim_sum_n(svbit(i,j,1:5,1:5),0)俩边维数不一样,请问应该怎样调整呢?谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-5 15:45:37 | 显示全部楼层
本帖最后由 longlivehj 于 2014-5-5 15:48 编辑
追风的阳光 发表于 2014-5-5 15:34
你好,我今天做又发现了一个问题,上面脚本中的svbit是四维的(时间,高度,经度,纬度),我想取每一时 ...

根据你的描述,以下两行代码即可:
copy_VarCoords(ua, svbit)
Svbit = dim_avg_n_Wrap(svbit(:, :, 1 : 5, 1 : 5), (/2, 3/))

你程序出错的原因是:
svbit(i,j,1:5,1:5)是二维数组,dim_sum_n(svbit(i,j,1:5,1:5),0)后是一维数组(5个元素),而等号左边Svbit(i,j)是1个元素,这样是无法赋值的。

另外注意dim_sum_n是求和,不是求均值。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-5 16:42:20 | 显示全部楼层
longlivehj 发表于 2014-5-5 15:45
根据你的描述,以下两行代码即可:
copy_VarCoords(ua, svbit)
Svbit = dim_avg_n_Wrap(svbit(:, :, 1  ...

谢谢!明白了,/2,3/就是固定time,lev,取区域的平均。。但“dim_sum_n(svbit(i,j,1:5,1:5),0)后是一维数组(5个元素)”,为何是5个元素呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-5 16:58:56 | 显示全部楼层

回帖奖励 +2 金钱

追风的阳光 发表于 2014-5-5 16:42
谢谢!明白了,/2,3/就是固定time,lev,取区域的平均。。但“dim_sum_n(svbit(i,j,1:5,1:5),0)后是一维 ...

svbit(i,j,1:5,1:5)是(/5, 5/)的数组,再对第一维求和,不就是5个元素么!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-5 17:16:31 | 显示全部楼层
longlivehj 发表于 2014-5-5 16:58
svbit(i,j,1:5,1:5)是(/5, 5/)的数组,再对第一维求和,不就是5个元素么!

谢谢!。。。。。。。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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