爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4890|回复: 3

输出文件开始正确后面错误

[复制链接]
发表于 2016-9-15 09:10:28 | 显示全部楼层 |阅读模式

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

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

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





1.png
2.png
密码修改失败请联系微信:mofangbao
发表于 2016-9-15 09:34:14 | 显示全部楼层
你标注的可能有问题处,看起来没什么问题的。根据你描述的问题,我觉得可能的原因是你输出二进制GRD文件的NCL读写函数fbinwrite(fbinwrite: Writes a single binary record to a file in manner analogous to fortran's "form=unformatted, access=sequential".)的问题,我们通常使用的grd文件存取方式都是“access=direct”,建议你考虑一下fbindirwrite函数将数据输出。还有一个小建议,NCL里面对于计算一般的统计变量距平等都有内置函数,最好使用它们,少用循环操作,可以加快NCL程序的运行效率。
密码修改失败请联系微信:mofangbao
发表于 2016-9-15 19:32:01 | 显示全部楼层
谢谢楼主!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

 楼主| 发表于 2016-9-17 10:49:04 | 显示全部楼层
风之精灵 发表于 2016-9-15 09:34
你标注的可能有问题处,看起来没什么问题的。根据你描述的问题,我觉得可能的原因是你输出二进制GRD文件的N ...

谢谢,问题已解决。最后是因为大型机账号内存不足,换个账号就好了~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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