コード例 #1
0
ファイル: langmuir_PICMI.py プロジェクト: yuxi-chen/WarpX
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')
コード例 #2
0
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
##########################
コード例 #3
0
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)
コード例 #4
0
ファイル: PICMI_inputs_3d.py プロジェクト: oshapoval/WarpX
# 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.])
コード例 #5
0
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
    ])
コード例 #6
0
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))",
コード例 #7
0
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(
コード例 #8
0
ファイル: PICMI_inputs_3d.py プロジェクト: Alpine-DAV/WarpX
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(