; ; Read in the average monthly data ; pro get_average_data,site,searchdate,avg_int ; ; common containing the data ; common monthly_averaged_data, base_time,time_offset,height,reflectivity,$ reflectp, reflectc, cbase, ctop, velocity, clutter,maxclutter,spectrum,$ lwp,vceil,numtimes,numheights,allclutter,goodclutter,temp,press,$ vap,dir,dsol,sfpres,numlayers,twsflux,zenith,solarratio,sfcalbedo,$ column_cfrac,top_press_layer_1,top_press_layer_2,top_press_layer_3,$ top_press_layer_4,top_press_layer_5 ; ; Date to be analyzed ; curdate=strcompress(string(searchdate),/remove_all) month=strmid(curdate,4,2) site=strcompress(site,/remove_all) ; ; Open the netcdf file ; if site eq 'sgp' then begin armdatadir='/data/mace3/arm_data/sgp/sgp.average.'+avg_int+'/' if avg_int eq '1hr' then $ arm_file='sgp.average.'+avg_int+'.'+curdate+'*cd*' $ else $ arm_file='sgp.average.'+avg_int+'.'+curdate+'*.000000.cd*' endif else if site eq 'nsa' then begin armdatadir='/data/mace2/arm_data/nsa/nsa.average.'+avg_int+'/' arm_file='nsa.average.'+avg_int+'.'+curdate+'*cd*' endif else if site eq 'twpc1' then begin armdatadir='/data/mace/arm_data/twp/Manus_C1/twpc1.average.'+avg_int+'/' arm_file='twpc1.average.'+avg_int+'.'+curdate+'*cd*' endif else if site eq 'twpc2' then begin armdatadir='/data/mace/arm_data/twp/Nauru_C2/twpc2.average.'+avg_int+'/' arm_file='twpc2.average.'+avg_int+'.'+curdate+'*cd*' endif else if site eq 'crystal' then begin armdatadir='/data/mace5/arm_data/crystal_face/western_ground_site/crystal.average.'+ $ avg_int+'/' arm_file='crystal.average.'+avg_int+'.'+curdate+'*cd*' endif ; ; Create and change to the data directory ; ;path=armdatadir ;pushd,path ; ; Unzip the data files ; arm_file=armdatadir+arm_file unix_command='gunzip -fq '+arm_file spawn,unix_command ; ; Get a list of the matching file names ; print, 'filename ',arm_file files=findfile(arm_file,count=num_files) print, 'Found ',num_files,' files' ; ; Loop through all the matching files in the directory ; j=-1 ;counts number of files containing the variable for i=0,num_files-1 do begin ; ; Don't try to process any gif files that may be in the directory ; if strpos(files[i],'gif') eq -1 and $ strpos(files[i],'png') eq -1 then begin j=j+1 print,i,j,files[i] ; ; extract the date from the name of the file ; parts=strsplit(files[i],'/',/extract) filename=parts[n_elements(parts)-1] parts=strsplit(filename,'.',/extract) date=parts[3] year=fix(strmid(date,0,4)) month=fix(strmid(date,4,2)) day=fix(strmid(date,6,2)) print,year,month,day ; ; Open the netcdf file ; cdf_id=ncdf_open(files[i]) ; ; Get the dimension id's ; time_did=ncdf_dimid(cdf_id,'time') height_did=ncdf_dimid(cdf_id,'height') ; ; Get the dimensions ; if time_did ge 0 then begin ncdf_diminq,cdf_id,time_did,charstring,numtimes endif else begin numtimes=24.0 endelse if height_did ge 0 then ncdf_diminq,cdf_id,height_did,charstring,numheights $ else if site eq 'twpc1' then numheights=226.0 $ else if site eq 'twpc2' then numheights=226.0 $ else if site eq 'nsa' then numheights=149.0 $ else if site eq 'crystal' then numheights=314.0 ; ; Create the dummy variables ; dummy1d=make_array(numtimes,value=-8888) dummy2d=make_array(numtimes,numheights,value=-8888) ; ; Get the variable id's ; base_time_id=ncdf_varid(cdf_id,'base_time') time_offset_id=ncdf_varid(cdf_id,'time_offset') height_id=ncdf_varid(cdf_id,'height') clutter_id=ncdf_varid(cdf_id,'qc_ReflectivityClutterFlagMode') maxclutter_id=ncdf_varid(cdf_id,'qc_ReflectivityClutterFlagMaxExtreme') allclutter_id=ncdf_varid(cdf_id,'qc_ReflectivityClutterFlagAllPoints') goodclutter_id=ncdf_varid(cdf_id,'qc_ReflectivityClutterFlagCloudyPoints') cbase_id=ncdf_varid(cdf_id, 'CloudBaseBestEstimate') ctop_id=ncdf_varid(cdf_id, 'RadarFirstTop') reflect_id=ncdf_varid(cdf_id, 'ReflectivityBestEstimate') reflectp_id=ncdf_varid(cdf_id, 'ReflectivityPossiblePoints') reflectc_id=ncdf_varid(cdf_id, 'ReflectivityCloudyPoints') velocit_id=ncdf_varid(cdf_id, 'MeanDopplerVelocity') spectr_id=ncdf_varid(cdf_id, 'SpectralWidth') lwp_id=ncdf_varid(cdf_id, 'liq') vap_id=ncdf_varid(cdf_id,'vap') ;dsol_id=ncdf_varid(cdf_id,'down_short_hemisp') dsol_id=ncdf_varid(cdf_id,'down_short') ;usol_id=ncdf_varid(cdf_id,'up_short_hemisp') usol_id=ncdf_varid(cdf_id,'up_short') ;dir_id=ncdf_varid(cdf_id,'down_long_hemisp') dir_id=ncdf_varid(cdf_id,'down_long') ;uir_id=ncdf_varid(cdf_id,'up_long_hemisp') uir_id=ncdf_varid(cdf_id,'up_long') temp_id=ncdf_varid(cdf_id,'temp') press_id=ncdf_varid(cdf_id,'pressure') sfpres_id=ncdf_varid(cdf_id,'sfc_pressure') numlayers_id=ncdf_varid(cdf_id,'number_of_layers') top_press_layer_1_id=ncdf_varid(cdf_id,'top_press_layer_1') top_press_layer_2_id=ncdf_varid(cdf_id,'top_press_layer_2') top_press_layer_3_id=ncdf_varid(cdf_id,'top_press_layer_3') top_press_layer_4_id=ncdf_varid(cdf_id,'top_press_layer_4') top_press_layer_5_id=ncdf_varid(cdf_id,'top_press_layer_5') twsflux_id=ncdf_varid(cdf_id,'twsflux_clearskyfit') zenith_id=ncdf_varid(cdf_id,'solar_zenith_angle') solarratio_id=ncdf_varid(cdf_id,'SolarRatio') sfcalbedo_id=ncdf_varid(cdf_id,'SurfaceAlbedo') vceil_id=ncdf_varid(cdf_id,'first_cbh') if vceil_id eq -1 then vceil_id=ncdf_varid(cdf_id,'cloud1') column_cfrac_id=ncdf_varid(cdf_id,'column_cfrac') ; ; Get the variables ; if base_time_id ne -1 then ncdf_varget,cdf_id,base_time_id,base_time $ else begin base_time=num_sec_ep(year,month,day,0,0,0) endelse if time_offset_id ne -1 then ncdf_varget,cdf_id,time_offset_id,time_offset $ else begin time_offset=[ 0, 3600, 7200, 10800, 14400, 18000, 21600, 25200, 28800, $ 32400, 36000, 39600, 43200, 46800, 50400, 54000, 57600, 61200, 64800, $ 68400, 72000, 75600, 79200, 82800 ] endelse if height_id ne -1 then ncdf_varget,cdf_id,height_id,height $ else begin heightspacing=90.0 startheight=105.0 k=findgen(numheights) height=startheight+heightspacing*k endelse if clutter_id ne -1 then begin ncdf_varget,cdf_id,clutter_id,clutter clutter=transpose(clutter) endif else clutter=dummy2d if maxclutter_id ne -1 then begin ncdf_varget,cdf_id,maxclutter_id,maxclutter maxclutter=transpose(maxclutter) endif else maxclutter=dummy2d if allclutter_id ne -1 then begin ncdf_varget,cdf_id,allclutter_id,allclutter allclutter=transpose(allclutter) endif else allclutter=dummy2d if goodclutter_id ne -1 then begin ncdf_varget,cdf_id,goodclutter_id,goodclutter goodclutter=transpose(goodclutter) endif else goodclutter=dummy2d if cbase_id ne -1 then begin ncdf_varget, cdf_id, cbase_id, cbase result=where(cbase ne -9999, count) if count ne 0 then begin cbase[result]=cbase[result]/1000. ;convert from meters to km endif endif else cbase=dummy1d if ctop_id ne -1 then begin ncdf_varget, cdf_id, ctop_id, ctop result=where(ctop ne -9999, count) if count ne 0 then begin ctop[result]=ctop[result]/1000. ;convert from meters to km endif endif else ctop=dummy1d if reflect_id ne -1 then begin ncdf_varget, cdf_id, reflect_id, reflectivity reflectivity=transpose(reflectivity) endif else reflectivity=dummy2d if reflectp_id ne -1 then begin ncdf_varget, cdf_id, reflectp_id, reflectp reflectp=transpose(reflectp) endif else reflectp=dummy2d if reflectc_id ne -1 then begin ncdf_varget, cdf_id, reflectc_id, reflectc reflectc=transpose(reflectc) endif else reflectc=dummy2d if velocit_id ne -1 then begin ncdf_varget, cdf_id, velocit_id, velocity velocity=transpose(velocity) result=where(velocity ne -9999,count) if count ne 0 then begin velocity[result]=velocity[result]/1000. endif endif else velocity=dummy2d if spectr_id ne -1 then begin ncdf_varget, cdf_id, spectr_id, spectrum spectrum=transpose(spectrum) result=where(spectrum ne -9999,count) if count ne 0 then begin spectrum[result]=spectrum[result]/1000. endif endif else spectrum=dummy2d if lwp_id ne -1 then ncdf_varget,cdf_id,lwp_id,lwp else lwp=dummy1d if vap_id ne -1 then ncdf_varget,cdf_id,vap_id,vap else vap=dummy1d if dsol_id ne -1 then ncdf_varget,cdf_id,dsol_id,dsol else dsol=dummy1d if usol_id ne -1 then ncdf_varget,cdf_id,usol_id,usol else usol=dummy1d if dir_id ne -1 then ncdf_varget,cdf_id,dir_id,dir else dir=dummy1d if uir_id ne -1 then ncdf_varget,cdf_id,uir_id,uir else uir=dummy1d if temp_id ne -1 then begin ncdf_varget,cdf_id,temp_id,temp temp=transpose(temp) endif else temp=dummy2d if press_id ne -1 then begin ncdf_varget,cdf_id,press_id,press press=transpose(press) endif else press=dummy2d if sfpres_id ne -1 then ncdf_varget,cdf_id,sfpres_id,sfpres else sfpres=dummy1d if numlayers_id ne -1 then ncdf_varget,cdf_id,numlayers_id,numlayers else numlayers=dummy1d if top_press_layer_1_id ne -1 then $ ncdf_varget,cdf_id,top_press_layer_1_id,top_press_layer_1 $ else top_press_layer_1=dummy1d if top_press_layer_2_id ne -1 then $ ncdf_varget,cdf_id,top_press_layer_2_id,top_press_layer_2 $ else top_press_layer_2=dummy1d if top_press_layer_3_id ne -1 then $ ncdf_varget,cdf_id,top_press_layer_3_id,top_press_layer_3 $ else top_press_layer_3=dummy1d if top_press_layer_4_id ne -1 then $ ncdf_varget,cdf_id,top_press_layer_4_id,top_press_layer_4 $ else top_press_layer_4=dummy1d if top_press_layer_5_id ne -1 then $ ncdf_varget,cdf_id,top_press_layer_5_id,top_press_layer_5 $ else top_press_layer_5=dummy1d if twsflux_id ne -1 then ncdf_varget,cdf_id,twsflux_id,twsflux else twsflux=dummy1d if zenith_id ne -1 then ncdf_varget,cdf_id,zenith_id,zenith else zenith=dummy1d if solarratio_id ne -1 then ncdf_varget,cdf_id,solarratio_id,solarratio else solarratio=dummy1d if sfcalbedo_id ne -1 then ncdf_varget,cdf_id,sfcalbedo_id,sfcalbedo else sfcalbedo=dummy1d if vceil_id ne -1 then ncdf_varget,cdf_id,vceil_id,vceil else vceil=dummy1d if column_cfrac_id ne -1 then ncdf_varget,cdf_id,column_cfrac_id,column_cfrac $ else column_cfrac=dummy1d ; ; Close the netcdf file ; ncdf_close,cdf_id ; ; If it is the first file ; if j eq 0 then begin com_btto=long(base_time)+long(time_offset) com_clutter=clutter com_maxclutter=maxclutter com_allclutter=allclutter com_goodclutter=goodclutter com_cbase=cbase com_ctop=ctop com_reflectivity=reflectivity com_reflectp=reflectp com_reflectc=reflectc com_velocity=velocity com_spectrum=spectrum com_lwp=lwp com_vap=vap com_dsol=dsol com_usol=usol com_dir=dir com_uir=uir com_temp=temp com_press=press com_sfpres=sfpres com_numlayers=numlayers com_top_press_layer_1=top_press_layer_1 com_top_press_layer_2=top_press_layer_2 com_top_press_layer_3=top_press_layer_3 com_top_press_layer_4=top_press_layer_4 com_top_press_layer_5=top_press_layer_5 com_twsflux=twsflux com_zenith=zenith com_solarratio=solarratio com_sfcalbedo=sfcalbedo com_vceil=vceil com_column_cfrac=column_cfrac ; ; It if is not the first file ; endif else begin com_btto=[long(com_btto),long(base_time)+long(time_offset)] com_clutter=[com_clutter,clutter] com_maxclutter=[com_maxclutter,maxclutter] com_allclutter=[com_allclutter,allclutter] com_goodclutter=[com_goodclutter,goodclutter] com_cbase=[com_cbase,cbase] com_ctop=[com_ctop,ctop] com_reflectivity=[com_reflectivity,reflectivity] com_reflectp=[com_reflectp,reflectp] com_reflectc=[com_reflectc,reflectc] com_velocity=[com_velocity,velocity] com_spectrum=[com_spectrum,spectrum] com_lwp=[com_lwp,lwp] com_vap=[com_vap,vap] com_dsol=[com_dsol,dsol] com_usol=[com_usol,usol] com_dir=[com_dir,dir] com_uir=[com_uir,uir] com_temp=[com_temp,temp] com_press=[com_press,press] com_sfpres=[com_sfpres,sfpres] com_numlayers=[com_numlayers,numlayers] com_top_press_layer_1=[com_top_press_layer_1,top_press_layer_1] com_top_press_layer_2=[com_top_press_layer_2,top_press_layer_2] com_top_press_layer_3=[com_top_press_layer_3,top_press_layer_3] com_top_press_layer_4=[com_top_press_layer_4,top_press_layer_4] com_top_press_layer_5=[com_top_press_layer_5,top_press_layer_5] com_twsflux=[com_twsflux,twsflux] com_zenith=[com_zenith,zenith] com_solarratio=[com_solarratio,solarratio] com_sfcalbedo=[com_sfcalbedo,sfcalbedo] com_vceil=[com_vceil,vceil] com_column_cfrac=[com_column_cfrac,column_cfrac] endelse endif ;end of not a gif file endfor ;end of loop through matching files ; ; Return to the original program directory ; ;popd ; ; Zip the data files ; ;unix_command='gzip -fq '+arm_file ;spawn,unix_command ; ; Create the new arrays ; base_time=long(com_btto[0]) ;base time time_offset=long(com_btto)-long(base_time) clutter=com_clutter maxclutter=com_maxclutter allclutter=com_allclutter goodclutter=com_goodclutter cbase=com_cbase ctop=com_ctop reflectivity=com_reflectivity reflectp=com_reflectp reflectc=com_reflectc velocity=com_velocity spectrum=com_spectrum lwp=com_lwp vap=com_vap dsol=com_dsol usol=com_usol dir=com_dir uir=com_uir temp=com_temp press=com_press sfpres=com_sfpres numlayers=com_numlayers top_press_layer_1=com_top_press_layer_1 top_press_layer_2=com_top_press_layer_2 top_press_layer_3=com_top_press_layer_3 top_press_layer_4=com_top_press_layer_4 top_press_layer_5=com_top_press_layer_5 twsflux=com_twsflux zenith=com_zenith solarratio=com_solarratio sfcalbedo=com_sfcalbedo vceil=com_vceil column_cfrac=com_column_cfrac ; ; Get parameters of new arrays ; numtimes=n_elements(time_offset) numheights=n_elements(height) return end