data_list=[], write_dir='.', warpx_file_prefix='Python_collisionXZ_plt') ################################# ####### SIMULATION SETUP ######## ################################# sim = picmi.Simulation( solver=solver, max_steps=max_steps, verbose=verbose, warpx_serialize_initial_conditions=serialize_initial_conditions, warpx_collisions=[collision1, collision2, collision3]) sim.add_species(electrons, layout=picmi.PseudoRandomLayout( n_macroparticles_per_cell=number_per_cell, grid=grid)) sim.add_species(ions, layout=picmi.PseudoRandomLayout( n_macroparticles_per_cell=number_per_cell, grid=grid)) sim.add_diagnostic(field_diag) ################################# ##### SIMULATION EXECUTION ###### ################################# #sim.write_input_file('PICMI_inputs_2d') sim.step(max_steps)
# Set up simulation sim = picmi.Simulation(solver=solver, max_steps=max_steps, verbose=1, particle_shape='cubic', warpx_use_filter=1, warpx_serialize_ics=1) # Add plasma electrons sim.add_species(electrons, layout=picmi.GriddedLayout(grid=grid, n_macroparticle_per_cell=[1, 1, 1])) # Add beam electrons sim.add_species(beam, layout=picmi.PseudoRandomLayout(grid=grid, n_macroparticles=100)) # Add laser sim.add_laser(laser, injection_method=laser_antenna) # Add diagnostics sim.add_diagnostic(field_diag) # Write input file that can be used to run with the compiled version sim.write_input_file(file_name='inputs_2d_picmi') # Initialize inputs and WarpX instance sim.initialize_inputs() sim.initialize_warpx() # Advance simulation until last time step
warpx_file_prefix='Python_gaussian_beam_plt') part_diag1 = picmi.ParticleDiagnostic(name='diag1', period=10, species=[electrons, protons], data_list=['weighting', 'momentum'], warpx_format=args.diagformat) sim = picmi.Simulation(solver=solver, max_steps=10, verbose=1, warpx_current_deposition_algo='direct', warpx_use_filter=0) sim.add_species( electrons, layout=picmi.PseudoRandomLayout(n_macroparticles=number_sim_particles)) sim.add_species( protons, layout=picmi.PseudoRandomLayout(n_macroparticles=number_sim_particles)) sim.add_diagnostic(field_diag1) sim.add_diagnostic(part_diag1) # write_inputs will create an inputs file that can be used to run # with the compiled version. #sim.write_input_file(file_name = 'inputs_from_PICMI') # Alternatively, sim.step will run WarpX, controlling it from Python sim.step()
solver = picmi.ElectromagneticSolver(grid = grid, cfl = 1., stencil_order=[em_order,em_order,em_order]) electron_beam = picmi.GaussianBunchDistribution(n_physical_particles = total_charge/constants.q_e, rms_bunch_size = [beam_rms_size, beam_rms_size, beam_rms_size], velocity_divergence = [electron_beam_divergence, electron_beam_divergence, electron_beam_divergence]) proton_beam = picmi.GaussianBunchDistribution(n_physical_particles = total_charge/constants.q_e, rms_bunch_size = [beam_rms_size, beam_rms_size, beam_rms_size]) electrons = picmi.Species(particle_type='electron', name='electrons', initial_distribution=electron_beam) protons = picmi.Species(particle_type='proton', name='protons', initial_distribution=proton_beam) sim = picmi.Simulation(solver = solver, max_steps = 10, verbose = 1, warpx_plot_int = 10, warpx_current_deposition_algo = 'direct') sim.add_species(electrons, layout=picmi.PseudoRandomLayout(n_macroparticles=number_sim_particles)) sim.add_species(protons, layout=picmi.PseudoRandomLayout(n_macroparticles=number_sim_particles)) # write_inputs will create an inputs file that can be used to run # with the compiled version. #sim.write_input_file(file_name = 'inputs_from_PICMI') # Alternatively, sim.step will run WarpX, controlling it from Python sim.step()