- 积分
- 809
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-8-26
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我用NCL对14年模式降水数据求距平,在输出之前print了一下都是对的,可是在输出grd时,前面两年的文件都是正确的,后面突然出错。而且检查过气候态文件没有问题。这是怎么回事?程序如下:
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"
;********** define parameter *************
nxnc = 240
nync = 121
nx = 144
ny = 73
yrs = 1999
yre = 2012
nyr = yre-yrs+1
nmon = 12
ndy = 365
nlag = 4
ntau = 240
nDAY=60
month=(/"01","02","03","04","05","06","07","08","09","10","11","12"/)
day=(/"01","02","03","04","05","06","07","08","09","10","11","12",\
"13","14","15","16","17","18","19","20","21","22","23","24",\
"25","26","27","28","29","30","31"/)
month_day=(/31,28,31,30,31,30,31,31,30,31,30,31/)
lag=(/"pf.surface.tp.grib2.001.nc","pf.surface.tp.grib2.002.nc","pf.surface.tp.grib2.003.nc","cf.surface.tp.grib2.000.nc"/)
var="tp"
begin ;************* define anomaly ************************
;;读入气候态文件
ff="/cmb/g6/jinff/LCC/s2s/tp-climatology/tp.day.cli.nc"
f1=addfile(ff,"r")
XX=f1->XX_cli
;;********************处理模式资料***************************
XX_anoma = new((/ndy,nDAY,ny,nx/),float)
XX_anoma1 = new((/nDAY,ny,nx/),float)
XX_anoma!0="time"
XX_anoma!1="lev"
XX_anoma!2="lat"
XX_anoma!3="lon"
XX_anoma = 0.
XX_anoma1!0="lev"
XX_anoma1!1="lat"
XX_anoma1!2="lon"
XX_anoma1 = 0.
do year=2003, 2003 ;;;cuo
;** begin year loop
it=0
do imon=0,11
do idy=0,month_day(imon)-1
XX0_mean=new((/ntau,nync,nxnc/),float)
XX0_mean=0.
XX1_mean=new((/nDAY,nync,nxnc/),float)
XX1_mean=0.
XX2_mean=new((/nDAY,nync,nxnc/),float)
XX2_mean=0.
;;***** 处理数据及计算距平 ******
do ilag=0,nlag-1
fdir="/cmb/g4/bcccsmxp/T106csm_s2s/PRODUCTS/grib2nc/"+year+"/"+year+""+month(imon)+""+day(idy)+"/"+lag(ilag)+"" ;;;可能有问题
in=addfile(""+fdir+"","r")
XX0 = short2flt(in->tp(:,::-1,:)) ;;24.可能有问题
nt = dimsizes(in->time)
XX0_mean=XX0_mean+XX0/nlag
delete(fdir )
delete(in)
delete(XX0)
end do
;;******处理每天6小时资料 ******
iDAY=0
do itau=0,ntau-1,4
XX1_mean(iDAY,:,:)=XX0_mean(itau,:,:)
iDAY=iDAY+1
end do
;;*****得到逐日降水资料 ********
do iDAY=1, nDAY-1
XX2_mean(iDAY,:,:)=XX1_mean(iDAY,:,:)-XX1_mean(iDAY-1,:,:)
end do
XX2_mean(0,:,:)=XX1_mean(0,:,:)
;;**差值成2.5*2.5*******
XX_mean = f2fsh(XX2_mean,(/ny,nx/) )
delete(XX1_mean)
delete(XX2_mean)
;;****距平*******
XX_anoma(it,:,:,:)=XX_mean(:,:,:)-XX(it,:,:,:)
XX_anoma1(:,:,:)=XX_anoma(it,:,:,:)
;;****输出文件****
outfile = "./"+year+"/"+var+".day.cli."+month(imon)+""+day(idy)+".grd"
system ("rm -f " + outfile) ; remove any previously exist file
fbinwrite(outfile, XX_anoma1)
it=it+1
delete(outfile)
print("year="+year+ "month="+month(imon)+ "day="+day(idy))
end do
end do
end do
end
|
-
-
|