ymax = +20.e-6 zmax = +20.e-6 uniform_plasma = picmi.UniformDistribution( density=1.e25, upper_bound=[0., None, None], directed_velocity=[0.1 * constants.c, 0., 0.]) electrons = picmi.Species(particle_type='electron', name='electrons', initial_distribution=uniform_plasma) 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.) sim = picmi.Simulation(solver=solver, max_steps=40, verbose=1, warpx_plot_int=1, warpx_current_deposition_algo='direct', warpx_charge_deposition_algo='standard', warpx_field_gathering_algo='standard', warpx_particle_pusher_algo='boris')
electrons = picmi.Species(particle_type='electron', name='electrons', initial_distribution=uniform_plasma_elec, warpx_save_particles_at_xhi=1, warpx_save_particles_at_eb=1) ########################## # numerics components ########################## grid = picmi.Cartesian3DGrid( number_of_cells=[nx, ny, nz], lower_bound=[xmin, ymin, zmin], upper_bound=[xmax, ymax, zmax], lower_boundary_conditions=['none', 'none', 'none'], upper_boundary_conditions=['none', 'none', 'none'], lower_boundary_conditions_particles=['open', 'open', 'open'], upper_boundary_conditions_particles=['open', 'open', 'open'], warpx_max_grid_size=32) 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 ##########################
xmin = -200.e-6 xmax = +200.e-6 ymin = -200.e-6 ymax = +200.e-6 zmin = -200.e-6 zmax = +200.e-6 moving_window_velocity = [0., 0., constants.c] number_per_cell_each_dim = [4, 4, 4] 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, #refined_regions = [[1, [-25e-6, -25e-6, -200.e-6], [25e-6, 25e-6, 200.e-6]]], # as argument warpx_max_grid_size=128, warpx_blocking_factor=16) # --- As a seperate function call (instead of refined_regions argument) grid.add_refined_region(level=1, lo=[-25e-6, -25e-6, -200.e-6], hi=[25e-6, 25e-6, 200.e-6]) solver = picmi.ElectromagneticSolver(grid=grid, cfl=1, warpx_do_pml=1, warpx_pml_ncell=10)
# Physical domain xmin = -1. xmax = 1. ymin = -1. ymax = 1. zmin = 0. zmax = 2. # Create grid grid = picmi.Cartesian3DGrid( number_of_cells=[nx, ny, nz], lower_bound=[xmin, ymin, zmin], upper_bound=[xmax, ymax, zmax], lower_boundary_conditions=['dirichlet', 'dirichlet', 'dirichlet'], upper_boundary_conditions=['dirichlet', 'dirichlet', 'dirichlet'], lower_boundary_conditions_particles=[ 'absorbing', 'absorbing', 'absorbing' ], upper_boundary_conditions_particles=[ 'absorbing', 'absorbing', 'absorbing' ]) # Particles vel_z = 0.5 * c multiparticles_distribution = picmi.ParticleListDistribution(x=[0.05, 0.], y=[0., 0.04], z=[0.05, 0.05], ux=[0., 0.], uy=[0., 0.], uz=[vel_z, vel_z], weight=[1., 1.])
zmin = -2. zmax = +2. number_sim_particles = 32768 total_charge = 8.010883097437485e-07 beam_rms_size = 0.25 electron_beam_divergence = -0.04 * constants.c em_order = 3 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'], lower_boundary_conditions_particles=['periodic', 'periodic', 'absorbing'], upper_boundary_conditions_particles=['periodic', 'periodic', 'absorbing'], warpx_max_grid_size=16) 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 ])
ymin = -32 * unit ymax = 32 * unit zmin = -32 * unit zmax = 32 * unit ########################## # numerics components ########################## lower_boundary_conditions = ['open', 'dirichlet', 'periodic'] upper_boundary_conditions = ['open', 'dirichlet', 'periodic'] grid = picmi.Cartesian3DGrid( number_of_cells=[nx, ny, nz], lower_bound=[xmin, ymin, zmin], upper_bound=[xmax, ymax, zmax], lower_boundary_conditions=lower_boundary_conditions, upper_boundary_conditions=upper_boundary_conditions, lower_boundary_conditions_particles=['absorbing', 'absorbing', 'periodic'], upper_boundary_conditions_particles=['absorbing', 'absorbing', 'periodic'], moving_window_velocity=None, warpx_max_grid_size=64) flag_correct_div = False solver = picmi.ElectromagneticSolver(grid=grid, method='Yee', cfl=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))",
ymin = -30e-06 ymax = 30e-06 zmin = -56e-06 zmax = 12e-06 # Domain decomposition max_grid_size = 64 blocking_factor = 32 # Create grid grid = picmi.Cartesian3DGrid( number_of_cells=[nx, ny, nz], lower_bound=[xmin, ymin, zmin], upper_bound=[xmax, ymax, zmax], lower_boundary_conditions=['periodic', 'periodic', 'dirichlet'], upper_boundary_conditions=['periodic', 'periodic', 'dirichlet'], lower_boundary_conditions_particles=['periodic', 'periodic', 'absorbing'], upper_boundary_conditions_particles=['periodic', 'periodic', 'absorbing'], moving_window_velocity=[0., 0., c], warpx_max_grid_size=max_grid_size, warpx_blocking_factor=blocking_factor) # Particles: plasma electrons plasma_density = 2e23 plasma_xmin = -20e-06 plasma_ymin = -20e-06 plasma_zmin = 0 plasma_xmax = 20e-06 plasma_ymax = 20e-06 plasma_zmax = None uniform_distribution = picmi.UniformDistribution(
zmax = 0.5 ########################## # numerics components ########################## grid = picmi.Cartesian3DGrid( number_of_cells=[nx, ny, nz], lower_bound=[xmin, ymin, zmin], upper_bound=[xmax, ymax, zmax], lower_boundary_conditions=['dirichlet', 'dirichlet', 'dirichlet'], upper_boundary_conditions=['dirichlet', 'dirichlet', 'dirichlet'], lower_boundary_conditions_particles=[ 'absorbing', 'absorbing', 'absorbing' ], upper_boundary_conditions_particles=[ 'absorbing', 'absorbing', 'absorbing' ], warpx_potential_lo_x=V_domain_boundary, warpx_potential_hi_x=V_domain_boundary, warpx_potential_lo_y=V_domain_boundary, warpx_potential_hi_y=V_domain_boundary, warpx_potential_lo_z=V_domain_boundary, warpx_potential_hi_z=V_domain_boundary, warpx_blocking_factor=8, warpx_max_grid_size=128) solver = picmi.ElectrostaticSolver(grid=grid, method='Multigrid', required_precision=1e-7) embedded_boundary = picmi.EmbeddedBoundary(