爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
123
返回列表 发新帖
楼主: supersupergirl

[作图] 关于wrf数据画温度平流的问题探讨

[复制链接]

新浪微博达人勋

 楼主| 发表于 2019-8-27 11:21:35 | 显示全部楼层
杜杜杜 发表于 2019-8-27 11:14
ut = advect_variable(u, v, air, 1, long_name, units, opt)
你可以试试这个函数,算温度平流前面要乘-1

感谢 之前尽头的尽头大神也说了这个函数 但是需要全球数据 可我只模拟了部分区域 所以好像用不了 不过我想问下如果用中央差分的话 最后计算温度平流的公式是否需要除dx和dy呢 还有我查了自己的数据 发现tc_p的缺省值还是存在 所以用中央差分计算的时候把缺省值也一起计算进去 会不会是导致我冷暖平流波浪状的原因呢 感谢回复!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-27 12:15:45 | 显示全部楼层
杜杜杜 发表于 2019-8-27 11:14
ut = advect_variable(u, v, air, 1, long_name, units, opt)
你可以试试这个函数,算温度平流前面要乘-1

请问看了嘛 对于温度平流的计算 是否最后需要除dx和dy呢 因为我看了好几个帖子他们都没除
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-27 13:34:42 | 显示全部楼层
supersupergirl 发表于 2019-8-27 11:21
感谢 之前尽头的尽头大神也说了这个函数 但是需要全球数据 可我只模拟了部分区域 所以好像用不了 不过我 ...

我没这样算过,但应该得除吧~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-27 15:32:52 | 显示全部楼层
杜杜杜 发表于 2019-8-27 13:34
我没这样算过,但应该得除吧~

但我除了之后和用函数算出来的结果不一样 我是直接读取uv然后先用advect_var计算再用intrp3d进行插值 两种方法算出来结果不同
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-30 21:26:53 | 显示全部楼层
尽头的尽头 发表于 2019-8-27 09:29
advect_variable必须是全球数据,advect_variable_cdf可以是区域数据,后者是ncl6.6.2新增函数,使用之前 ...

想请教一下尽头的尽头大神 我用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气压层

跪求大神解答疑惑 这个问题始终没有解决 困扰很久了


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-9-11 16:25:46 | 显示全部楼层
WRF数据每一格间距不一样
你最开始的    dlon = (y(1,2)-y(1,1))*0.0174533
不是动态的 就已经错了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-9-19 18:53:19 | 显示全部楼层
recite 发表于 2019-9-11 16:25
WRF数据每一格间距不一样
你最开始的    dlon = (y(1,2)-y(1,1))*0.0174533
不是动态的 就已经错了

啊 那请问应该如何设置呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-19 17:25:53 | 显示全部楼层
小其其格 发表于 2019-8-25 22:06
以上是我用fnl资料绘制温度平流的脚本,你照着修改一下看看

PS:我不是啥大神……ncl新手而已

大神您好,我想请问一下数据的lat维度需要调成单调递增的嘛?就是从南到北
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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