9 #ifndef PLASMA_INJECTOR_H_
10 #define PLASMA_INJECTOR_H_
27 #ifdef WARPX_USE_OPENPMD
28 # include <openPMD/openPMD.hpp>
52 bool insideBounds (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept;
97 amrex::Real
x_cut = std::numeric_limits<amrex::Real>::max();
98 amrex::Real
y_cut = std::numeric_limits<amrex::Real>::max();
99 amrex::Real
z_cut = std::numeric_limits<amrex::Real>::max();
107 #ifdef WARPX_USE_OPENPMD
132 amrex::Real
density_min = std::numeric_limits<amrex::Real>::epsilon();
133 amrex::Real
density_max = std::numeric_limits<amrex::Real>::max();
161 std::unique_ptr<InjectorDensity,InjectorDensityDeleter>
h_inj_rho;
165 std::unique_ptr<InjectorFlux,InjectorFluxDeleter>
h_inj_flux;
169 std::unique_ptr<InjectorMomentum,InjectorMomentumDeleter>
h_inj_mom;
PhysicalSpecies
Definition: SpeciesPhysicalProperties.H:16
Definition: PlasmaInjector.H:41
bool insideBounds(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: PlasmaInjector.cpp:782
void setupMultipleParticles(const amrex::ParmParse &pp_species_name)
Definition: PlasmaInjector.cpp:240
void setupNFluxPerCell(const amrex::ParmParse &pp_species_name)
Definition: PlasmaInjector.cpp:333
InjectorPosition * d_inj_pos
Definition: PlasmaInjector.H:156
std::unique_ptr< InjectorDensity, InjectorDensityDeleter > h_inj_rho
Definition: PlasmaInjector.H:161
PhysicalSpecies getPhysicalSpecies() const
Definition: PlasmaInjector.H:67
std::string str_momentum_function_uy
Definition: PlasmaInjector.H:126
std::string str_flux_function
Definition: PlasmaInjector.H:124
amrex::Vector< amrex::ParticleReal > multiple_particles_weight
Definition: PlasmaInjector.H:88
std::unique_ptr< InjectorMomentum, InjectorMomentumDeleter > h_inj_mom
Definition: PlasmaInjector.H:169
amrex::Real x_rms
Definition: PlasmaInjector.H:94
amrex::Vector< amrex::ParticleReal > multiple_particles_ux
Definition: PlasmaInjector.H:85
InjectorPosition * d_flux_pos
Definition: PlasmaInjector.H:159
amrex::Real z_rms
Definition: PlasmaInjector.H:96
InjectorDensity * d_inj_rho
Definition: PlasmaInjector.H:162
long npart
Definition: PlasmaInjector.H:101
amrex::Real x_m
Definition: PlasmaInjector.H:91
amrex::Vector< amrex::ParticleReal > multiple_particles_uy
Definition: PlasmaInjector.H:86
bool radially_weighted
Definition: PlasmaInjector.H:121
amrex::Vector< amrex::ParticleReal > multiple_particles_uz
Definition: PlasmaInjector.H:87
bool doFluxInjection() const noexcept
Definition: PlasmaInjector.H:74
amrex::Real x_cut
Definition: PlasmaInjector.H:97
InjectorPosition * getInjectorPosition()
Definition: PlasmaInjector.cpp:798
amrex::Vector< amrex::ParticleReal > multiple_particles_pos_x
Definition: PlasmaInjector.H:82
bool overlapsWith(const amrex::XDim3 &lo, const amrex::XDim3 &hi) const noexcept
Definition: PlasmaInjector.cpp:789
std::string str_density_function
Definition: PlasmaInjector.H:123
std::unique_ptr< amrex::Parser > uz_parser
Definition: PlasmaInjector.H:173
amrex::Real z_cut
Definition: PlasmaInjector.H:99
InjectorFlux * getInjectorFlux()
Definition: PlasmaInjector.cpp:816
amrex::Vector< amrex::ParticleReal > multiple_particles_pos_y
Definition: PlasmaInjector.H:83
void parseMomentum(const amrex::ParmParse &pp_species_name, const std::string &style)
Definition: PlasmaInjector.cpp:646
InjectorMomentum * getInjectorMomentumDevice()
Definition: PlasmaInjector.cpp:822
void setupNRandomPerCell(const amrex::ParmParse &pp_species_name)
Definition: PlasmaInjector.cpp:304
void parseFlux(const amrex::ParmParse &pp_species_name)
Definition: PlasmaInjector.cpp:609
amrex::Real q_tot
Definition: PlasmaInjector.H:100
amrex::Real flux_tmin
Definition: PlasmaInjector.H:113
bool add_multiple_particles
Definition: PlasmaInjector.H:81
amrex::XDim3 getMomentum(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: PlasmaInjector.cpp:775
void setupSingleParticle(const amrex::ParmParse &pp_species_name)
Definition: PlasmaInjector.cpp:226
amrex::Real flux_tmax
Definition: PlasmaInjector.H:114
void setupNuniformPerCell(const amrex::ParmParse &pp_species_name)
Definition: PlasmaInjector.cpp:410
std::unique_ptr< InjectorFlux, InjectorFluxDeleter > h_inj_flux
Definition: PlasmaInjector.H:165
amrex::Real xmin
Definition: PlasmaInjector.H:129
std::unique_ptr< amrex::Parser > uy_parser
Definition: PlasmaInjector.H:172
int symmetrization_order
Definition: PlasmaInjector.H:103
InjectorMomentum * getInjectorMomentumHost()
Definition: PlasmaInjector.cpp:828
std::unique_ptr< openPMD::Series > m_openpmd_input_series
additional z offset for particle positions
Definition: PlasmaInjector.H:109
amrex::Real ymax
Definition: PlasmaInjector.H:130
std::string species_name
Definition: PlasmaInjector.H:153
InjectorMomentum * d_inj_mom
Definition: PlasmaInjector.H:170
InjectorDensity * getInjectorDensity()
Definition: PlasmaInjector.cpp:810
amrex::ParticleReal single_particle_weight
Definition: PlasmaInjector.H:79
std::unique_ptr< amrex::Parser > ux_parser
Definition: PlasmaInjector.H:171
bool external_file
Definition: PlasmaInjector.H:105
InjectorPosition * getInjectorFluxPosition()
Definition: PlasmaInjector.cpp:804
amrex::Real xmax
Definition: PlasmaInjector.H:129
amrex::Real zmin
Definition: PlasmaInjector.H:131
std::unique_ptr< TemperatureProperties > h_mom_temp
Definition: PlasmaInjector.H:177
std::unique_ptr< amrex::Parser > flux_parser
Definition: PlasmaInjector.H:167
std::string str_momentum_function_uz
Definition: PlasmaInjector.H:127
int do_symmetrize
Definition: PlasmaInjector.H:102
amrex::Real y_rms
Definition: PlasmaInjector.H:95
amrex::Real ymin
Definition: PlasmaInjector.H:130
amrex::Real density_min
Definition: PlasmaInjector.H:132
void setupExternalFile(const amrex::ParmParse &pp_species_name)
Definition: PlasmaInjector.cpp:462
void parseDensity(const amrex::ParmParse &pp_species_name)
Definition: PlasmaInjector.cpp:569
amrex::Real density
Definition: PlasmaInjector.H:149
amrex::Vector< int > num_particles_per_cell_each_dim
Definition: PlasmaInjector.H:60
bool add_single_particle
Definition: PlasmaInjector.H:76
int num_particles_per_cell
Definition: PlasmaInjector.H:57
amrex::Real z_shift
initialize from an openPMD file
Definition: PlasmaInjector.H:106
amrex::Vector< amrex::ParticleReal > multiple_particles_pos_z
Definition: PlasmaInjector.H:84
bool gaussian_beam
Definition: PlasmaInjector.H:90
amrex::Real zmax
Definition: PlasmaInjector.H:131
amrex::Real z_m
Definition: PlasmaInjector.H:93
amrex::Real getMass()
Definition: PlasmaInjector.H:66
amrex::Vector< amrex::ParticleReal > single_particle_u
Definition: PlasmaInjector.H:78
void setupGaussianBeam(const amrex::ParmParse &pp_species_name)
Definition: PlasmaInjector.cpp:270
PhysicalSpecies physical_species
Definition: PlasmaInjector.H:147
bool doInjection() const noexcept
Definition: PlasmaInjector.H:71
amrex::Real getCharge()
Definition: PlasmaInjector.H:65
std::unique_ptr< InjectorPosition > h_flux_pos
Definition: PlasmaInjector.H:158
InjectorFlux * d_inj_flux
Definition: PlasmaInjector.H:166
int flux_direction
Definition: PlasmaInjector.H:119
std::unique_ptr< amrex::Parser > density_parser
Definition: PlasmaInjector.H:163
int species_id
Definition: PlasmaInjector.H:152
amrex::Real density_max
Definition: PlasmaInjector.H:133
amrex::Real charge
Definition: PlasmaInjector.H:145
amrex::Vector< amrex::ParticleReal > single_particle_pos
Definition: PlasmaInjector.H:77
amrex::Real mass
Definition: PlasmaInjector.H:145
std::unique_ptr< InjectorPosition > h_inj_pos
Definition: PlasmaInjector.H:155
amrex::Real y_cut
Definition: PlasmaInjector.H:98
amrex::Real num_particles_per_cell_real
Definition: PlasmaInjector.H:58
amrex::Real flux
Definition: PlasmaInjector.H:150
std::unique_ptr< VelocityProperties > h_mom_vel
Definition: PlasmaInjector.H:178
int flux_normal_axis
Definition: PlasmaInjector.H:118
std::string str_momentum_function_ux
Definition: PlasmaInjector.H:125
amrex::Real surface_flux_pos
Definition: PlasmaInjector.H:112
amrex::Real y_m
Definition: PlasmaInjector.H:92
name
Definition: run_automated.py:229
Definition: InjectorDensity.H:127
Definition: InjectorFlux.H:62
Definition: InjectorMomentum.H:518
Definition: InjectorPosition.H:118