def load_sightline_scatter_data(sim, ray_id, output=3195): fn = '../../data/unanalyzed_spectra/ray_%s_%i_%i.h5' % (sim, output, ray_id) plot_data = h5.File(fn, 'r')['grid'] l = YTArray(plot_data['l'], 'cm') l = np.array(l.in_units('kpc')) temperature = np.array(plot_data['temperature']) density = np.array(plot_data['density']) metallicity = np.array( plot_data['metallicity'] ) * 77.22007722007721 # converting from code units to zsun vx = np.array(plot_data['relative_velocity_x']) / 1e5 # converting to km/s vy = np.array(plot_data['relative_velocity_y']) / 1e5 # converting to km/s vz = np.array(plot_data['relative_velocity_z']) / 1e5 # converting to km/s vlos = np.array(plot_data['velocity_los']) / 1e5 dl = np.array(plot_data['dl']) # O VI and H I column densities oden = np.array(plot_data['O_p5_number_density']) ocol = dl * np.array(oden) sicol = dl * np.array(plot_data['Si_p2_number_density']) hcol = dl * np.array(plot_data['H_p0_number_density']) return l, temperature, density, metallicity, vlos, ocol, sicol
plt.savefig('Coal_cumulative2.png') # plt.figure() # plt.loglog(Pbins.in_units('day'),Coalbins.in_units('yr'),ls='-',color='k') # plt.xlabel(r'$\mathrm{Orbital\,Period\,(days)}$') # plt.ylabel(r'$\mathrm{coalescence\,time\,(years)}$') # # plt.figure() # plt.loglog(Abins.in_units('AU'),Coalbins.in_units('yr'),ls='-',color='k') # plt.xlabel(r'$\mathrm{Semimajor\,axis\,(AU)}$') # plt.ylabel(r'$\mathrm{coalescence\,time\,(years)}$') plt.figure() ax = plt.gca() plt.loglog(Pbins.in_units('day'),Coalbins.in_units('yr'),ls='-',color='k') plt.xlabel(r'$\mathrm{Orbital\,Period\,(days)}$') plt.ylabel(r'$\mathrm{coalescence\,time\,(years)}$') ax.set_xlim(Pbins.in_units('day').min(),Pbins.in_units('day').max()) # ax.set_ylim(Coalbins.in_units('yr').min(),Coalbins.in_units('yr').max()) ax.set_ylim(1e9,1e12) xtickloc = [2,3,4,5,8,10,20] ax.set_xticks(xtickloc) ax.set_xticklabels(xtickloc) ax2 = plt.twiny() ax2.set_xscale('log') ax2.set_xlim(ax.get_xlim()) tickloc = Pbins[::len(Pbins)/5]
def plot_vel(filament,ds,dataset,fil=-1,maskarray=False): #Routine to plot velocity of particles along a filament #Set gravitational constant G = YTQuantity(6.67408E-11,'m**3/(kg * s**2)') #Gather velocity and density values from disk, done in parallel to speed computation #We first gather a list of the profiles on the disk, then reshape this into a list of [density,other] profiles #This is then iterated over in parallel to load the correct data filelist = sorted(os.listdir(''.join(['/shome/mackie/data/',dataset,'/profiles']))) profnumbers = len(filelist)/2 files = [ [filelist[i],filelist[i+profnumbers]] for i in range(profnumbers)] del filelist,profnumbers storage = {} for stor,file_in_dir in ytpar.parallel_objects(files,storage=storage): #Determines correct index to give to segment profiles filnum = int(file_in_dir[0][7:10]) segnum = int(file_in_dir[0][13:16]) #Calc total density for each segment densprof = yt.load(''.join(['/shome/mackie/data/',dataset,'/profiles/',file_in_dir[0]])) dm = densprof.data['dark_matter_density'].in_units('g/cm**3') dens = densprof.data['density'].in_units('g/cm**3') totaldens = dm + dens del densprof,dm,dens #Get velocity profiles velprof = yt.load(''.join(['/shome/mackie/data/',dataset,'/profiles/',file_in_dir[1]])) vel = velprof.data['cylindrical_radial_velocity'].in_units('km/s') stor.result = (vel,totaldens) stor.result_id = (filnum,segnum) #Restruct dict into np array of correct structure. vel_profs = [ [] for i in range(len(filament))] densprofs = [ [] for i in range(len(filament))] x = yt.load(''.join(['/shome/mackie/data/',dataset,'/profiles/',file_in_dir[0]])).data['x'] xarr = [[] for i in range(len(filament))] for key,values in sorted(storage.items()): filnum,segnum = key vel,dens = values xarr[filnum].append(x.in_units('Mpc')) vel_profs[filnum].append(vel.in_units('km/s')) densprofs[filnum].append(dens) for i in range(len(xarr)): xarr[i] = YTArray(np.array(xarr[i]),'Mpc') vel_profs[i] = YTArray(np.array(vel_profs[i]),'km/s') vel_profs = YTArray(np.array(vel_profs),'km/s') xarr = YTArray(np.array(xarr),'Mpc') del storage #Turn into np arrays for QoL densprofs = np.array(densprofs) #Gather x bins from disk #Determine masses and thus escape velocities mass = [get_masses(densprofs[i],x,filament[i],ds,accumulate=True) for i in range(len(filament))] mass = np.array(mass) mass = YTArray(mass,'g') print mass[1][1] del densprofs print xarr[1][1] vel_ratio = ( ( (2*G* mass) / xarr) ** (1.0/2.0)) vel_ratio = vel_ratio.in_units('km/s') if yt.is_root(): print mass[1][1] print xarr[1][1] print vel_ratio[1][1] #vel_ratio is **approx** escape vel, used to ratio later #Generate ratio of velocity to escape velocity vel_profs = (vel_profs.in_units('km/s')/vel_ratio.in_units('km/s')) del vel_ratio if fil > -1: length_plot = plot_vel_fil(vel_profs[fil].v,gen_dists(filament[fil],ds),x) else: length_plot = None if maskarray: print"Masking Data" vel_profs = np.ma.masked(vel_profs, mask = ~maskarray,fill_value=np.nan) #Flatten vel profs, ought to bemore elegant solution vel_prof_flatten = [] for fil in vel_profs: for seg in fil: vel_prof_flatten.append(seg) vel_profs = np.array(vel_prof_flatten) del vel_prof_flatten plot = probmap.prob_heat_map(vel_profs,'radial_velocity',x=x) return plot,length_plot