爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4923|回复: 2

NCL多层次插值

[复制链接]
发表于 2015-4-15 15:03:50 | 显示全部楼层 |阅读模式
GrADS
系统平台:
问题截图: -
问题概况: NCL多层次插值遇到问题
我看过提问的智慧: 看过
自己思考时长(天): 1

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

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

x
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
in1 =addfile("/home/hp/hgt.mean.nc","r")
        time  = in1->time
        lon2d   = in1->lon
        lat2d   = in1->lat
        lev   = in1->level
hgt = in1->hgt(382:781,:,::-1,:)



;-------------------------------------------------------------------------------------------
summer = new((/34,17,73,144/),float)
do k=0,33
  summer(k,:,:,:)=(hgt(12*k,:,:,:)+hgt(12*k+1,:,:,:)+hgt(12*k+2,:,:,:)+hgt(12*k+3,:,:,:))/4.0
end do

      
newsummer = new((/34,17,181,360/),float)
newsummer!0="time"
newsummer!1="lev"
newsummer!2="lat"
newsummer!3="lon"
newsummer&time=ispan(1979,2012,1)
newsummer&lev=hgt&level
  newlat = fspan(-90,90,181)
  newlon = fspan(0,360,360)
  newlat@units = "degrees_north"
  newlon@units = "degrees_east"
  do l=0,16
  newsummer(:,l,:,:)=linint2(lon2d,lat2d,hgt,True,newlon,newlat,0)
end do
hgt@lat2d=lat2d
hgt@lon2d=lon2d

newsummer@_FillValue=-9.99e+33
newsummer@missing_value=newsummer@_FillValue
newsummer&lat=newlat
newsummer&lon=newlon
newsummer&lev@units="hpa"
newsummer&time@units="year"
newsummer&lat@units="degrees_N"
newsummer&lon@units="degrees_E"
newsummer=dim_standardize(newsummer,1)
printVarSummary(newsummer)
fout=addfile("/home/hp/hgt11-2.nc","c")
fout->hgt=newsummer(0:33,:,:,:)
end

#######################################################################
以上为程序,报错为: Unable to allocate memory for output array
错误行为: newsummer(:,l,:,:)=linint2(lon2d,lat2d,hgt,True,newlon,newlat,0)
数据有17层,单层插值时这个函数没有问题,多层遇到问题,加了循环也还是有问题,请问要如何改正。

密码修改失败请联系微信:mofangbao
发表于 2015-4-15 16:06:05 | 显示全部楼层
“Unable to allocate memory for output array”错误信息很明确,内存不够。通过多次分层插值是一种解决方式,但从“newsummer(:,l,:,:)=linint2(lon2d,lat2d,hgt,True,newlon,newlat,0)”来看,并没有指定hgt的第二维,所以循环还是有问题。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-4-15 20:45:54 | 显示全部楼层
longlivehj 发表于 2015-4-15 16:06
“Unable to allocate memory for output array”错误信息很明确,内存不够。通过多次分层插值是一种解决方 ...

好的,重新设定一次,谢谢~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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