#!/usr/bin/env python3 # # --- Input file for loading initial field from openPMD file. from pywarpx import picmi constants = picmi.constants ################################# ####### GENERAL PARAMETERS ###### ################################# max_steps = 300 max_grid_size = 40 nx = max_grid_size ny = max_grid_size nz = max_grid_size xmin = -1 xmax = 1 ymin = xmin ymax = xmax zmin = 0 zmax = 5 number_per_cell = 200 ################################# ############ NUMERICS ########### ################################# verbose = 1 dt = 4.4e-7 use_filter = 0 # Order of particle shape factors particle_shape = 1 ################################# ############ PLASMA ############# ################################# ion_dist = picmi.ParticleListDistribution( x=0.0, y=0.2, z=2.5, ux=9.5e-05*constants.c, uy=0.0*constants.c, uz=1.34e-4*constants.c, weight=1.0 ) ions = picmi.Species( particle_type='H', name='proton', charge='q_e',mass="m_p", warpx_do_not_deposit=1, initial_distribution=ion_dist ) ################################# ######## INITIAL FIELD ########## ################################# initial_field = picmi.LoadInitialField( read_fields_from_path="../../../../openPMD-example-datasets/example-femm-3d.h5", load_E=False ) ################################# ###### GRID AND SOLVER ########## ################################# grid = picmi.Cartesian3DGrid( number_of_cells=[nx, ny, nz], warpx_max_grid_size=max_grid_size, 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'] ) solver = picmi.ElectrostaticSolver(grid=grid) ################################# ######### DIAGNOSTICS ########### ################################# field_diag = picmi.FieldDiagnostic( name='diag1', grid=grid, period=300, write_dir='.', warpx_file_prefix='Python_LoadExternalField3D_plt' ) ################################# ####### SIMULATION SETUP ######## ################################# sim = picmi.Simulation( solver=solver, max_steps=max_steps, verbose=verbose, warpx_serialize_initial_conditions=False, warpx_grid_type='collocated', warpx_do_dynamic_scheduling=False, warpx_use_filter=use_filter, time_step_size=dt, particle_shape=particle_shape ) sim.add_applied_field(initial_field) 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_3d') sim.step(max_steps)