示例#1
0
    directed_velocity=[0.1 * constants.c, 0., 0.])

electrons = picmi.Species(particle_type='electron',
                          name='electrons',
                          initial_distribution=uniform_plasma)

grid = picmi.Cartesian2DGrid(
    number_of_cells=[nx, ny],
    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.)

sim = picmi.Simulation(solver=solver,
                       max_steps=40,
                       verbose=1,
                       warpx_plot_int=1,
                       warpx_current_deposition_algo='direct')

sim.add_species(electrons,
                layout=picmi.GriddedLayout(n_macroparticle_per_cell=[2, 2],
                                           grid=grid))

# write_inputs will create an inputs file that can be used to run
# with the compiled version.
sim.write_input_file(file_name='inputs2d_from_PICMI')
示例#2
0
##########################
# numerics components
##########################

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'],
    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',
示例#3
0
    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)

beam_distribution = picmi.UniformDistribution(
    density=1.e23,
    lower_bound=[-20.e-6, -20.e-6, -150.e-6],
    upper_bound=[+20.e-6, +20.e-6, -100.e-6],
    directed_velocity=[0., 0., 1.e9])

plasma_distribution = picmi.UniformDistribution(
    density=1.e22,
    lower_bound=[-200.e-6, -200.e-6, 0.],
    upper_bound=[+200.e-6, +200.e-6, None],
    fill_in=True)

beam = picmi.Species(particle_type='electron',
示例#4
0
                                                             weight=[1., 1.])

electrons = picmi.Species(particle_type='electron',
                          name='electrons',
                          initial_distribution=multiparticles_distribution)

# Plasma lenses
plasma_lenses = picmi.PlasmaLens(
    period=0.5,
    starts=[0.1, 0.11, 0.12, 0.13],
    lengths=[0.1, 0.11, 0.12, 0.13],
    strengths_E=[600000., 800000., 600000., 200000.],
    strengths_B=[0.0, 0.0, 0.0, 0.0])

# Electromagnetic solver
solver = picmi.ElectromagneticSolver(grid=grid, method='Yee', cfl=0.7)

# Diagnostics
part_diag1 = picmi.ParticleDiagnostic(
    name='diag1',
    period=max_steps,
    species=[electrons],
    data_list=['ux', 'uy', 'uz'],
    write_dir='.',
    warpx_file_prefix='Python_plasma_lens_plt')

# Set up simulation
sim = picmi.Simulation(solver=solver,
                       max_steps=max_steps,
                       verbose=1,
                       particle_shape='linear',
示例#5
0
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
    ])

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',
示例#6
0
laser = picmi.GaussianLaser(
    wavelength=0.8e-06,
    waist=5e-06,
    duration=15e-15,
    focal_position=[0, 0, profile_focal_distance + position_z],
    centroid_position=[0, 0, position_z - c * profile_t_peak],
    propagation_direction=[0, 0, 1],
    polarization_direction=[0, 1, 0],
    E0=e_max,
    fill_in=False)
laser_antenna = picmi.LaserAntenna(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=200,
    data_list=diag_field_list,
    write_dir='.',
    warpx_file_prefix='Python_LaserAccelerationMR_plt')

# Set up simulation
sim = picmi.Simulation(solver=solver,
                       max_steps=max_steps,
示例#7
0
##########################
# numerics components
##########################

grid = picmi.CylindricalGrid(
    number_of_cells=[nr, nz],
    n_azimuthal_modes=3,
    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],
示例#8
0
grid = picmi.Cartesian2DGrid(number_of_cells=[nx, nz],
                             lower_bound=[xmin, zmin],
                             upper_bound=[xmax, zmax],
                             lower_boundary_conditions=field_boundary,
                             upper_boundary_conditions=field_boundary,
                             guard_cells=[nxg, nzg],
                             moving_window_velocity=[0., 0., 0],
                             warpx_max_grid_size_x=max_grid_size_x,
                             warpx_max_grid_size_y=max_grid_size_z)

# 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