def _sink_particle_posz(field, data): """ Retrieve particle z position from .snktxt file """ particle_posz = [] if np.shape(data['x']) == (16, 16, 16): particle_posz = yt.YTArray(np.array(particle_posz), "pc") else: file_no = int(data.ds.directory.split('output_')[-1]) datadir = data.ds.directory.split('output_')[0] loaded_sink_data = rsink(file_no, datadir=datadir) particle_posz = loaded_sink_data['z']*data.ds.length_unit.in_units("pc").value particle_posz = yt.YTArray(np.array(particle_posz), "pc") return particle_posz
def _sink_particle_vely(field, data): """ Retrieve particle y velocity from .snktxt file """ particle_vely = [] if np.shape(data['x']) == (16, 16, 16): particle_vely = yt.YTArray(np.array(particle_vely), "km/s") else: file_no = int(data.ds.directory.split('output_')[-1]) datadir = data.ds.directory.split('output_')[0] loaded_sink_data = rsink(file_no, datadir=datadir) particle_vely = loaded_sink_data['uy']*data.ds.velocity_unit.in_units("km/s").value particle_vely = yt.YTArray(np.array(particle_vely), "km/s") return particle_vely
def _sink_particle_tag(field, data): """ Retrieve particle tags from .snktxt file """ particle_tag = [] if np.shape(data['x']) == (16, 16, 16): particle_tag = yt.YTArray(np.array(particle_tag), "") else: file_no = int(data.ds.directory.split('output_')[-1]) datadir = data.ds.directory.split('output_')[0] loaded_sink_data = rsink(file_no, datadir=datadir) particle_tag = np.arange(float(len(loaded_sink_data['x']))) particle_tag = yt.YTArray(np.array(particle_tag), "") return particle_tag
def _sink_particle_age(field, data): """ Retrieve particle age from .snktxt file """ particle_age = [] if np.shape(data['x']) == (16, 16, 16): particle_age = yt.YTArray(np.array(particle_age), "yr") else: file_no = int(data.ds.directory.split('output_')[-1]) datadir = data.ds.directory.split('output_')[0] loaded_sink_data = rsink(file_no, datadir=datadir) particle_age = (loaded_sink_data['snapshot_time']-loaded_sink_data['tcreate'])*data.ds.time_unit.in_units("yr").value particle_age = yt.YTArray(np.array(particle_age), "yr") return particle_age
def _sink_particle_mass(field, data): """ Retrieve particle mass from .snktxt file """ particle_mass = [] if np.shape(data['x']) == (16, 16, 16): particle_mass = yt.YTArray(np.array(particle_mass), "Msun") else: file_no = int(data.ds.directory.split('output_')[-1]) datadir = data.ds.directory.split('output_')[0] loaded_sink_data = rsink(file_no, datadir=datadir) particle_mass = loaded_sink_data['m']*data.ds.mass_unit.in_units("Msun").value particle_mass = yt.YTArray(np.array(particle_mass), "Msun") return particle_mass
def _sink_particle_accretion_rate(field, data): """ Retrieve particle accretion rate from sink file """ particle_mdot = [] if np.shape(data['x']) == (16, 16, 16): particle_mdot = yt.YTArray(np.array(particle_mdot), "Msun/yr") else: file_no = int(data.ds.directory.split('output_')[-1]) datadir = data.ds.directory.split('output_')[0] loaded_sink_data = rsink(file_no, datadir=datadir) numerator = loaded_sink_data['dm']*data.ds.mass_unit.in_units("Msun").value denominator = (loaded_sink_data['snapshot_time'] - loaded_sink_data['tflush'])*data.ds.time_unit.in_units("yr").value particle_mdot = numerator/denominator particle_mdot = yt.YTArray(np.array(particle_mdot), "Msun/yr") return particle_mdot
save_dir = sys.argv[2] if save_dir[-1] != '/': save_dir = save_dir + '/' if os.path.exists(save_dir) == "False": os.makedirs(save_dir) ul = 4. * 3600. * 180. / np.pi lb = 361 ub = 1724 is1 = args.sink_number is2 = is1 + 1 print("CHECK THAT SEPARATION CALCULATIONS TAKE INTO ACCOUNT CYCLIC BOUNDARIES") ss = [] dist = [] for io in range(lb, ub): s = rsink(io, datadir=path) d = ((s['x'][is1] - s['x'][is2])**2 + (s['y'][is1] - s['y'][is2])**2 + (s['z'][is1] - s['z'][is2])**2)**0.5 * ul dist.append(d) ss.append(s) file = open('separation_data.pkl', 'wb') pickle.dump((dist, ss), file) file.close() plt.figure() plt.hist(dist) plt.savefig('hist.pdf')
gc.collect() #for fn_it in yt.parallel_objects(range(len(usable_files)), njobs=int(size/(48))): rit = -1 for fn_it in range(len(usable_files)): rit = rit + 1 if rit == size: rit = 0 if rank == rit: pickle_file = save_dir + "movie_frame_" + ("%06d" % fn_it) + "_part.pkl" if os.path.exists(pickle_file) == False: fn = usable_files[fn_it] file_no = int(fn.split('output_')[-1].split('/')[0]) datadir = fn.split('output_')[0] loaded_sink_data = rsink(file_no, datadir=datadir) particle_masses = loaded_sink_data['m'] * units['mass_unit'] if args.perp_axis == "z": particle_x_pos = loaded_sink_data['x'] * units['length_unit'] particle_y_pos = loaded_sink_data['y'] * units['length_unit'] elif args.perp_axis == "y": particle_x_pos = loaded_sink_data['x'] * units['length_unit'] particle_y_pos = loaded_sink_data['z'] * units['length_unit'] else: particle_x_pos = loaded_sink_data['y'] * units['length_unit'] particle_y_pos = loaded_sink_data['z'] * units['length_unit'] gc.collect() #particle_masses = dd['sink_particle_mass'] #if np.remainder(rank,48) == 0: file = open(pickle_file, 'wb')