pro time_evolve,ps=ps,energy=energy,xy=xy,range=range,det=det,uv=uv,day=day,$ times=times,create=create,mem=mem,help=help if keyword_set(help) then begin print,'PURPOSE:' print,' Create MEM_NJIT maps of flare for different time intervals' print,' in order to study the time evolution in one energy band' print,'HELP:' print,' pro time_evolve,ps=ps,energy=energy,xy=xy,range=range,det=det,' print,' uv=uv,day=day,times=times,create=create,mem=mem print,' inputs: (all keywords)' print,' energy (desired energy range for flare, in keV, float array)' print,' xy (xyoffset of map, float array' print,' *both of the above are required for program to work* print,' range (x and y range of map)' print,' det (detectors used for calculation of visibilies, int array)' print,' uv (int array of starting and ending UV Circles, zero offset)' print,' day (string of flare date)' print,' times (string array of time intervals)' print,' create/ps (turn on to create visibilities and PostScript files)' print,' mem (/mem executes MEM_NJIT, do not use if create is on)' print,' outputs:' print,' IDL save files for each time interval' print,' (output structure from hsi_vis_usershell)' print,' Time evolution PostScript file' print,' All output names are printed to terminal' print,'AUTHOR:' print,' Rick Pernak, Goddard Space Flight Center' return endif lev = (findgen(10)+1)/10. default,range,[45,85] default,det,[1,1,1, 1,1,1, 1,1,1] default,uv,[1,7] default,day,'September 20, 2002' ;abbreviate the day for file or directory purposes short = strsplit(day,' ',/extract) month = strmid(short[0],0,3) ;abbreviate month to 3 letters month = strlowcase(month) date = (strsplit(short[1],escape=',',/extract))[0] file_start = date+month dir_start = month+date dir_start = dir_start+'_'+short[2] spawn,'mkdir '+dir_start ;another abbrevation, used in creating visibilities ddmmmyyyy = strupcase(date+'-'+month+'-'+short[2]) if (arg_present(energy) eq 0) then begin print,'Need an energy to proceed!' return endif if keyword_set(times) then times = times else $ times = [['09:24:08','09:25:08'],['09:25:08','09:26:08'],$ ['09:27:08','09:27:38'],['09:27:38','09:28:08'],$ ['09:28:08','09:29:08'],['09:29:08','09:30:08'],$ ['09:30:08','09:31:08'],['09:31:08','09:32:08'],$ ['09:32:08','09:33:08'],['09:33:08','09:34:08']] n = (size(times,/dim))[1] ;number of time intervals string_n = string(n,format='("up to",i3)') ;to be used in user prompt string_n = strcompress(string_n) en1 = fix(energy[0]) en2 = fix(energy[1]) ;used for file name when creating visibilities energies = strcompress(string(en1,en2,format='("E",i3,"-",i3)'),/rem) ;energy directory string,3 digit integers assuming user never uses energies ;above 999 keV dir_en = string(en1,en2,format='(i3,"-",i3,"keV")') dir = dir_start+'/time_dep/'+dir_en dir = strcompress(dir,/rem) spawn,'mkdir '+dir_start+'/time_dep/' spawn,'mkdir '+dir ;flare directory should have form mmmdd_yyyy/time_dep/energy-energykeV, this is ;created above ;starting and ending time intervals read,start_time,prompt='Start interval (unit offset): ' read,end_time,prompt='End interval,'+string_n+': ' ;create visibilities, if needed if keyword_set(create) then begin for ctr = start_time-1,end_time-1 do begin if arg_present(xy) eq 0 then begin print,'Need an XY offset to create visibilities!' return endif ;create save file name, needed for hsi_vis_usershell t1 = strsplit(times[0,ctr],escape=':',/extract) t2 = strsplit(times[1,ctr],escape=':',/extract) interval = t1+'-'+t2 name = dir+'/'+file_start+'_'+interval+energies+'.sav' ;time used in usershell time = ddmmmyyyy+' '+[times[0,ctr],times[1,ctr]] ;make visibilities vis_in = hsi_vis_usershell(savefile=name,time_range=time,$ det_index_mask=det,xyoffset=xy,energy_band=energy) ;run MEM_NJIT, using specified uv circles,1 arcsec pixel size mem_map,vis_in,vis,u,v,image,uv,1,svis imfile=dir+'/'+file_start+energies+'_'+interval+'_img.sav' print,'image file name saved to: ',imfile save,image,filename=imfile endfor endif ;make mem maps, if desired if keyword_set(mem) then begin spawn,'ls '+dir+'/*'+energies+'.sav > save_files.txt' openr,1,'save_files.txt' names = strarr(n) readf,1,names close,1 for ctr = 0,n-1 do begin restore,names[ctr] vis_in = vis mem_map,vis_in,vis,u,v,image,uv,1,svis t1 = strsplit(times[0,ctr],escape=':',/extract) t2 = strsplit(times[1,ctr],escape=':',/extract) interval = t1+'-'+t2 imfile=dir+'/'+file_start+energies+'_'+interval+'_img.sav' save,image,filename=imfile endfor endif ;make command string for spawn to create text file ls = 'ls '+dir+'/*img* > temp.txt' spawn,'rm temp.txt' spawn,ls spawn,'wc temp.txt',result split = strsplit(result,' ',/extract) openr,1,'temp.txt' names=strarr(n) readf,1,names close,1 ;individual energy strings sen1 = strcompress(en1,/rem) sen2 = strcompress(en2,/rem) en = string(sen1,sen2,format='(i3," - ",i3," keV")') en = strcompress(en) dir_en=strcompress(dir_en,/rem) if keyword_set(ps) then begin filename=file_start+'_time_'+dir_en+'.ps' set_plot,'ps' device,filename=filename endif ;create uv string for legend tot_uv = uv[1]-uv[0]+1 circles = indgen(tot_uv)+uv[0]+1 st = strcompress(string(circles)) uvstring = 'UV Circles' for ctr=0,tot_uv-1 do uvstring=uvstring+st[ctr] for ctr=0,n-1 do begin restore,names[ctr] map = image.map date=day+' '+times[0,ctr]+' to '+times[1,ctr] contour,map,lev=lev*max(map),xr=range,yr=range,/xst,/yst,/iso legend,[date,en,uvstring],box=0 endfor if keyword_set(ps) then begin print,'Created ',filename device,/close set_plot,'x' endif return end