9 #ifndef PLASMA_INJECTOR_H_
10 #define PLASMA_INJECTOR_H_
28 #ifdef WARPX_USE_OPENPMD
29 # include <openPMD/openPMD.hpp>
50 const std::string& src_name=
"");
62 amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept;
75 amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept;
77 bool queryCharge (amrex::ParticleReal& a_charge)
const;
78 bool queryMass (amrex::ParticleReal& a_mass)
const;
108 amrex::Real
x_cut = std::numeric_limits<amrex::Real>::max();
109 amrex::Real
y_cut = std::numeric_limits<amrex::Real>::max();
110 amrex::Real
z_cut = std::numeric_limits<amrex::Real>::max();
118 #ifdef WARPX_USE_OPENPMD
139 amrex::Real
density_min = std::numeric_limits<amrex::Real>::epsilon();
140 amrex::Real
density_max = std::numeric_limits<amrex::Real>::max();
170 std::unique_ptr<InjectorDensity,InjectorDensityDeleter>
h_inj_rho;
174 std::unique_ptr<InjectorFlux,InjectorFluxDeleter>
h_inj_flux;
178 std::unique_ptr<InjectorMomentum,InjectorMomentumDeleter>
h_inj_mom;
PhysicalSpecies
Definition: SpeciesPhysicalProperties.H:16
Definition: PlasmaInjector.H:42
bool insideBounds(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: PlasmaInjector.cpp:567
void setupExternalFile(amrex::ParmParse const &pp_species)
Definition: PlasmaInjector.cpp:419
void setupMultipleParticles(amrex::ParmParse const &pp_species)
Definition: PlasmaInjector.cpp:197
InjectorPosition * d_inj_pos
Definition: PlasmaInjector.H:165
std::unique_ptr< InjectorDensity, InjectorDensityDeleter > h_inj_rho
Definition: PlasmaInjector.H:170
std::string str_flux_function
Definition: PlasmaInjector.H:134
amrex::Vector< amrex::ParticleReal > multiple_particles_weight
Definition: PlasmaInjector.H:99
amrex::ParticleReal charge
Definition: PlasmaInjector.H:154
bool charge_from_source
Definition: PlasmaInjector.H:153
std::unique_ptr< amrex::Parser > uz_th_parser
Definition: PlasmaInjector.H:185
void setupNuniformPerCell(amrex::ParmParse const &pp_species)
Definition: PlasmaInjector.cpp:365
std::unique_ptr< InjectorMomentum, InjectorMomentumDeleter > h_inj_mom
Definition: PlasmaInjector.H:178
amrex::Real x_rms
Definition: PlasmaInjector.H:105
amrex::Vector< amrex::ParticleReal > multiple_particles_ux
Definition: PlasmaInjector.H:96
InjectorFlux * getInjectorFlux() const
Definition: PlasmaInjector.cpp:619
InjectorPosition * d_flux_pos
Definition: PlasmaInjector.H:168
amrex::Real z_rms
Definition: PlasmaInjector.H:107
InjectorDensity * d_inj_rho
Definition: PlasmaInjector.H:171
long npart
Definition: PlasmaInjector.H:112
void setupGaussianBeam(amrex::ParmParse const &pp_species)
Definition: PlasmaInjector.cpp:220
amrex::Real x_m
Definition: PlasmaInjector.H:102
bool queryCharge(amrex::ParticleReal &a_charge) const
Definition: PlasmaInjector.cpp:583
amrex::Vector< amrex::ParticleReal > multiple_particles_uy
Definition: PlasmaInjector.H:97
bool radially_weighted
Definition: PlasmaInjector.H:132
InjectorMomentum * getInjectorMomentumHost() const
Definition: PlasmaInjector.cpp:631
InjectorPosition * getInjectorPosition() const
Definition: PlasmaInjector.cpp:601
amrex::Vector< amrex::ParticleReal > multiple_particles_uz
Definition: PlasmaInjector.H:98
bool doFluxInjection() const noexcept
Definition: PlasmaInjector.H:85
amrex::Real x_cut
Definition: PlasmaInjector.H:108
amrex::Vector< amrex::ParticleReal > multiple_particles_pos_x
Definition: PlasmaInjector.H:93
bool overlapsWith(const amrex::XDim3 &lo, const amrex::XDim3 &hi) const noexcept
Definition: PlasmaInjector.cpp:574
std::unique_ptr< amrex::Parser > uz_parser
Definition: PlasmaInjector.H:182
amrex::Real z_cut
Definition: PlasmaInjector.H:110
amrex::Vector< amrex::ParticleReal > multiple_particles_pos_y
Definition: PlasmaInjector.H:94
std::unique_ptr< amrex::Parser > ux_th_parser
Definition: PlasmaInjector.H:183
PlasmaInjector(const PlasmaInjector &)=delete
void parseFlux(amrex::ParmParse const &pp_species)
Definition: PlasmaInjector.cpp:527
amrex::Real q_tot
Definition: PlasmaInjector.H:111
amrex::Real flux_tmin
Definition: PlasmaInjector.H:124
bool add_multiple_particles
Definition: PlasmaInjector.H:92
amrex::XDim3 getMomentum(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: PlasmaInjector.cpp:560
amrex::Real flux_tmax
Definition: PlasmaInjector.H:125
std::unique_ptr< InjectorFlux, InjectorFluxDeleter > h_inj_flux
Definition: PlasmaInjector.H:174
amrex::Real xmin
Definition: PlasmaInjector.H:136
std::unique_ptr< amrex::Parser > uy_parser
Definition: PlasmaInjector.H:181
int symmetrization_order
Definition: PlasmaInjector.H:114
std::unique_ptr< openPMD::Series > m_openpmd_input_series
additional z offset for particle positions
Definition: PlasmaInjector.H:120
void setupSingleParticle(amrex::ParmParse const &pp_species)
Definition: PlasmaInjector.cpp:186
amrex::Real ymax
Definition: PlasmaInjector.H:137
amrex::ParticleReal mass
Definition: PlasmaInjector.H:154
PlasmaInjector & operator=(const PlasmaInjector &)=delete
std::string species_name
Definition: PlasmaInjector.H:161
void setupNRandomPerCell(amrex::ParmParse const &pp_species)
Definition: PlasmaInjector.cpp:257
InjectorMomentum * d_inj_mom
Definition: PlasmaInjector.H:179
amrex::ParticleReal single_particle_weight
Definition: PlasmaInjector.H:90
std::unique_ptr< amrex::Parser > ux_parser
Definition: PlasmaInjector.H:180
bool external_file
Definition: PlasmaInjector.H:116
amrex::Real xmax
Definition: PlasmaInjector.H:136
amrex::Real zmin
Definition: PlasmaInjector.H:138
PlasmaInjector & operator=(PlasmaInjector &&)=default
std::unique_ptr< TemperatureProperties > h_mom_temp
Definition: PlasmaInjector.H:189
std::unique_ptr< amrex::Parser > flux_parser
Definition: PlasmaInjector.H:176
int do_symmetrize
Definition: PlasmaInjector.H:113
amrex::Real y_rms
Definition: PlasmaInjector.H:106
amrex::Real ymin
Definition: PlasmaInjector.H:137
amrex::Real density_min
Definition: PlasmaInjector.H:139
InjectorDensity * getInjectorDensity() const
Definition: PlasmaInjector.cpp:613
amrex::Vector< int > num_particles_per_cell_each_dim
Definition: PlasmaInjector.H:71
bool add_single_particle
Definition: PlasmaInjector.H:87
int num_particles_per_cell
Definition: PlasmaInjector.H:68
amrex::Real z_shift
initialize from an openPMD file
Definition: PlasmaInjector.H:117
amrex::Vector< amrex::ParticleReal > multiple_particles_pos_z
Definition: PlasmaInjector.H:95
bool gaussian_beam
Definition: PlasmaInjector.H:101
amrex::Real zmax
Definition: PlasmaInjector.H:138
amrex::Real z_m
Definition: PlasmaInjector.H:104
InjectorMomentum * getInjectorMomentumDevice() const
Definition: PlasmaInjector.cpp:625
amrex::Vector< amrex::ParticleReal > single_particle_u
Definition: PlasmaInjector.H:89
PhysicalSpecies physical_species
Definition: PlasmaInjector.H:156
bool doInjection() const noexcept
Definition: PlasmaInjector.H:82
bool mass_from_source
Definition: PlasmaInjector.H:152
std::unique_ptr< amrex::Parser > uy_th_parser
Definition: PlasmaInjector.H:184
std::unique_ptr< InjectorPosition > h_flux_pos
Definition: PlasmaInjector.H:167
std::string source_name
Definition: PlasmaInjector.H:162
InjectorFlux * d_inj_flux
Definition: PlasmaInjector.H:175
int flux_direction
Definition: PlasmaInjector.H:130
InjectorPosition * getInjectorFluxPosition() const
Definition: PlasmaInjector.cpp:607
std::unique_ptr< amrex::Parser > density_parser
Definition: PlasmaInjector.H:172
int species_id
Definition: PlasmaInjector.H:160
amrex::Real density_max
Definition: PlasmaInjector.H:140
amrex::Vector< amrex::ParticleReal > single_particle_pos
Definition: PlasmaInjector.H:88
std::unique_ptr< InjectorPosition > h_inj_pos
Definition: PlasmaInjector.H:164
amrex::Real y_cut
Definition: PlasmaInjector.H:109
bool queryMass(amrex::ParticleReal &a_mass) const
Definition: PlasmaInjector.cpp:592
amrex::Real num_particles_per_cell_real
Definition: PlasmaInjector.H:69
amrex::Real flux
Definition: PlasmaInjector.H:158
PlasmaInjector(PlasmaInjector &&)=default
std::unique_ptr< VelocityProperties > h_mom_vel
Definition: PlasmaInjector.H:190
void setupNFluxPerCell(amrex::ParmParse const &pp_species)
Definition: PlasmaInjector.cpp:288
int flux_normal_axis
Definition: PlasmaInjector.H:129
amrex::Real surface_flux_pos
Definition: PlasmaInjector.H:123
amrex::Real y_m
Definition: PlasmaInjector.H:103
name
Definition: run_automated.py:229
Definition: InjectorDensity.H:130
Definition: InjectorFlux.H:64
Definition: InjectorMomentum.H:573
Definition: InjectorPosition.H:121