WarpX
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
PlasmaInjector Class Reference

#include <PlasmaInjector.H>

Public Member Functions

 PlasmaInjector ()
 
 PlasmaInjector (int ispecies, const std::string &name)
 
 ~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
 
amrex::Real getCharge ()
 
amrex::Real getMass ()
 
PhysicalSpecies getPhysicalSpecies () const
 
bool doInjection () const noexcept
 
InjectorPositiongetInjectorPosition ()
 
InjectorDensitygetInjectorDensity ()
 
InjectorMomentumgetInjectorMomentum ()
 

Public Attributes

int num_particles_per_cell
 
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_vel
 
amrex::ParticleReal single_particle_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
 
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...
 
bool radially_weighted = true
 
std::string str_density_function
 
std::string str_momentum_function_ux
 
std::string str_momentum_function_uy
 
std::string str_momentum_function_uz
 
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 parseDensity (amrex::ParmParse &pp)
 
void parseMomentum (amrex::ParmParse &pp)
 

Protected Attributes

amrex::Real mass
 
amrex::Real charge
 
PhysicalSpecies physical_species
 
amrex::Real density
 
int species_id
 
std::string species_name
 
std::unique_ptr< InjectorPositionh_inj_pos
 
InjectorPositiond_inj_pos = nullptr
 
std::unique_ptr< InjectorDensity, InjectorDensityDeleterh_inj_rho
 
InjectorDensityd_inj_rho = nullptr
 
std::unique_ptr< InjectorMomentum, InjectorMomentumDeleterh_inj_mom
 
InjectorMomentumd_inj_mom = nullptr
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ PlasmaInjector() [1/2]

PlasmaInjector::PlasmaInjector ( )

◆ PlasmaInjector() [2/2]

PlasmaInjector::PlasmaInjector ( int  ispecies,
const std::string &  name 
)

◆ ~PlasmaInjector()

PlasmaInjector::~PlasmaInjector ( )

Member Function Documentation

◆ doInjection()

bool PlasmaInjector::doInjection ( ) const
inlinenoexcept

◆ getCharge()

amrex::Real PlasmaInjector::getCharge ( )
inline

◆ getInjectorDensity()

InjectorDensity * PlasmaInjector::getInjectorDensity ( )

◆ getInjectorMomentum()

InjectorMomentum * PlasmaInjector::getInjectorMomentum ( )

◆ getInjectorPosition()

InjectorPosition * PlasmaInjector::getInjectorPosition ( )

◆ getMass()

amrex::Real PlasmaInjector::getMass ( )
inline

◆ getMomentum()

XDim3 PlasmaInjector::getMomentum ( amrex::Real  x,
amrex::Real  y,
amrex::Real  z 
) const
noexcept

◆ getPhysicalSpecies()

PhysicalSpecies PlasmaInjector::getPhysicalSpecies ( ) const
inline

◆ insideBounds()

bool PlasmaInjector::insideBounds ( amrex::Real  x,
amrex::Real  y,
amrex::Real  z 
) const
noexcept

◆ overlapsWith()

bool PlasmaInjector::overlapsWith ( const amrex::XDim3 &  lo,
const amrex::XDim3 &  hi 
) const
noexcept

◆ parseDensity()

void PlasmaInjector::parseDensity ( amrex::ParmParse &  pp)
protected

◆ parseMomentum()

void PlasmaInjector::parseMomentum ( amrex::ParmParse &  pp)
protected

Member Data Documentation

◆ add_single_particle

bool PlasmaInjector::add_single_particle = false

◆ charge

amrex::Real PlasmaInjector::charge
protected

◆ d_inj_mom

InjectorMomentum* PlasmaInjector::d_inj_mom = nullptr
protected

◆ d_inj_pos

InjectorPosition* PlasmaInjector::d_inj_pos = nullptr
protected

◆ d_inj_rho

InjectorDensity* PlasmaInjector::d_inj_rho = nullptr
protected

◆ density

amrex::Real PlasmaInjector::density
protected

◆ density_max

amrex::Real PlasmaInjector::density_max = std::numeric_limits<amrex::Real>::max()

◆ density_min

amrex::Real PlasmaInjector::density_min = std::numeric_limits<amrex::Real>::epsilon()

◆ do_symmetrize

int PlasmaInjector::do_symmetrize = 0

◆ external_file

bool PlasmaInjector::external_file = false

◆ gaussian_beam

bool PlasmaInjector::gaussian_beam = false

◆ h_inj_mom

std::unique_ptr<InjectorMomentum,InjectorMomentumDeleter> PlasmaInjector::h_inj_mom
protected

◆ h_inj_pos

std::unique_ptr<InjectorPosition> PlasmaInjector::h_inj_pos
protected

◆ h_inj_rho

std::unique_ptr<InjectorDensity,InjectorDensityDeleter> PlasmaInjector::h_inj_rho
protected

◆ m_openpmd_input_series

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

◆ mass

amrex::Real PlasmaInjector::mass
protected

◆ npart

long PlasmaInjector::npart

◆ num_particles_per_cell

int PlasmaInjector::num_particles_per_cell

◆ num_particles_per_cell_each_dim

amrex::Vector<int> PlasmaInjector::num_particles_per_cell_each_dim

◆ physical_species

PhysicalSpecies PlasmaInjector::physical_species
protected

◆ q_tot

amrex::Real PlasmaInjector::q_tot = 0.0

◆ radially_weighted

bool PlasmaInjector::radially_weighted = true

◆ single_particle_pos

amrex::Vector<amrex::ParticleReal> PlasmaInjector::single_particle_pos

◆ single_particle_vel

amrex::Vector<amrex::ParticleReal> PlasmaInjector::single_particle_vel

◆ single_particle_weight

amrex::ParticleReal PlasmaInjector::single_particle_weight

◆ species_id

int PlasmaInjector::species_id
protected

◆ species_name

std::string PlasmaInjector::species_name
protected

◆ str_density_function

std::string PlasmaInjector::str_density_function

◆ str_momentum_function_ux

std::string PlasmaInjector::str_momentum_function_ux

◆ str_momentum_function_uy

std::string PlasmaInjector::str_momentum_function_uy

◆ str_momentum_function_uz

std::string PlasmaInjector::str_momentum_function_uz

◆ x_cut

amrex::Real PlasmaInjector::x_cut = std::numeric_limits<amrex::Real>::max()

◆ x_m

amrex::Real PlasmaInjector::x_m

◆ x_rms

amrex::Real PlasmaInjector::x_rms

◆ xmax

amrex::Real PlasmaInjector::xmax

◆ xmin

amrex::Real PlasmaInjector::xmin

◆ y_cut

amrex::Real PlasmaInjector::y_cut = std::numeric_limits<amrex::Real>::max()

◆ y_m

amrex::Real PlasmaInjector::y_m

◆ y_rms

amrex::Real PlasmaInjector::y_rms

◆ ymax

amrex::Real PlasmaInjector::ymax

◆ ymin

amrex::Real PlasmaInjector::ymin

◆ z_cut

amrex::Real PlasmaInjector::z_cut = std::numeric_limits<amrex::Real>::max()

◆ z_m

amrex::Real PlasmaInjector::z_m

◆ z_rms

amrex::Real PlasmaInjector::z_rms

◆ z_shift

amrex::Real PlasmaInjector::z_shift = 0.0

initialize from an openPMD file

◆ zmax

amrex::Real PlasmaInjector::zmax

◆ zmin

amrex::Real PlasmaInjector::zmin

The documentation for this class was generated from the following files: