elif 0.2 <= r < 0.4: sol[i] = 2 - 5*r else: sol[i] = 0. files = [ "gresho_output/initial_output/initial_output0000/initial_output0000.hdf5", "gresho_output/time_interval/time_interval0000/time_interval0000.hdf5", "gresho_output/final_output/final_output0000/final_output0000.hdf5" ] fig, axes = plt.subplots(2,3, figsize=(14,8)) for i, fi in enumerate(files): reader = phd.Hdf5() vortex = reader.read(fi) time = h5py.File(fi, "r").attrs["time"] vortex.register_carray(vortex.get_carray_size(), "v-theta", "double") vortex.register_carray(vortex.get_carray_size(), "rad", "double") # put position and velocity in radial coordinates theta = np.arctan2(vortex["position-y"]-0.5, vortex["position-x"]-0.5) vortex["rad"][:] = np.sqrt((vortex["position-x"]-0.5)**2 + (vortex["position-y"]-0.5)**2) vortex["v-theta"][:] = (-np.sin(theta)*vortex["velocity-x"] + np.cos(theta)*vortex["velocity-y"]) # third column patch, colors = phd.vor_collection(vortex, "v-theta")
# computation integrator = phd.MovingMeshMUSCLHancock() integrator.set_mesh(mesh) integrator.set_riemann(phd.HLLC()) integrator.set_particles(particles) integrator.set_domain_manager(domain_manager) integrator.set_boundary_condition(phd.Reflective()) integrator.set_reconstruction(phd.PieceWiseLinear()) integrator.set_equation_state(phd.IdealGas(gamma=gamma)) sim_name = "sod" if phd._in_parallel: integrator.set_load_balance(phd.LoadBalance()) sim_name = "mpi_sod" # add finish criteria simulation_time_manager = phd.SimulationTimeManager() simulation_time_manager.add_finish(phd.Time(time_max=0.15)) # output last step output = phd.FinalOutput() output.set_writer(phd.Hdf5()) simulation_time_manager.add_output(output) # Create simulator simulation = phd.Simulation(simulation_name=sim_name) simulation.set_integrator(integrator) simulation.set_simulation_time_manager(simulation_time_manager) simulation.initialize() simulation.solve()
while index + 1 < len(radial_bins) and radius[i] > radial_bins[index + 1]: index += 1 dens[index] += particles["mass"][i] for i in range(len(radial_bins)): dens[i] /= ( 4 * np.pi / 3. * (3 * radial_bins[i] * dr**2 + 3. * radial_bins[i]**2 * dr + dr**3)) return radial_bins, dens # initial output num_proc = 4 io = phd.Hdf5() for i in range(num_proc): file_initial = "plummer_output/initial_output/initial_output0000_cpu" +\ str(i).zfill(4) + "/initial_output0000_cpu" +\ str(i).zfill(4) + ".hdf5" file_final = "plummer_output/final_output/final_output0000_cpu" +\ str(i).zfill(4) + "/final_output0000_cpu" +\ str(i).zfill(4) + ".hdf5" if i == 0: initial_particles = io.read(file_initial) final_particles = io.read(file_final) initial_time = h5py.File(file_initial, "r").attrs["time"]