WarpX
|
#include <PlasmaInjector.H>
Public Member Functions | |
PlasmaInjector ()=default | |
PlasmaInjector (int ispecies, const std::string &name, const amrex::Geometry &geom, const std::string &src_name="") | |
PlasmaInjector (const PlasmaInjector &)=delete | |
PlasmaInjector & | operator= (const PlasmaInjector &)=delete |
PlasmaInjector (PlasmaInjector &&)=default | |
PlasmaInjector & | operator= (PlasmaInjector &&)=default |
~PlasmaInjector () | |
bool | insideBounds (amrex::Real x, amrex::Real y, amrex::Real z) const noexcept |
bool | overlapsWith (const amrex::XDim3 &lo, const amrex::XDim3 &hi) const noexcept |
amrex::XDim3 | getMomentum (amrex::Real x, amrex::Real y, amrex::Real z) const noexcept |
bool | queryCharge (amrex::ParticleReal &a_charge) const |
bool | queryMass (amrex::ParticleReal &a_mass) const |
bool | doInjection () const noexcept |
bool | doFluxInjection () const noexcept |
InjectorPosition * | getInjectorPosition () const |
InjectorPosition * | getInjectorFluxPosition () const |
InjectorDensity * | getInjectorDensity () const |
InjectorFlux * | getInjectorFlux () const |
InjectorMomentum * | getInjectorMomentumDevice () const |
InjectorMomentum * | getInjectorMomentumHost () const |
Public Attributes | |
int | num_particles_per_cell |
amrex::Real | num_particles_per_cell_real |
amrex::Vector< int > | num_particles_per_cell_each_dim |
bool | add_single_particle = false |
amrex::Vector< amrex::ParticleReal > | single_particle_pos |
amrex::Vector< amrex::ParticleReal > | single_particle_u |
amrex::ParticleReal | single_particle_weight |
bool | add_multiple_particles = false |
amrex::Vector< amrex::ParticleReal > | multiple_particles_pos_x |
amrex::Vector< amrex::ParticleReal > | multiple_particles_pos_y |
amrex::Vector< amrex::ParticleReal > | multiple_particles_pos_z |
amrex::Vector< amrex::ParticleReal > | multiple_particles_ux |
amrex::Vector< amrex::ParticleReal > | multiple_particles_uy |
amrex::Vector< amrex::ParticleReal > | multiple_particles_uz |
amrex::Vector< amrex::ParticleReal > | multiple_particles_weight |
bool | gaussian_beam = false |
amrex::Real | x_m |
amrex::Real | y_m |
amrex::Real | z_m |
amrex::Real | x_rms |
amrex::Real | y_rms |
amrex::Real | z_rms |
amrex::Real | x_cut = std::numeric_limits<amrex::Real>::max() |
amrex::Real | y_cut = std::numeric_limits<amrex::Real>::max() |
amrex::Real | z_cut = std::numeric_limits<amrex::Real>::max() |
amrex::Real | q_tot = 0.0 |
long | npart |
int | do_symmetrize = 0 |
int | symmetrization_order = 4 |
bool | do_focusing = false |
amrex::Real | focal_distance |
bool | external_file = false |
amrex::Real | z_shift = 0.0 |
initialize from an openPMD file More... | |
std::unique_ptr< openPMD::Series > | m_openpmd_input_series |
additional z offset for particle positions More... | |
amrex::Real | surface_flux_pos |
amrex::Real | flux_tmin = -1. |
amrex::Real | flux_tmax = -1. |
int | flux_normal_axis |
int | flux_direction |
bool | radially_weighted = true |
std::string | str_flux_function |
amrex::Real | xmin |
amrex::Real | xmax |
amrex::Real | ymin |
amrex::Real | ymax |
amrex::Real | zmin |
amrex::Real | zmax |
amrex::Real | density_min = std::numeric_limits<amrex::Real>::epsilon() |
amrex::Real | density_max = std::numeric_limits<amrex::Real>::max() |
Protected Member Functions | |
void | setupSingleParticle (amrex::ParmParse const &pp_species) |
void | setupMultipleParticles (amrex::ParmParse const &pp_species) |
void | setupGaussianBeam (amrex::ParmParse const &pp_species) |
void | setupNRandomPerCell (amrex::ParmParse const &pp_species) |
void | setupNFluxPerCell (amrex::ParmParse const &pp_species) |
void | setupNuniformPerCell (amrex::ParmParse const &pp_species) |
void | setupExternalFile (amrex::ParmParse const &pp_species) |
void | parseFlux (amrex::ParmParse const &pp_species) |
The PlasmaInjector class parses and stores information about the plasma type used in the particle container. This information is used to create the particles on initialization and whenever the window moves.
|
default |
Default constructor
PlasmaInjector::PlasmaInjector | ( | int | ispecies, |
const std::string & | name, | ||
const amrex::Geometry & | geom, | ||
const std::string & | src_name = "" |
||
) |
|
delete |
|
default |
|
default |
|
inlinenoexcept |
|
inlinenoexcept |
InjectorDensity * PlasmaInjector::getInjectorDensity | ( | ) | const |
InjectorFlux * PlasmaInjector::getInjectorFlux | ( | ) | const |
InjectorPosition * PlasmaInjector::getInjectorFluxPosition | ( | ) | const |
InjectorMomentum * PlasmaInjector::getInjectorMomentumDevice | ( | ) | const |
InjectorMomentum * PlasmaInjector::getInjectorMomentumHost | ( | ) | const |
InjectorPosition * PlasmaInjector::getInjectorPosition | ( | ) | const |
|
noexcept |
|
noexcept |
|
delete |
|
default |
|
noexcept |
|
protected |
bool PlasmaInjector::queryCharge | ( | amrex::ParticleReal & | a_charge | ) | const |
bool PlasmaInjector::queryMass | ( | amrex::ParticleReal & | a_mass | ) | const |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
bool PlasmaInjector::add_multiple_particles = false |
bool PlasmaInjector::add_single_particle = false |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
amrex::Real PlasmaInjector::density_max = std::numeric_limits<amrex::Real>::max() |
amrex::Real PlasmaInjector::density_min = std::numeric_limits<amrex::Real>::epsilon() |
|
protected |
bool PlasmaInjector::do_focusing = false |
int PlasmaInjector::do_symmetrize = 0 |
bool PlasmaInjector::external_file = false |
|
protected |
int PlasmaInjector::flux_direction |
int PlasmaInjector::flux_normal_axis |
|
protected |
amrex::Real PlasmaInjector::flux_tmax = -1. |
amrex::Real PlasmaInjector::flux_tmin = -1. |
amrex::Real PlasmaInjector::focal_distance |
bool PlasmaInjector::gaussian_beam = false |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
std::unique_ptr<openPMD::Series> PlasmaInjector::m_openpmd_input_series |
additional z offset for particle positions
openPMD::Series to load from in external_file injection
|
protected |
|
protected |
amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_pos_x |
amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_pos_y |
amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_pos_z |
amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_ux |
amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_uy |
amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_uz |
amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_weight |
long PlasmaInjector::npart |
int PlasmaInjector::num_particles_per_cell |
amrex::Vector<int> PlasmaInjector::num_particles_per_cell_each_dim |
amrex::Real PlasmaInjector::num_particles_per_cell_real |
|
protected |
amrex::Real PlasmaInjector::q_tot = 0.0 |
bool PlasmaInjector::radially_weighted = true |
amrex::Vector<amrex::ParticleReal> PlasmaInjector::single_particle_pos |
amrex::Vector<amrex::ParticleReal> PlasmaInjector::single_particle_u |
amrex::ParticleReal PlasmaInjector::single_particle_weight |
|
protected |
|
protected |
|
protected |
std::string PlasmaInjector::str_flux_function |
amrex::Real PlasmaInjector::surface_flux_pos |
int PlasmaInjector::symmetrization_order = 4 |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
amrex::Real PlasmaInjector::x_cut = std::numeric_limits<amrex::Real>::max() |
amrex::Real PlasmaInjector::x_m |
amrex::Real PlasmaInjector::x_rms |
amrex::Real PlasmaInjector::xmax |
amrex::Real PlasmaInjector::xmin |
amrex::Real PlasmaInjector::y_cut = std::numeric_limits<amrex::Real>::max() |
amrex::Real PlasmaInjector::y_m |
amrex::Real PlasmaInjector::y_rms |
amrex::Real PlasmaInjector::ymax |
amrex::Real PlasmaInjector::ymin |
amrex::Real PlasmaInjector::z_cut = std::numeric_limits<amrex::Real>::max() |
amrex::Real PlasmaInjector::z_m |
amrex::Real PlasmaInjector::z_rms |
amrex::Real PlasmaInjector::z_shift = 0.0 |
initialize from an openPMD file
amrex::Real PlasmaInjector::zmax |
amrex::Real PlasmaInjector::zmin |