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) #------------------------------------
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)
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) #------------------------------------
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)
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)