a2areane          = lupscale_prep[7].T
            #
  
            pergrid           = 0
            missflag          = 0
            a2upscale         = myfunc_fsub.upscale_fast(a2org.T\
                              , a1xw_corres_fort, a1xe_corres_fort\
                              , a1ys_corres_fort, a1yn_corres_fort\
                              , a2areasw.T, a2arease.T, a2areanw.T, a2areane.T\
                              , len(a1lon_upscale), len(a1lat_upscale)\
                              , pergrid, missflag, miss_out\
                              ).T

          #-- Interpolation  --------
          #
          #
          a2fin     = cf.biIntp( a1lat_upscale, a1lon_upscale, a2upscale, a1lat_fin, a1lon_fin, miss = miss_out)[0]
    
          #
          a2fin.tofile( oname ) 
          print tempname
    
    
          ##-- delete temp file ----------------
          os.remove(tempname)
          #------------------------------------
  



Exemplo n.º 2
0
      a1lat_org = nc.variables["lat"][:]
      a1lon_org = nc.variables["lon"][:]
      data = nc.variables["%s"%(var)][:]
      #*** Regrid ********
      upflag  = cmip_para.ret_upflag(model)
      if upflag == True:
        pergrid = 0 # per area (e.g. mm/m2), others (e.g, K, kg/kg, mm/s)
        #pergrid = 1 # per grid (e.g. km2/grid, population/grid)
        missflag  = 1
        ny_org    = len(a1lat_org)
        nx_org    = len(a1lon_org)
        data_one  = myfunc_fsub.upscale( data.T\
                        , a1lon_org, a1lat_org\
                        , a1lon_one, a1lat_one\
                        , pergrid, missflag, miss\
                        , nx_org, ny_org\
                        , nx_one, ny_one).T
      #-- downscale: Interpolation ----  
      elif upflag == False:
        data_one  = cf.biIntp(a1lat_org, a1lon_org, data, a1lat_one, a1lon_one)[0]
      #-------
      data_one  = array(data_one, float32)

      ########
      oname = odir + "/%s.sa.one"%(ohead)
      print oname
      ########
      f = open(oname, "wb")
      f.write(data_one)
      f.close()
            if aphromask == "TRUE":
              da2in[var] = ma.masked_where(a2aphromask ==miss_out, da2in[var]).filled(miss_out)

            #-- for global --
            a2num_glob   = a2num_glob + ma.masked_where(da2in[var]==miss_out, a2one_glob).filled(0.0)
            a2sum_glob   = a2sum_glob + ma.masked_equal(da2in[var], miss_out).filled(0.0)

            #---------------
            diname["life"]  = didir["life"]  + "/life.%04d%02d%02d%02d.sa.one"%(year, mon, day, hour)
            diname["pgrad"] = didir["pgrad"] + "/pgrad.%04d%02d%02d%02d.sa.one"%(year, mon, day, hour)
            #---------------
            da2in["pgrad"]  = fromfile(diname["pgrad"],float32).reshape(ny_org, nx_org)
            #da2in["life"]   = fromfile(diname["life"], int32).reshape(ny_org, nx_org)
    
            #--- original --> fine grid ---
            a2in_fin        = cf.biIntp(a1lat_org, a1lon_org, da2in[var], a1lat_fin, a1lon_fin, miss=miss_out)[0] 
    
            #--- cyclone center data -------------
            da2in["center"] = ma.masked_less(da2in["pgrad"], 0.0).filled(0.0)
            da2in["center"] = ma.masked_greater(da2in["center"], 0.0).filled(1.0)
            #-------------------------------------
            for iy_org in ly_org:
              for ix_org in lx_org:
                #-------------
                if thgrad_min <= da2in["pgrad"][iy_org, ix_org] < thgrad_max:
                  i = i+1
                  print iy_org, ix_org
                  #---- project center position original --> fine grid
                  lat_org          = a1lat_org[iy_org]
                  lon_org          = a1lon_org[ix_org]
                  iy_fin, ix_fin   = latlon2yx(lat_org, lon_org, lat_fin_first, lon_fin_first, dlat_fin, dlon_fin)
