def add_field_diag(self): """Add a picmi FieldDiagnostic to the simulation.""" mwxrun.simulation.add_diagnostic( picmi.FieldDiagnostic( grid=self.kwargs['grid'], period=self.kwargs.pop('period', self.diag_steps), data_list=self.kwargs['data_list'], name=self.kwargs['name'], write_dir=self.kwargs.pop('write_dir', self.write_dir)))
########################## # physics components ########################## electrons = picmi.Species( particle_type='electron', name='electrons' ) ########################## # diagnostics ########################## field_diag = picmi.FieldDiagnostic( name = 'diag1', grid = grid, period = 10, data_list = ['phi'], write_dir = '.', warpx_file_prefix = f'Python_particle_attr_access_plt_{color}' ) ########################## # simulation setup ########################## sim = picmi.Simulation( solver = solver, time_step_size = dt, max_steps = max_steps, verbose = 1 )
position = [0., 0., position_z], normal_vector = [0, 0, 1]) # Electromagnetic solver solver = picmi.ElectromagneticSolver( grid = grid, method = 'Yee', cfl = 1., divE_cleaning = 0) # Diagnostics diag_field_list = ['B', 'E', 'J', 'rho'] field_diag = picmi.FieldDiagnostic( name = 'diag1', grid = grid, period = 10, data_list = diag_field_list, warpx_dump_rz_modes = 1, write_dir = '.', warpx_file_prefix = 'Python_LaserAccelerationRZ_plt') diag_particle_list = ['weighting', 'momentum'] particle_diag = picmi.ParticleDiagnostic( name = 'diag1', period = 10, species = [electrons, beam], data_list = diag_particle_list, write_dir = '.', warpx_file_prefix = 'Python_LaserAccelerationRZ_plt') # Set up simulation sim = picmi.Simulation( solver = solver,
warpx_self_fields_verbosity=0) ########################## # physics components ########################## electrons = picmi.Species(particle_type='electron', name='electrons') ########################## # diagnostics ########################## field_diag = picmi.FieldDiagnostic( name='diag1', grid=grid, period=10, data_list=['phi'], write_dir='.', warpx_file_prefix= f"Python_particle_attr_access_{'unique_' if args.unique else ''}plt") ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, time_step_size=dt, max_steps=max_steps, verbose=1) sim.add_species(electrons, layout=picmi.GriddedLayout(n_macroparticle_per_cell=[0, 0],
fill_in = True) beam = picmi.Species(particle_type='electron', name='beam', initial_distribution=beam_distribution) plasma = picmi.Species(particle_type='electron', name='plasma', initial_distribution=plasma_distribution) sim = picmi.Simulation(solver = solver, max_steps = max_steps, verbose = 1, warpx_current_deposition_algo = 'esirkepov') sim.add_species(beam, layout=picmi.GriddedLayout(grid=grid, n_macroparticle_per_cell=number_per_cell_each_dim)) sim.add_species(plasma, layout=picmi.GriddedLayout(grid=grid, n_macroparticle_per_cell=number_per_cell_each_dim)) field_diag = picmi.FieldDiagnostic(name = 'diag1', grid = grid, period = max_steps, data_list = ['Ex', 'Ey', 'Ez', 'Jx', 'Jy', 'Jz', 'part_per_cell'], write_dir = '.', warpx_file_prefix = 'Python_PlasmaAcceleration_plt') part_diag = picmi.ParticleDiagnostic(name = 'diag1', period = max_steps, species = [beam, plasma], data_list = ['ux', 'uy', 'uz', 'weighting']) sim.add_diagnostic(field_diag) sim.add_diagnostic(part_diag) # 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')
grid = picmi.Cartesian3DGrid(number_of_cells = [nx, ny, nz], lower_bound = [xmin, ymin, zmin], upper_bound = [xmax, ymax, zmax], lower_boundary_conditions = ['periodic', 'periodic', 'periodic'], upper_boundary_conditions = ['periodic', 'periodic', 'periodic'], moving_window_velocity = [0., 0., 0.], warpx_max_grid_size = 32) solver = picmi.ElectromagneticSolver(grid=grid, cfl=1.) ########################## # diagnostics ########################## field_diag1 = picmi.FieldDiagnostic(grid = grid, period = diagnostic_interval, data_list = ['Ex', 'Jx']) part_diag1 = picmi.ParticleDiagnostic(period = diagnostic_interval, species = [electrons], data_list = ['weighting', 'ux', 'Ex']) ########################## # simulation setup ########################## sim = picmi.Simulation(solver = solver, max_steps = max_steps, verbose = 1, warpx_current_deposition_algo = 'direct')
solver = picmi.ElectromagneticSolver(grid=grid, cfl=cfl) embedded_boundary = picmi.EmbeddedBoundary( implicit_function= "-max(max(max(x-12.5e-6,-12.5e-6-x),max(y-12.5e-6,-12.5e-6-y)),max(z-(-6.15e-5),-8.65e-5-z))" ) ########################## # diagnostics ########################## field_diag = picmi.FieldDiagnostic( name='diag1', grid=grid, period=diagnostic_intervals, data_list=['Ex', 'Ey', 'Ez', 'Bx', 'By', 'Bz'], write_dir='.', warpx_file_prefix='Python_restart_eb_plt') checkpoint = picmi.Checkpoint(name='chkpoint', period=diagnostic_intervals, write_dir='.', warpx_file_min_digits=5, warpx_file_prefix=f'Python_restart_eb_chk') ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver,
lower_bound=[xmin, ymin], upper_bound=[xmax, ymax], lower_boundary_conditions=['periodic', 'periodic'], upper_boundary_conditions=['periodic', 'periodic'], moving_window_velocity=[0., 0., 0.], warpx_max_grid_size=32) solver = picmi.ElectromagneticSolver(grid=grid, cfl=1.) ########################## # diagnostics ########################## field_diag1 = picmi.FieldDiagnostic(name='diag1', grid=grid, period=diagnostic_intervals, data_list=['Ex', 'Jx'], write_dir='.', warpx_file_prefix='Python_Langmuir_2d_plt') part_diag1 = picmi.ParticleDiagnostic(name='diag1', period=diagnostic_intervals, species=[electrons], data_list=['weighting', 'ux']) ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, max_steps=max_steps, verbose=1,
n_cavity = 30 L_cavity = n_cavity * unit embedded_boundary = picmi.EmbeddedBoundary( implicit_function= "max(max(max(x-L_cavity/2,-L_cavity/2-x),max(y-L_cavity/2,-L_cavity/2-y)),max(z-L_cavity/2,-L_cavity/2-z))", L_cavity=L_cavity) ########################## # diagnostics ########################## field_diag = picmi.FieldDiagnostic( name='diag1', grid=grid, period=1, data_list=['Ex'], write_dir='.', warpx_file_prefix="embedded_boundary_python_API_plt") ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, max_steps=max_steps, warpx_embedded_boundary=embedded_boundary, verbose=1) sim.add_diagnostic(field_diag)
def setup_run(self): """Setup simulation components.""" ####################################################################### # Set geometry and boundary conditions # ####################################################################### self.grid = picmi.Cartesian1DGrid( number_of_cells=[self.nz], warpx_max_grid_size=128, lower_bound=[0], upper_bound=[self.gap], lower_boundary_conditions=['dirichlet'], upper_boundary_conditions=['dirichlet'], lower_boundary_conditions_particles=['absorbing'], upper_boundary_conditions_particles=['absorbing'], warpx_potential_hi_z=self.voltage, ) ####################################################################### # Field solver # ####################################################################### self.solver = picmi.ElectrostaticSolver(grid=self.grid, method='Multigrid', required_precision=1e-12, warpx_self_fields_verbosity=0) ####################################################################### # Particle types setup # ####################################################################### self.electrons = picmi.Species( particle_type='electron', name='electrons', initial_distribution=picmi.UniformDistribution( density=self.plasma_density, rms_velocity=[ np.sqrt(constants.kb * self.elec_temp / constants.m_e) ] * 3, )) self.ions = picmi.Species( particle_type='He', name='he_ions', charge='q_e', mass=self.m_ion, initial_distribution=picmi.UniformDistribution( density=self.plasma_density, rms_velocity=[ np.sqrt(constants.kb * self.gas_temp / self.m_ion) ] * 3, )) ####################################################################### # Collision initialization # ####################################################################### cross_sec_direc = '../../../../warpx-data/MCC_cross_sections/He/' mcc_electrons = picmi.MCCCollisions( name='coll_elec', species=self.electrons, background_density=self.gas_density, background_temperature=self.gas_temp, background_mass=self.ions.mass, scattering_processes={ 'elastic': { 'cross_section': cross_sec_direc + 'electron_scattering.dat' }, 'excitation1': { 'cross_section': cross_sec_direc + 'excitation_1.dat', 'energy': 19.82 }, 'excitation2': { 'cross_section': cross_sec_direc + 'excitation_2.dat', 'energy': 20.61 }, 'ionization': { 'cross_section': cross_sec_direc + 'ionization.dat', 'energy': 24.55, 'species': self.ions }, }) mcc_ions = picmi.MCCCollisions( name='coll_ion', species=self.ions, background_density=self.gas_density, background_temperature=self.gas_temp, scattering_processes={ 'elastic': { 'cross_section': cross_sec_direc + 'ion_scattering.dat' }, 'back': { 'cross_section': cross_sec_direc + 'ion_back_scatter.dat' }, # 'charge_exchange' : { # 'cross_section' : cross_sec_direc+'charge_exchange.dat' # } }) ####################################################################### # Initialize simulation # ####################################################################### self.sim = picmi.Simulation( solver=self.solver, time_step_size=self.dt, max_steps=self.max_steps, warpx_collisions=[mcc_electrons, mcc_ions], warpx_load_balance_intervals=self.max_steps // 5000, verbose=self.test) self.sim.add_species(self.electrons, layout=picmi.GriddedLayout( n_macroparticle_per_cell=[self.seed_nppc], grid=self.grid)) self.sim.add_species(self.ions, layout=picmi.GriddedLayout( n_macroparticle_per_cell=[self.seed_nppc], grid=self.grid)) ####################################################################### # Add diagnostics for the CI test to be happy # ####################################################################### field_diag = picmi.FieldDiagnostic( name='diag1', grid=self.grid, period=0, data_list=['rho_electrons', 'rho_he_ions'], write_dir='.', warpx_file_prefix='Python_background_mcc_1d_plt') self.sim.add_diagnostic(field_diag)
upper_boundary_conditions=['none', 'periodic'], lower_boundary_conditions_particles=['absorbing', 'periodic'], upper_boundary_conditions_particles=['absorbing', 'periodic'], moving_window_velocity=[0., 0.], warpx_max_grid_size=64) solver = picmi.ElectromagneticSolver(grid=grid, cfl=1.) ########################## # diagnostics ########################## field_diag1 = picmi.FieldDiagnostic( name='diag1', grid=grid, period=diagnostic_intervals, data_list=['Ex', 'Ez', 'By', 'Jx', 'Jz', 'part_per_cell'], write_dir='.', warpx_file_prefix='Python_Langmuir_rz_multimode_plt') part_diag1 = picmi.ParticleDiagnostic(name='diag1', period=diagnostic_intervals, species=[electrons], data_list=['weighting', 'momentum']) ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, max_steps=40,
warpx_self_fields_verbosity=0) ########################## # physics components ########################## electrons = picmi.Species(particle_type='electron', name='electrons') ########################## # diagnostics ########################## field_diag = picmi.FieldDiagnostic( name='diag1', grid=grid, period=10, data_list=['phi'], write_dir='.', warpx_file_prefix=f'Python_restart_runtime_components_plt') checkpoint = picmi.Checkpoint( name='chkpoint', period=5, write_dir='.', warpx_file_min_digits=5, warpx_file_prefix=f'Python_restart_runtime_components_chk') ########################## # simulation setup ##########################
method='Multigrid', required_precision=1e-7) embedded_boundary = picmi.EmbeddedBoundary( implicit_function="-(x**2+y**2+z**2-radius**2)", potential=V_embedded_boundary, radius=0.3) ########################## # diagnostics ########################## field_diag = picmi.FieldDiagnostic( name='diag1', grid=grid, period=1, data_list=['Ex', 'Ey', 'Ez', 'phi', 'rho'], write_dir='.', warpx_file_prefix='Python_ElectrostaticSphereEB_plt') ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, time_step_size=dt, max_steps=max_steps, warpx_embedded_boundary=embedded_boundary, warpx_field_gathering_algo='momentum-conserving') sim.add_diagnostic(field_diag)
# Initialize field solver solver = picmi.ElectromagneticSolver(grid=grid, cfl=0.95, method='PSATD', stencil_order=[nox, noz], divE_cleaning=1, divB_cleaning=1, pml_divE_cleaning=1, pml_divB_cleaning=1, warpx_psatd_update_with_rho=True) # Initialize diagnostics diag_field_list = ["E", "B"] field_diag = picmi.FieldDiagnostic(name='diag1', grid=grid, period=10, write_dir='.', warpx_file_prefix='Python_wrappers_plt', data_list=diag_field_list) # Initialize simulation sim = picmi.Simulation(solver=solver, max_steps=max_steps, verbose=1, particle_shape='cubic', warpx_current_deposition_algo='direct', warpx_particle_pusher_algo='boris', warpx_field_gathering_algo='energy-conserving', warpx_use_filter=1) # Add diagnostics to simulation sim.add_diagnostic(field_diag)
verbose=1, warpx_plot_int=max_steps, warpx_current_deposition_algo='esirkepov') sim.add_species(beam, layout=picmi.GriddedLayout( grid=grid, n_macroparticle_per_cell=number_per_cell_each_dim)) sim.add_species(plasma, layout=picmi.GriddedLayout( grid=grid, n_macroparticle_per_cell=number_per_cell_each_dim)) field_diag = picmi.FieldDiagnostic( grid=grid, period=max_steps, data_list=['Ex', 'Ey', 'Ez', 'Jx', 'Jy', 'Jz', 'part_per_cell'], write_dir='diags') part_diag = picmi.ParticleDiagnostic( period=max_steps, species=[beam, plasma], data_list=['ux', 'uy', 'uz', 'weighting', 'Ex', 'Ey', 'Ez'], write_dir='diags') sim.add_diagnostic(field_diag) sim.add_diagnostic(part_diag) # 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')
upper_bound=[xmax, ymax], lower_boundary_conditions=['periodic', 'periodic'], upper_boundary_conditions=['periodic', 'periodic'], moving_window_velocity=[0., 0., 0.], warpx_max_grid_size=32) solver = picmi.ElectromagneticSolver(grid=grid, cfl=1.) ########################## # diagnostics ########################## field_diag = picmi.FieldDiagnostic( name=f'diag{color + 1}', grid=grid, period=diagnostic_intervals, data_list=['Ex', 'Jx'], write_dir='.', warpx_file_prefix=f'Python_pass_mpi_comm_plt{color + 1}_') part_diag = picmi.ParticleDiagnostic(name=f'diag{color + 1}', period=diagnostic_intervals, species=[electrons], data_list=['weighting', 'ux']) ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, max_steps=max_steps,
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) field_diag1 = picmi.FieldDiagnostic( name='diag1', grid=grid, period=10, data_list=args.fields_to_plot, warpx_format=args.diagformat, write_dir='.', 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)
number_of_cells=[nx, ny, nz], lower_bound=[xmin, ymin, zmin], upper_bound=[xmax, ymax, zmax], lower_boundary_conditions=['periodic', 'periodic', 'open'], upper_boundary_conditions=['periodic', 'periodic', 'open'], moving_window_velocity=moving_window_velocity, warpx_max_grid_size=32) solver = picmi.ElectromagneticSolver(grid=grid, method='CKC', cfl=1.) ########################## # diagnostics ########################## field_diag1 = picmi.FieldDiagnostic(grid=grid, period=100, warpx_plot_raw_fields=1, warpx_plot_raw_fields_guards=1) part_diag1 = picmi.ParticleDiagnostic(period=100, species=[electrons]) ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, max_steps=max_steps, verbose=1, cfl=1.0, warpx_current_deposition_algo='esirkepov') sim.add_species(electrons,
warpx_max_grid_size=max_grid_size, warpx_blocking_factor=max_grid_size, lower_bound=[xmin, ymin], upper_bound=[xmax, ymax], lower_boundary_conditions=['periodic', 'periodic'], upper_boundary_conditions=['periodic', 'periodic'], ) solver = picmi.ElectromagneticSolver(grid=grid, cfl=cfl) ################################# ######### DIAGNOSTICS ########### ################################# field_diag = picmi.FieldDiagnostic(name='diag1', grid=grid, period=10, 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,
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) field_diag1 = picmi.FieldDiagnostic( name='diag1', grid=grid, period=10, data_list=['E', 'B', 'J', 'part_per_cell'], warpx_format=args.diagformat, write_dir='.', 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)
moving_window_velocity = None, warpx_max_grid_size = nx//4 ) solver = picmi.ElectrostaticSolver( grid=grid, method='Multigrid', required_precision=1e-6 ) ########################## # diagnostics ########################## field_diag = picmi.FieldDiagnostic( name = 'diag1', grid = grid, period = diagnostic_intervals, data_list = ['rho_electrons', 'rho_he_ions', 'phi'], write_dir = '.', warpx_file_prefix = 'Python_background_mcc_plt' ) ########################## # simulation setup ########################## sim = picmi.Simulation( solver = solver, time_step_size = DT, max_steps = max_steps, warpx_collisions=[mcc_electrons, mcc_ions] )
lower_bound=[rmin, zmin], upper_bound=[rmax, zmax], lower_boundary_conditions=['dirichlet', 'periodic'], upper_boundary_conditions=['dirichlet', 'periodic'], moving_window_zvelocity=0., warpx_max_grid_size=64) solver = picmi.ElectromagneticSolver(grid=grid, cfl=1., warpx_do_pml=0) ########################## # diagnostics ########################## field_diag1 = picmi.FieldDiagnostic(name='diag1', grid=grid, period=diagnostic_interval, data_list=['E', 'B', 'J', 'part_per_cell'], warpx_file_prefix='plotfiles/plt') part_diag1 = picmi.ParticleDiagnostic( name='diag1', period=diagnostic_interval, species=[electrons], data_list=['weighting', 'momentum', 'fields']) ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, max_steps=40,
lower_boundary_conditions_particles=['periodic', 'periodic', 'absorbing'], upper_boundary_conditions_particles=['periodic', 'periodic', 'absorbing'], moving_window_velocity=moving_window_velocity, warpx_max_grid_size=32) solver = picmi.ElectromagneticSolver(grid=grid, method='CKC', cfl=1.) ########################## # diagnostics ########################## diag_field_list = ["rho", "E", "B", "J"] field_diag1 = picmi.FieldDiagnostic( name='diag1', grid=grid, period=10, write_dir='.', warpx_file_prefix='Python_LaserAccelerationMR_plt', data_list=diag_field_list) part_diag1 = picmi.ParticleDiagnostic(name='diag1', period=10, species=[electrons]) ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, max_steps=max_steps, verbose=1,
warpx_potential_lo_x=V_xmin, warpx_potential_hi_x=V_xmax, moving_window_velocity=None, warpx_max_grid_size=32) solver = picmi.ElectrostaticSolver(grid=grid, method='Multigrid', required_precision=1e-6) ########################## # diagnostics ########################## field_diag = picmi.FieldDiagnostic(name='diag1', grid=grid, period=4, data_list=['phi'], write_dir='.', warpx_file_prefix='Python_dirichletbc_plt') ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, time_step_size=dt, max_steps=max_steps, particle_shape=None, verbose=0) sim.add_diagnostic(field_diag)
verbose=1, warpx_current_deposition_algo='esirkepov') sim.add_species(beam, layout=picmi.GriddedLayout( grid=grid, n_macroparticle_per_cell=number_per_cell_each_dim)) sim.add_species(plasma, layout=picmi.GriddedLayout( grid=grid, n_macroparticle_per_cell=number_per_cell_each_dim)) field_diag = picmi.FieldDiagnostic( name='diag1', grid=grid, period=2, data_list=['Ex', 'Ey', 'Ez', 'Jx', 'Jy', 'Jz', 'part_per_cell'], write_dir='diags', warpx_file_prefix='plotfiles/plt') part_diag = picmi.ParticleDiagnostic( name='diag1', period=2, species=[beam, plasma], data_list=['ux', 'uy', 'uz', 'weighting', 'Ex', 'Ey', 'Ez'], write_dir='diags') sim.add_diagnostic(field_diag) sim.add_diagnostic(part_diag) # write_inputs will create an inputs file that can be used to run
grid = picmi.Cartesian3DGrid( number_of_cells=[nx, ny, nz], lower_bound=[xmin, ymin, zmin], upper_bound=[xmax, ymax, zmax], lower_boundary_conditions=['periodic', 'periodic', 'open'], upper_boundary_conditions=['periodic', 'periodic', 'open'], moving_window_velocity=moving_window_velocity, warpx_max_grid_size=32) solver = picmi.ElectromagneticSolver(grid=grid, method='CKC', cfl=1.) ########################## # diagnostics ########################## field_diag1 = picmi.FieldDiagnostic(name='diag1', grid=grid, period=10) part_diag1 = picmi.ParticleDiagnostic(name='diag1', period=10, species=[electrons]) ########################## # simulation setup ########################## sim = picmi.Simulation(solver=solver, max_steps=max_steps, verbose=1, cfl=1.0, warpx_current_deposition_algo='esirkepov')