请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7385|回复: 3

[其他] 求积分用vibeta不合适

[复制链接]

新浪微博达人勋

发表于 2016-11-29 21:46:01 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 837078493 于 2016-12-21 10:08 编辑

想要计算如图的公式,本来是用欧洲中心的不同气压层的u,v,q 还有地表气压计算的,但是发现欧洲中心的数据中竟然有如图的选项(
Vertical integral of divergence of moisture flux
), 我就验证了一下我计算的准确性,发现大小不一样,而且大部分的正负相反,附上我自己计算的程序:
load "$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/csm/shea_util.ncl"
begin
;************************************************
;***********************************************
     nlat=15
     nlon=25
     ntime=612
     nday =612
     nmonth =30
     nlev=37
     p       = (/ 100000.,97500.,95000.,92500.,90000.,87500.,85000.,82500.,80000.,77500.,\
                                 75000.,70000.,65000.,60000.,55000.,50000., \
               45000.,40000.,35000.,30000.,25000.,22500.,20000.,17500.,15000.,12500.,10000., \
                7000.,5000.,3000.,2000.,1000.,700.,500.,300.,200.,100. /)
     linlog = 1
     ptop   = 100.
     pbot   =110000.
uu =new((/nday,nlev,nlat,nlon/),float)
vv =new((/nday,nlev,nlat,nlon/),float)
pres =new((/nday,nlat,nlon/),float)
qq =new((/nday,nlev,nlat,nlon/),float)
      xuhao = 1
     u_file=addfile("MFC/"+xuhao+".nc","r")
     p_file=addfile("MFC/p"+xuhao+".nc","r")
         uu(:,:,:,:)=u_file->U_GDS0_ISBL(:,:,26:40,60:84)
         vv(:,:,:,:)=u_file->V_GDS0_ISBL(:,:,26:40,60:84)
         pres(:,:,:)=p_file->SP_GDS0_SFC(:,96:110,200:224)
         qq(:,:,:,:)=u_file->Q_GDS0_ISBL(:,:,26:40,60:84)
f=addfile("chulishuju/MFC/1.nc","r")
lat=f->g0_lat_2(26:40)
lon=f->g0_lon_3(60:84)

         qu = new((/ntime,nlev,nlat,nlon/),float)
         qv = new((/ntime,nlev,nlat,nlon/),float)
         mfc =new((/ntime,nlat,nlon/),float)
         qu=qq*uu
         qv=qq*vv
         copy_VarCoords(uu,qu)
         copy_VarCoords(vv,qv)
         qu@_FillValue= 1e+20
         qv@_FillValue= 1e+20
    u1 = vibeta (p,qu(initial_time0_hours|:,g0_lat_2|:,g0_lon_3|:,lv_ISBL1|:),linlog,pres,pbot,ptop)/9.8
    v1= vibeta (p,qv(initial_time0_hours|:,g0_lat_2|:,g0_lon_3|:,lv_ISBL1|:),linlog,pres,pbot,ptop)/9.8
         mfc1=uv2dv_cfd (u1,v1,lat,lon,3)
         copy_VarCoords(uu(:,0,:,:),u1)
         copy_VarCoords(vv(:,0,:,:),v1)
        copy_VarCoords(vv(:,0,:,:),mfc1)

u2 =new ((/nmonth,nlat,nlon/),float)
v2 =new ((/nmonth,nlat,nlon/),float)
mfc2 =new ((/nmonth,nlat,nlon/),float)
do i=0,29
u2(i,:,:)= dim_avg_n(u1(i*20:i*20+19,:,:),0)
v2(i,:,:)= dim_avg_n(v1(i*20:i*20+19,:,:),0)
mfc2(i,:,:)= dim_avg_n(mfc1(i*20:i*20+19,:,:),0)
end do
u4 =new(30,float)
v4 =new(30,float)
mfc4 =new(30,float)
u4=dim_avg_n(u2,(/1,2/))
v4=dim_avg_n(v2,(/1,2/))
mfc4=dim_avg_n(mfc2,(/1,2/))
         asciiwrite ("1MFC.txt" ,- mfc4)
end
我发现了种说法求积分的时候是要根据垂直坐标系算
http://www.ncl.ucar.edu/Document/Functions/Built-in/dpres_plevel.shtmlhttp://www.ncl.ucar.edu/Document/Functions/Built-in/dpres_hybrid_ccm.shtmlhttp://www.ncl.ucar.edu/Document/Functions/Built-in/dz_height.shtml感觉应该是积分求的时候的错误,家园里的大部分是按照vibeta求得,如果想要和ERA-interim 一致的话 应该不是用vibeta求得吧?应该怎么算呢 1.png 求各位大神指教!




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

新浪微博达人勋

 楼主| 发表于 2016-12-21 10:03:23 | 显示全部楼层
自己顶一下啊  求各位大神指教啊指教
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-29 09:25:52 | 显示全部楼层
同不懂!我在ncl-talk里看到过vibeta主要是用于站点资料的,Dennis不推荐用它,但是理由却没有讲明。。
http://mailman.ucar.edu/pipermai ... ebruary/008067.html
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-27 17:30:16 | 显示全部楼层
还是没有搞懂,楼主有没有弄清楚呀
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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