コード例 #1
0
    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")
コード例 #2
0
# 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()
コード例 #3
0
ファイル: plot.py プロジェクト: zingale/phd-code
        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"]