Exemplo n.º 4
0
 
         if var   in lvar_2d:
           args      = "wgrib %s | grep %s | wgrib %s -i -nh -o %s"%(gribname, var, gribname, tempname)
         elif var in lvar_700mb:
           args      = "wgrib %s | grep %s | grep '700 mb' | wgrib %s -i -nh -o %s"%(gribname, var, gribname, tempname)
 
         #print args
         ptemp     = subprocess.call(args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
         
         #-- Interpolation and Flipud --------
         a2org     = flipud(fromfile(tempname, float32).reshape(ny_org, nx_org))
         #
         if var in lvar_nonegative:
           a2org   = ma.masked_less(a2org, 0.0).filled(miss_out)
         #
         a2fin     = cf.biIntp( a1lat_org, a1lon_org, a2org, a1lat_fin, a1lon_fin, miss = miss_out)[0]
 
         #-- change unit [kg m-2] -> [kg m-2 s-1] ---
         if var in lvar_prec:
           coef    = 1.0/(60.0*60.0*24.0)
           a2fin   = ma.masked_equal(a2fin , miss_out) * coef
           a2fin   = a2fin.filled(0.0)
         #
         a2fin.tofile( oname ) 
         print oname
 
         
 
         ##-- delete temp file ----------------
         os.remove(tempname)
         #------------------------------------
Exemplo n.º 5
0
 if upflag == True:
   pergrid = 0 # per area (e.g. mm/m2), others (e.g, K, kg/kg, mm/s)
   #pergrid = 1 # per grid (e.g. km2/grid, population/grid)
   missflag  = 1
   ny_org    = len(a1lat_org)
   nx_org    = len(a1lon_org)
   data_one  = myfunc_fsub.upscale( data.T\
                   , a1lon_org, a1lat_org\
                   , a1lon_one, a1lat_one\
                   , pergrid, missflag, miss\
                   , nx_org, ny_org\
                   , nx_one, ny_one).T
 
 #-- downscale: Interpolation --
 elif upflag == False:
   data_one  = cf.biIntp(a1lat_org, a1lon_org, data, a1lat_one, a1lon_one, miss=miss)[0]
 #---
 data_one  = array(data_one, float32)
  
 ########
 oname = odir + "/%s.%04dhPa.%s.%s.sa.one"%(var, lev, ens, stime)
 ########
 f = open(oname, "wb")
 f.write(data_one)
 f.close()
 print oname
 #-------------
 ##----------------
 ## make pa for 6hrLev
 ##----------------
 #if dattype in ["6hrLev"]:
    print "Directory was made."

lon = arange(118, 150, 0.0125)
lat = arange(20, 47.888, 0.0083)  #before regridding

LON = arange(123.024, 147.976, 0.05)
LAT = arange(24.024, 46.024, 0.05)  #after regridding

#Precipitation conversion kg/m^2 => kg/m^2/s [0.0125x0.0083...]=>[0.05x0.05]

INFILE1 = DATADIR + 'rdr_' + str(YEAR) + str(MON) + str(DAY) + str(
    TIME) + '.bin'
prcp = fromfile(INFILE1, 'float32').reshape(24, 3360, 2560)

#array=zeros((505,481))
#intarray=array.reshape(1,505,-1)
#t_prcp=concatenate([intarray,prcp],axis=0)

P = prcp[:] / 3600

PRCP = biIntp(lat, lon, P, LAT, LON)

print str(YEAR) + str(MON) + str(DAY)
print PRCP.shape

PRCPf = PRCP.flatten()
print PRCPf.shape

PRCPf.astype('float32').tofile(OUTDIR + 'rdr_' + str(YEAR) + str(MON) +
                               str(DAY) + str(TIME) + '.bin')
                        a2up          = myfunc_fsub.upscale(a2in.T\
                                                     , a1lon_org, a1lat_org\
                                                     , a1lon_upscale, a1lat_upscale\
                                                     , pergrid, missflag, miss\
                                                     , nx_org, ny_org\
                                                     , nx_upscale, ny_upscale).T
                        #----
                    else:
                        model = "org"
                        a2up = a2in
                        a1lat_upscale = a1lat_org
                        a1lon_upscale = a1lon_org
                    #--- downscale -------
                    a2one = cf.biIntp(a1lat_upscale,
                                      a1lon_upscale,
                                      a2up,
                                      a1lat_one,
                                      a1lon_one,
                                      miss=miss)[0]
                    #-------------------------------
                    da2mean[mon] = da2mean[mon] + a2one
                    da2mean[0] = da2mean[0] + a2one
    #------------------------------
    #for mon in range(0, 12+1):
    for mon in [0] + lmon:
        da2mean[mon] = da2mean[mon] / dtimes[mon]
        soname = odir + "/%s.%s.0000%02d0000.sa.one" % (stype, var, mon)
        da2mean[mon].tofile(soname)
        print soname

    #------------------------------
 
           diname["pr"]  = didir["pr"]  + "/%s_3hr_%s_%s_%s_%04d%02d%02d%02d%02d.sa.one"%("pr", model, expr, ens, year_target, mon_target, day_target, hour_target, min_target)
           #-- prec load ------
           a2invar_temp  = fromfile(diname[var],  float32).reshape(ny_org, nx_org)
           da2in[var]    = da2in[var] + ma.masked_equal(a2invar_temp, miss_out).reshape(ny_org, nx_org)
         #-------------------
         da2in[var] = da2in[var] / len(lhour_inc)
         if type(da2in[var]) == ma.core.MaskedArray:
           da2in[var] = da2in[var].filled(miss_out)
 
         #--- load ------------
         da2in["pgrad"]  = fromfile(diname["pgrad"],float32).reshape(ny_org, nx_org)
         #da2in["life"]   = fromfile(diname["life"], int32).reshape(ny_org, nx_org)
 
         #--- original --> fine grid ---
         a2in_fin        = cf.biIntp(a1lat_org, a1lon_org, da2in[var], a1lat_fin, a1lon_fin)[0] 
 
         #--- cyclone center data -------------
         da2in["center"] = ma.masked_less(da2in["pgrad"], 0.0).filled(0.0)
         da2in["center"] = ma.masked_greater(da2in["center"], 0.0).filled(1.0)
         #-------------------------------------
         for iy_org in ly_org:
           for ix_org in lx_org:
             if thgrad_min <= da2in["pgrad"][iy_org, ix_org] < thgrad_max:
               i = i+1
               print iy_org, ix_org
               #---- project center position original --> fine grid
               lat_org          = a1lat_org[iy_org]
               lon_org          = a1lon_org[ix_org]
               iy_fin, ix_fin   = latlon2yx(lat_org, lon_org, lat_fin_first, lon_fin_first, dlat_fin, dlon_fin)
 
Exemplo n.º 9
0
dumpname = odir + "/dump.txt"
print dumpname
ptemp  = subprocess.call("wgrib -V %s > %s"%(gribname, dumpname), shell=True)
  
#-----------------
#----- Names ------------
oname_tail = gribname.split("/")[-1]
oname_tail = ".".join(oname_tail.split(".")[:-1])

tempname   = odir + "/%s.temp.sa.one"%(oname_tail)
oname      = odir + "/%s.sa.one"%(oname_tail)

#-- grib --> binary -----

args      = "wgrib %s | wgrib %s -i -nh -o %s"%(gribname, gribname, tempname)
#args      = "wgrib %s -nh -o %s"%(gribname, tempname)
ptemp     = subprocess.call(args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#-- Interpolation and Flipud --------
a2org     = flipud(fromfile(tempname, float32).reshape(ny_org, nx_org))
a2fin     = cf.biIntp( a1lat_org, a1lon_org, a2org, a1lat_fin, a1lon_fin,)
a2fin.tofile( oname ) 
print oname

#-- delete temp file ----------------
os.remove(tempname)
#------------------------------------




LON = arange(123.024, 147.976, 0.05)
LAT = arange(24.024, 46.024, 0.05)  #after regridding

#Precipitation conversion kg/m^2 => kg/m^2/s [0.05x0.0625]=>[0.05x0.05]

INFILE1 = DATADIR + 'apcp_' + str(YEAR) + str(MON) + str(DAY) + str(
    TIME) + '.bin'
prcp = fromfile(INFILE1, 'float32').reshape(FT, 505, 481)

#array=zeros((505,481))
#intarray=array.reshape(1,505,-1)
#t_prcp=concatenate([intarray,prcp],axis=0)

P = prcp[:] / 3600

PRCP = biIntp(lat, lon, P, LAT, LON)

print PRCP.shape

PRCPf = PRCP.flatten()
print PRCPf.shape

PRCPf.astype('float32').tofile(OUTDIR + 'prcp_' + str(YEAR) + str(MON) +
                               str(DAY) + str(TIME) + '.bin')

#Air Pressure conversion Pa => hPa [0.05x0.0625]=>[0.05x0.05]

INFILE2 = DATADIR + 'pres_' + str(YEAR) + str(MON) + str(DAY) + str(
    TIME) + '.bin'
pres = fromfile(INFILE2, 'float32').reshape(FT + 1, 505, 481)