Help to find daily total

From: Ammu Priya <ammu9016_at_nyahnyahspammersnyahnyah>
Date: Wed Dec 23 2009 - 02:52:01 MST

Sir,
1.Version 5.1.1
2.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 "/home/akila/ncl/lib/scripts/my_scripts.ncl"

begin

   nlat = 94
   mlon = 192
   lon = ispan(0,mlon-1,1)*1.875-180
; lat = ispan(0,nlat-1,1)*1.875-88.54195
  print(lon)
;printVarSummary(lon)
  glat = gaus(nlat/2)
  lat =glat(:,0)
  lat=lat(::-1)
print(lat)

   lat!0 = "lat"
   lat&lat = lat
   lat_at_long_name = "latitude"
   lat_at_units = "degrees_north"
   lon!0 = "lon"
   lon&lon = lon
   lon_at_long_name = "longitude"
   lon_at_units = "degrees_east"

  ; miscellaneous
   tunits = "hours since 1990-04-01 00:00:0.0"
   minute = 0
   second = 0.d0
   filAtt = True
   nline = inttochar(10)

   lonout = ispan(0,mlon-1,1)*1.875 -180
   lonout!0 = "lon"
   lonout&lon = lonout
   lonout@long_name = "Longitude"
   lonout@units = "degrees_east"

   lat@long_name = "Latitude"
   lat@units = "degrees_north"

   mday = (/0,31,28,31,30,31,30,31,31,30,31,30,31/)

   diri = "/xxxxx/"
   diro = "/xxxxx/"

   p1 = new((/nlat,mlon/),float)

   do iyr = 1990,1990
    if(mod(iyr,400).eq.0 .or. mod(iyr,4).eq.0 .and. mod(iyr,100).ne.0)then
     mday(2) = 29
    else
     mday(2) = 28
    end if

    do imo = 04,12
     fout = diro+"prec.flx."+sprinti("%.2d",iyr)+sprinti("%.2d",imo)+".dy.nc"
     print(fout)

     time = new(mday(imo),double,"No_FillValue")
     time!0 = "time"
     time@units = "hours since 1800-04-01 00:00:00"
     time@long_name = "Time"

     prec = new((/mday(imo),nlat,mlon/),float,"No_FillValue")
     prec@_FillValue = 1e+20
     prec!0 = "time"
     prec!1 = "lat"
     prec!2 = "lon"
     prec&lat = lat
     prec&lon = lonout
     prec@long_name = "Precipitation"
     prec@units = "mm"
; prec@units = "kg/m^2/s"

     prec = 0.0
     
     do idy = 01, mday(imo)
; do idy =09,31
      time(idy-1) = ut_inv_calendar(iyr,imo,idy,12,0,0,time@units,0)

      do ihr = 00, 00
       fin = diri+"flx."+"fd"+sprinti("%d",iyr)+sprinti("%.2d",imo)+sprinti("%.2d",idy)+sprinti("%.2d",ihr)+".grb"
; print(iyr+" "+imo+" "+idy+" "+ihr+" "+fin)

       f = addfile(fin,"r")
; printVarSummary(f)
       fvname=getfilevarnames(f)

      vname1="PRATE_98_SFC_ave"
      vname2="PRATE_98_SFC_ave3h"
      vname3="PRATE_98_SFC_10"

     if(any(fvname .eq. vname1))then
        p0 = f->$vname1$
     end if
     if(any(fvname .eq. vname2))then
        p0 = f->$vname2$
     end if
     if(any(fvname .eq. vname3))then
        p0 = f->$vname3$
     end if

       p0!0 = "lat_98"
       p0!1 = "lon_98"
       p = p0(lat_98|:,lon_98|:)
       p1(:,0:mlon/2-1) = p(:,mlon/2:mlon-1)
       p1(:,mlon/2:mlon-1) = p(:,0:mlon/2-1)
       p1@_FillValue = -1e+20
       prec(idy-1,:,:) = prec(idy-1,:,:) + p1*3600*24

       delete(p0)
       delete(p)
       delete(f)
      end do
; id =id+1
     end do
     time&time = time
;print(time)
     prec&time = time
     printVarSummary(prec)
     printMinMax(prec,0)

     fnc = addfile(fout,"c")
     setfileoption(fnc,"DefineMode",True)

     fatt = True
     fatt@title = "grb flux data"
     fatt@Accumulation_Hour = "Daily Average"
     fileattdef(fnc,fatt)

     dimname = (/"time","lat","lon"/)
     dimsize = (/mday(imo), nlat, mlon/)
     dimunlim = (/True, False, False/)
     filedimdef(fnc,dimname,dimsize,dimunlim)

     filevardef(fnc, "time", typeof(time), getvardims(time))
     filevardef(fnc, "lat", typeof(lat), getvardims(lat))
     filevardef(fnc, "lon", typeof(lonout), getvardims(lonout))
     filevardef(fnc, "prec", typeof(prec), getvardims(prec))

     filevarattdef(fnc,"time",time)
     filevarattdef(fnc,"lat",lat)
     filevarattdef(fnc,"lon",lonout)
     filevarattdef(fnc,"prec",prec)

     setfileoption(fnc,"DefineMode",False)

     fnc->time = (/time/)
     fnc->lat = (/lat/)
     fnc->lon = (/lonout/)
     fnc->prec = (/prec/)

     delete(prec)
     delete(time)
   end do
   end do
end
3.want to calculate daily average
regards,
amm

      

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Wed Dec 23 02:52:07 2009

This archive was generated by hypermail 2.1.8 : Tue Dec 29 2009 - 10:29:16 MST