爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 80516|回复: 53

[其他] 计算温度平流

  [复制链接]

新浪微博达人勋

发表于 2015-8-24 09:52:52 | 显示全部楼层 |阅读模式

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

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

x
想用NCL计算温度平流,参考NCL官网  center_finite_diff_n的用法以及grads中计算温度平流的方法,写了下面一段语句
可计算出来的结果和grads计算出来的结果不一样,家园里头有谁用过吗?帮我看看,不胜感激!语句中的t2是温度、u和v是风;


; 计算温度平流
  dlon = (longitude(2)-longitude(1))*0.0174533 ; convert to radians
  dTdX = new((/432,121,480/),typeof(t2),t2@_FillValue)
  do nl=0,121-1                      ; loop over each latitude
      dX = 6378388.*cos(0.0174533*latitude(nl))*dlon  ; constant at this latitude
      dTdX(:,nl:nl,:) = center_finite_diff_n(t2(:,nl:nl,:),dX,True,0,2)
  end do
dlat = (latitude(2)-latitude(1))*0.0174533 ; convert to radians
  dTdY = new((/432,121,480/),typeof(t2),t2@_FillValue)
  do ml=0,480-1                      ; loop over each latitude
      dY = 6378388.*dlat ; constant at this latitude
      dTdY(:,:,ml:ml) = center_finite_diff_n(t2(:,:,ml:ml),dY,True,0,1)
  end do
  advT=-(u*dTdX/dX+v*dTdY/dY)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-8-25 10:08:28 | 显示全部楼层
好吧,我自己检查出来了,最后一句出问题了,advT=-(u*dTdX+v*dTdY)就可以了,和grads画的也进行了对照,是对的了。
密码修改失败请联系微信:mofangbao
回复 支持 4 反对 0

使用道具 举报

新浪微博达人勋

发表于 2020-5-6 09:32:23 | 显示全部楼层
function  TempAdvection(T,u0,v0,tau,lev,lat,lon) ;计算温度平流
begin
       ntau   = dimsizes(tau)   
       nlon   = dimsizes(lon)
       nlat   = dimsizes(lat)
       nlev   = dimsizes(lev)
       Tadv   = T
       dlon = (lon(2)-lon(1))*0.0174533 ; convert to radians
       dTdX = new((/ntau,nlev,nlat,nlon/), typeof(T), T@_FillValue)

       do nl=0,nlat-1                      ; loop over each latitude
         dX = 6378388.*cos(0.0174533*lat(nl))*dlon  ; constant at this latitude
         dTdX(:,:,nl:nl,:) = center_finite_diff_n (T(:,:,nl:nl,:), dX ,False,0,3)
       end do

       dlat = (lat(2)-lat(1))*0.0174533 ; convert to radians
       dTdY = new((/ntau,nlev,nlat,nlon/), typeof(T), T@_FillValue)
       do ml=0,nlon-1
          dY = 6378388.*dlat ; constant at this latitude
          dTdY(:,:,:,ml:ml) = center_finite_diff_n(T(:,:,:,ml:ml),dY,False,0,2)
       end do
       Tadv  =  -(/ u0*dTdX + v0*dTdY /)  
       Tadv  =   (/ Tadv  * 1e5       /)
       return(Tadv)
end
密码修改失败请联系微信:mofangbao
回复 支持 3 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-11-28 11:04:46 | 显示全部楼层
这里的432,121,480分别是什么意思呀?
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2022-3-22 19:12:43 | 显示全部楼层
验证过,和ncl函数advect_variable结果一致,算法可以作为求偏导的参考
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2015-8-24 11:14:08 | 显示全部楼层
自己顶一下,是我哪儿没有说明清楚吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-9-25 08:30:55 | 显示全部楼层
感谢楼主
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2015-10-28 13:26:21 | 显示全部楼层
感谢楼主的慷慨。楼主能否将图贴出来,我是刚接触中尺度,向你请教一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-10-30 08:53:36 | 显示全部楼层
不好意思啊,当时grads画的图没有存,另外ncl画的我也删掉了,只有在qq记录里头找到当时的截图。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-10-30 08:55:47 | 显示全部楼层
另外,我也不是做中尺度的,画这个纯粹是好奇,怕以后能用得上,所以是抱着学习的态度做的。
QQ图片20151030085859.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-5 12:48:52 | 显示全部楼层
刚好需要画个温度平流的图,ncl新手,感谢楼主呢,\(^o^)/~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-12-9 20:42:47 | 显示全部楼层
楼主你好,我也在用center_finite_diff_n函数,但是计算过程中发现这个函数是连缺省值一起算的后来发现官网上也说明了,请问有没有办法不算缺省值呢?
Description
Performs a centered finite difference operation on the dim-th dimension. If missing values are present, the calculation will occur at all points possible, but coordinates which could not be used will set to missing.
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-1 14:59:13 | 显示全部楼层
longitude(2)-longitude(1)  这个是什么意思啊?  longtitude是数组吗?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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