def test_newpres(): gp_0740=read_rays.construct_lassen_scan(path='/bm/gdata/scollis/gunn_pt/20060122_074001/') ber_0740=read_rays.construct_uf_scan(path='/bm/gdata/scollis/berrimah/20060122_074003/') ber_loc=[-12.457, 130.925] gp_loc= [-12.2492, 131.0444] ldict={'lat_0':gp_loc[0], 'lon_0':gp_loc[1],'llcrnrlat':-13.0, 'llcrnrlon':130.2, 'urcrnrlat':-12.0 , 'urcrnrlon':131.2, 'lat_ts':gp_loc[0]} az_scan=0 pres.plot_ppi(ber_0740[az_scan], 'CZ', radar_loc=ber_loc, loc_dict=ldict, fig_name='ber_cz_ppi.png') pres.plot_ppi(gp_0740[az_scan], 'CZ', radar_loc=gp_loc, loc_dict=ldict, fig_name='gp_cz_ppi.png') pres.plot_ppi(ber_0740[az_scan], 'VR', radar_loc=ber_loc, loc_dict=ldict, fig_name='ber_vr_ppi.png') pres.plot_ppi(gp_0740[az_scan], 'VR', radar_loc=gp_loc, loc_dict=ldict, fig_name='gp_vr_ppi.png') disp=mathematics.corner_to_point(gp_loc, ber_loc) xar=linspace(-50.,50., 100)*1000.0 yar=linspace(-50.,50., 100)*1000.0 lev=1000.0 lstr="%(lev)05d" %{'lev':lev} pref_dir='20062201_0740_caps/' cap_gp_vr=radar_to_cart.make_cappi(gp_0740, xar, yar, lev, 'VR') cap_ber_vr=radar_to_cart.make_cappi(ber_0740, xar-disp[0], yar-disp[1], lev, 'VR') pres.plot_cappi(xar,yar,cap_gp_vr,gp_0740[0], parm='VR', fig_name=pref_dir+'gp_cappi_vr_'+lstr+'.png', loc_dict=ldict, radar_loc=gp_loc) pres.plot_cappi(xar,yar,cap_ber_vr,ber_0740[0], parm='VR', fig_name=pref_dir+'ber_cappi_vr_'+lstr+'.png', loc_dict=ldict, radar_loc=gp_loc) #cap_gp_test=radar_to_cart.make_cappi_testmode(gp_0740, xar, yar, lev, 'VR') #plot_cappi(xar,yar,cap_gp_test,ber_0740[0], parm='TEST', fig_name='test.png', loc_dict=ldict, radar_loc=gp_loc) gp_cube_vr=zeros([100,100,31], dtype=float) ber_cube_vr=zeros([100,100,31], dtype=float) levs=linspace(500, 10500, 31) xar=linspace(-50.,50., 100)*1000.0 yar=linspace(-50.,50., 100)*1000.0 for i in range(31): gp_cap_vr=radar_to_cart.make_cappi(gp_0740, xar, yar, levs[i], 'CZ') gp_cube_vr[:,:,i]=gp_cap_vr ber_cap_vr=radar_to_cart.make_cappi(ber_0740, xar-disp[0], yar-disp[1], levs[i], 'CZ') ber_cube_vr[:,:,i]=ber_cap_vr for i in range(31): lstr="%(lev)05d" %{'lev':levs[i]} pres.plot_cappi(xar,yar,gp_cube_vr[:,:,i],gp_0740[0], parm='CZ', fig_name=pref_dir+'gp_cappi_cz_'+lstr+'.png', loc_dict=ldict, radar_loc=gp_loc) pres.plot_cappi(xar,yar,ber_cube_vr[:,:,i],ber_0740[0], parm='CZ', fig_name=pref_dir+'ber_cappi_cz_'+lstr+'.png', loc_dict=ldict, radar_loc=gp_loc) print 'Done', i, ' of 31'
def radar_to_winds(datestr, **kwargs): #check to see if we have the radar files #check to see if there are deailased files #kwargs={} loud=kwargs.get('loud', False) #datestr='200601220700' ini_fname=kwargs.get('ini_fname', os.getenv('HOME')+'/bom_mds/bom_mds.ini') dateobj=num2date(datestr2num(datestr)) ini_fname=kwargs.get('ini_fname', os.getenv('HOME')+'/bom_mds/bom_mds.ini') ini_dict=parse_ini.parse_ini(ini_fname) radar1_deal_list=os.listdir(ini_dict['radar1_path']) radar2_deal_list=os.listdir(ini_dict['radar2_path']) radar1_raw_list=os.listdir(ini_dict['radar1_raw_path']) radar2_raw_list=os.listdir(ini_dict['radar2_raw_path']) radar1_target=ini_dict['radar1_prefix']+std_datestr(dateobj, ini_dict['radar1_type']) radar2_target=ini_dict['radar2_prefix']+std_datestr(dateobj, ini_dict['radar2_type']) poss_deal_files1=[] for item in radar1_deal_list: if radar1_target in item: poss_deal_files1.append(item) if len(poss_deal_files1)==0: poss_raw_files1=[] print "No dealiased files found... Dealiasing" for item in radar1_raw_list: if radar1_target in item: poss_raw_files1.append(item) if len(poss_raw_files1)==0: #print "no files found" raise IOError, 'Radar 2 File not there' #return else: print "Dealiasing "+poss_raw_files1[0] radar1_filename=dealias.dealias_arb(poss_raw_files1[0], ini_dict['radar1_type'], ini_dict['radar1_raw_path'], ini_dict['radar1_path'], ini_dict['radar1_prefix']) else: radar1_filename=poss_deal_files1[0] poss_deal_files2=[] for item in radar2_deal_list: if radar2_target in item: poss_deal_files2.append(item) if len(poss_deal_files2)==0: poss_raw_files2=[] print "No dealiased files found... Dealiasing" for item in radar2_raw_list: if radar2_target in item: poss_raw_files2.append(item) if len(poss_raw_files2)==0: #print "no files found" raise IOError, 'Radar 2 File not there' else: radar2_filename=dealias.dealias_arb(poss_raw_files2[0], ini_dict['radar2_type'], ini_dict['radar2_raw_path'], ini_dict['radar2_path'], ini_dict['radar2_prefix']) else: radar2_filename=poss_deal_files2[0] if loud: print "Loading radar file 1" if 'radar1_path' in ini_dict.keys(): radar1=read_radar.load_radar(ini_dict['radar1_path']+radar1_filename) else: radar1=read_radar.load_radar(radar1_filename) if loud: print "Loading radar file 2" if 'radar2_path' in ini_dict.keys(): radar2=read_radar.load_radar(ini_dict['radar2_path']+radar2_filename) else: radar2=read_radar.load_radar(radar2_filename) pres.plot_ppi(radar2[2],'VE', fig_path='/scratch/bom_mds_dumps/', fig_name='radar2_ve.png') pres.plot_ppi(radar2[2],'CZ', fig_path='/scratch/bom_mds_dumps/', fig_name='radar2_cz.png') cappi_z_bounds=ini_dict.get('cappi_z_bounds', [500,15000]) cappi_xy_bounds=ini_dict.get('cappi_xy_bounds', [-50000, 50000]) cappi_resolution=ini_dict.get('cappi_resolution', [100, 40]) levs=linspace(cappi_z_bounds[0], cappi_z_bounds[1], cappi_resolution[1]) xar=linspace(cappi_xy_bounds[0], cappi_xy_bounds[1], cappi_resolution[0]) yar=linspace(cappi_xy_bounds[0], cappi_xy_bounds[1], cappi_resolution[0]) displace=mathematics.corner_to_point(radar1[0]['radar_loc'], radar2[0]['radar_loc']) if loud: print "Cappi-ing radar 1" #radar1_cube_=radar_to_cart.make_cube(radar1, xar, yar, levs) radar1_cube=cappi_v2.make_cube_all(radar1,xar, yar,levs) #max_el=array([scan['Elev'][0] for scan in radar1]).max() #radar1_cube=cappi_v2.blend(radar1_cube_v,radar1_cube_h, max_el,loud=True) if loud: print "Cappi-ing radar 2" #radar2_cube_v=radar_to_cart.make_cube(radar2, xar, yar, levs, displacement=displace) radar2_cube=cappi_v2.make_cube_all(radar2,xar, yar,levs, displacement=displace) #max_el=array([scan['Elev'][0] for scan in radar2]).max() #radar2_cube=cappi_v2.blend(radar2_cube_v,radar2_cube_h, max_el,loud=True) #radar2_cube_v=radar_to_cart.make_cube(radar2, xar, yar, levs, displacement=displace) cube_fname=ini_dict['cube_path']+'cappi_'+std_datestr(radar1_cube['date'], "uf")+'.nc' #netcdf_utis.save_data_cube(radar1_cube, radar2_cube, cube_fname) #Initial Guess req=[ 'alt(m)', 'wspd(m/s)', 'wdir(degs)', 'tdry(degs)','press(hPa)' ] first_sonde,second_sonde = read_sounding.get_two_best_conc_sondes(datestr, req_vars=req) interp_sonde=read_sounding.interp_sonde_time(first_sonde, second_sonde, dateobj, levs) if ini_dict['initial_guess']=='sonde': #using a sonde for out initial gues u_ig=ones(radar1_cube['CZ'].shape, dtype=float) v_ig=ones(radar1_cube['CZ'].shape, dtype=float) w_ig=zeros(radar1_cube['CZ'].shape, dtype=float) for k in range(len(levs)): u_ig[:,:,k]=1.0*u_ig[:,:,k]*interp_sonde['wspd(m/s)'][k]*sin(pi*interp_sonde['wdir(degs)'][k]/180.0) v_ig[:,:,k]=1.0*v_ig[:,:,k]*interp_sonde['wspd(m/s)'][k]*cos(pi*interp_sonde['wdir(degs)'][k]/180.0) else: u_ig=zeros(radar1_cube['CZ'].shape, dtype=float) v_ig=zeros(radar1_cube['CZ'].shape, dtype=float) w_ig=zeros(radar1_cube['CZ'].shape, dtype=float) Re=6371.0*1000.0 rad_at_radar=Re*sin(pi/2.0 -abs(radar1[0]['radar_loc'][0]*pi/180.0))#ax_radius(float(lat_cpol), units='degrees') lons=radar1[0]['radar_loc'][1]+360.0*xar/(rad_at_radar*2.0*pi) lats=radar1[0]['radar_loc'][0] + 360.0*yar/(Re*2.0*pi) #Masking angs=array(propigation.make_lobe_grid(radar2[0]['radar_loc'], radar1[0]['radar_loc'], lats,lons)) mywts=met.make_mask_bad1(radar2_cube, radar1_cube, angs, 1.0, 80.0) print "Mean gp masked Velocity ", (radar1_cube['VE']*mywts).mean() print "min gp masked Velocity ", (radar1_cube['VE']*mywts).min() print "max gp masked Velocity ", (radar1_cube['VE']*mywts).max() print "Mean Berrimah masked Velocity ", (radar2_cube['VE']*mywts).mean() print "min Berrimah masked Velocity ", (radar2_cube['VE']*mywts).min() print "max Berrimah masked Velocity ", (radar2_cube['VE']*mywts).max() print "Mean gp masked CZ ", (radar1_cube['CZ']*mywts).mean() print "min gp masked CZ ", (radar1_cube['CZ']*mywts).min() print "max gp masked CZ ", (radar1_cube['CZ']*mywts).max() print "Mean Berrimah masked CZ ", (radar2_cube['CZ']*mywts).mean() print "min Berrimah masked CZ ", (radar2_cube['CZ']*mywts).min() print "max Berrimah masked CZ ", (radar2_cube['CZ']*mywts).max() print "Number of masked points", (mywts.shape[0]*mywts.shape[1]*mywts.shape[2])-mywts.sum() print "Number of unmasked points ", mywts.sum() print "**********************FALLSPEED INFO****************************" #def terminal_velocity(refl, temps, levs, display=False): tdry=interp_sonde['tdry(degs)'] pressure=interp_sonde['press(hPa)'] dummy=met.terminal_velocity(radar1_cube['CZ']*mywts, tdry, radar1_cube['levs'], display=True) print "**********************FALLSPEED INFO****************************" f=0.0 X=[u_ig,v_ig,w_ig] G,F,X=grad_conj_solver_3d.gracon_3d_packaged(X ,radar2_cube, radar1_cube, mywts, interp_sonde) u_array,v_array,w_array=X radar1_cube.update({'u_array':u_array, 'v_array':v_array, 'w_array':w_array}) netcdf_utis.save_data_cube(radar1_cube, radar2_cube, '/data/cube_data/'+std_datestr(dateobj, "uf") +'_winds.nc')
radar1=read_radar.load_radar(ini_dict['radar1_path']+radar1_filename) else: radar1=read_radar.load_radar(radar1_filename) if loud: print "Loading radar file 2" if 'radar2_path' in ini_dict.keys(): radar2=read_radar.load_radar(ini_dict['radar2_path']+radar2_filename) else: radar2=read_radar.load_radar(radar2_filename) pres.plot_ppi(radar2[2],'VE', fig_path='/scratch/bom_mds_dumps/', fig_name='radar2_ve.png') pres.plot_ppi(radar2[2],'CZ', fig_path='/scratch/bom_mds_dumps/', fig_name='radar2_cz.png') cappi_z_bounds=ini_dict.get('cappi_z_bounds', [500,15000]) cappi_xy_bounds=ini_dict.get('cappi_xy_bounds', [-50000, 50000]) cappi_resolution=ini_dict.get('cappi_resolution', [100, 40]) levs=linspace(cappi_z_bounds[0], cappi_z_bounds[1], cappi_resolution[1]) xar=linspace(cappi_xy_bounds[0], cappi_xy_bounds[1], cappi_resolution[0]) yar=linspace(cappi_xy_bounds[0], cappi_xy_bounds[1], cappi_resolution[0]) displace=mathematics.corner_to_point(radar1[0]['radar_loc'], radar2[0]['radar_loc']) if loud: print "Cappi-ing radar 1" #radar1_cube_=radar_to_cart.make_cube(radar1, xar, yar, levs) radar1_cube=cappi_v2.make_cube_all(radar1,xar, yar,levs) #max_el=array([scan['Elev'][0] for scan in radar1]).max() #radar1_cube=cappi_v2.blend(radar1_cube_v,radar1_cube_h, max_el,loud=True)