9 #ifndef PLASMA_INJECTOR_H_ 10 #define PLASMA_INJECTOR_H_ 20 #include <AMReX_Vector.H> 21 #include <AMReX_ParmParse.H> 22 #include <AMReX_Utility.H> 24 #ifdef WARPX_USE_OPENPMD 25 # include <openPMD/openPMD.hpp> 47 bool insideBounds (amrex::Real
x, amrex::Real y, amrex::Real
z)
const noexcept;
50 bool overlapsWith (
const amrex::XDim3& lo,
const amrex::XDim3& hi)
const noexcept;
57 amrex::XDim3
getMomentum (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept;
77 amrex::Real
x_cut = std::numeric_limits<amrex::Real>::max();
78 amrex::Real
y_cut = std::numeric_limits<amrex::Real>::max();
79 amrex::Real
z_cut = std::numeric_limits<amrex::Real>::max();
86 #ifdef WARPX_USE_OPENPMD 101 amrex::Real
density_min = std::numeric_limits<amrex::Real>::epsilon();
102 amrex::Real
density_max = std::numeric_limits<amrex::Real>::max();
122 std::unique_ptr<InjectorDensity,InjectorDensityDeleter>
h_inj_rho;
125 std::unique_ptr<InjectorMomentum,InjectorMomentumDeleter>
h_inj_mom;
amrex::Real xmin
Definition: PlasmaInjector.H:98
InjectorMomentum * d_inj_mom
Definition: PlasmaInjector.H:126
PhysicalSpecies getPhysicalSpecies() const
Definition: PlasmaInjector.H:61
PhysicalSpecies physical_species
Definition: PlasmaInjector.H:112
amrex::Real mass
Definition: PlasmaInjector.H:110
amrex::Real z_m
Definition: PlasmaInjector.H:73
amrex::ParticleReal single_particle_weight
Definition: PlasmaInjector.H:68
std::unique_ptr< openPMD::Series > m_openpmd_input_series
additional z offset for particle positions
Definition: PlasmaInjector.H:88
Definition: PlasmaInjector.H:35
bool gaussian_beam
Definition: PlasmaInjector.H:70
amrex::Real getCharge()
Definition: PlasmaInjector.H:59
def x
Definition: read_lab_particles.py:25
amrex::Real x_cut
Definition: PlasmaInjector.H:77
PhysicalSpecies
Definition: SpeciesPhysicalProperties.H:19
amrex::XDim3 getMomentum(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: PlasmaInjector.cpp:566
amrex::Real q_tot
Definition: PlasmaInjector.H:80
void parseDensity(amrex::ParmParse &pp)
Definition: PlasmaInjector.cpp:404
amrex::Real density_max
Definition: PlasmaInjector.H:102
bool add_single_particle
Definition: PlasmaInjector.H:65
amrex::Real x_m
Definition: PlasmaInjector.H:71
amrex::Real z_rms
Definition: PlasmaInjector.H:76
bool radially_weighted
Definition: PlasmaInjector.H:91
amrex::Real x_rms
Definition: PlasmaInjector.H:74
amrex::Real z_cut
Definition: PlasmaInjector.H:79
bool doInjection() const noexcept
Definition: PlasmaInjector.H:63
int num_particles_per_cell
Definition: PlasmaInjector.H:52
amrex::Vector< int > num_particles_per_cell_each_dim
Definition: PlasmaInjector.H:54
def z
Definition: read_lab_particles.py:26
std::string species_name
Definition: PlasmaInjector.H:117
amrex::Real ymax
Definition: PlasmaInjector.H:99
amrex::Real density_min
Definition: PlasmaInjector.H:101
int species_id
Definition: PlasmaInjector.H:116
std::unique_ptr< InjectorPosition > h_inj_pos
Definition: PlasmaInjector.H:119
amrex::Real charge
Definition: PlasmaInjector.H:110
std::unique_ptr< InjectorMomentum, InjectorMomentumDeleter > h_inj_mom
Definition: PlasmaInjector.H:125
PlasmaInjector()
Definition: PlasmaInjector.cpp:72
std::unique_ptr< InjectorDensity, InjectorDensityDeleter > h_inj_rho
Definition: PlasmaInjector.H:122
amrex::Real y_m
Definition: PlasmaInjector.H:72
std::string str_density_function
Definition: PlasmaInjector.H:93
long npart
Definition: PlasmaInjector.H:81
InjectorMomentum * getInjectorMomentum()
Definition: PlasmaInjector.cpp:599
InjectorPosition * d_inj_pos
Definition: PlasmaInjector.H:120
amrex::Real z_shift
initialize from an openPMD file
Definition: PlasmaInjector.H:85
amrex::Real y_cut
Definition: PlasmaInjector.H:78
name
Definition: run_automated.py:204
int do_symmetrize
Definition: PlasmaInjector.H:82
bool external_file
Definition: PlasmaInjector.H:84
Definition: InjectorMomentum.H:303
InjectorDensity * getInjectorDensity()
Definition: PlasmaInjector.cpp:593
InjectorPosition * getInjectorPosition()
Definition: PlasmaInjector.cpp:587
bool insideBounds(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: PlasmaInjector.cpp:571
amrex::Real xmax
Definition: PlasmaInjector.H:98
~PlasmaInjector()
Definition: PlasmaInjector.cpp:386
std::string str_momentum_function_ux
Definition: PlasmaInjector.H:94
amrex::Real getMass()
Definition: PlasmaInjector.H:60
void parseMomentum(amrex::ParmParse &pp)
Definition: PlasmaInjector.cpp:439
std::string str_momentum_function_uy
Definition: PlasmaInjector.H:95
amrex::Real ymin
Definition: PlasmaInjector.H:99
amrex::Real y_rms
Definition: PlasmaInjector.H:75
bool overlapsWith(const amrex::XDim3 &lo, const amrex::XDim3 &hi) const noexcept
Definition: PlasmaInjector.cpp:578
Definition: InjectorPosition.H:72
std::string str_momentum_function_uz
Definition: PlasmaInjector.H:96
amrex::Real zmin
Definition: PlasmaInjector.H:100
Definition: InjectorDensity.H:123
amrex::Vector< amrex::ParticleReal > single_particle_vel
Definition: PlasmaInjector.H:67
amrex::Real zmax
Definition: PlasmaInjector.H:100
amrex::Real density
Definition: PlasmaInjector.H:114
amrex::Vector< amrex::ParticleReal > single_particle_pos
Definition: PlasmaInjector.H:66
InjectorDensity * d_inj_rho
Definition: PlasmaInjector.H:123