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

#include <PlasmaInjector.H>

Public Member Functions

 PlasmaInjector ()=default
 
 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::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 external_file = false
 
amrex::Real z_shift = 0.0
 initialize from an openPMD file More...
 
std::unique_ptr< openPMD::Seriesm_openpmd_input_series
 additional z offset for particle positions More...
 
bool surface_flux = false
 
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_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 = PhysicalSpecies::unspecified
 
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< amrex::Parserdensity_parser
 
std::unique_ptr< InjectorMomentum, InjectorMomentumDeleterh_inj_mom
 
InjectorMomentumd_inj_mom = nullptr
 
std::unique_ptr< amrex::Parserux_parser
 
std::unique_ptr< amrex::Parseruy_parser
 
std::unique_ptr< amrex::Parseruz_parser
 
std::unique_ptr< TemperaturePropertiesh_mom_temp
 
std::unique_ptr< VelocityPropertiesh_mom_vel
 

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 ( )
default

◆ PlasmaInjector() [2/2]

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

◆ ~PlasmaInjector()

PlasmaInjector::~PlasmaInjector ( )
default

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()

amrex::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_multiple_particles

bool PlasmaInjector::add_multiple_particles = false

◆ 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()

◆ density_parser

std::unique_ptr<amrex::Parser> PlasmaInjector::density_parser
protected

◆ do_symmetrize

int PlasmaInjector::do_symmetrize = 0

◆ external_file

bool PlasmaInjector::external_file = false

◆ flux_direction

int PlasmaInjector::flux_direction

◆ flux_normal_axis

int PlasmaInjector::flux_normal_axis

◆ flux_tmax

amrex::Real PlasmaInjector::flux_tmax = -1.

◆ flux_tmin

amrex::Real PlasmaInjector::flux_tmin = -1.

◆ 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

◆ h_mom_temp

std::unique_ptr<TemperatureProperties> PlasmaInjector::h_mom_temp
protected

◆ h_mom_vel

std::unique_ptr<VelocityProperties> PlasmaInjector::h_mom_vel
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

◆ multiple_particles_pos_x

amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_pos_x

◆ multiple_particles_pos_y

amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_pos_y

◆ multiple_particles_pos_z

amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_pos_z

◆ multiple_particles_ux

amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_ux

◆ multiple_particles_uy

amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_uy

◆ multiple_particles_uz

amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_uz

◆ multiple_particles_weight

amrex::Vector<amrex::ParticleReal> PlasmaInjector::multiple_particles_weight

◆ 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

◆ num_particles_per_cell_real

amrex::Real PlasmaInjector::num_particles_per_cell_real

◆ physical_species

PhysicalSpecies PlasmaInjector::physical_species = PhysicalSpecies::unspecified
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_u

amrex::Vector<amrex::ParticleReal> PlasmaInjector::single_particle_u

◆ 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

◆ surface_flux

bool PlasmaInjector::surface_flux = false

◆ surface_flux_pos

amrex::Real PlasmaInjector::surface_flux_pos

◆ symmetrization_order

int PlasmaInjector::symmetrization_order = 4

◆ ux_parser

std::unique_ptr<amrex::Parser> PlasmaInjector::ux_parser
protected

◆ uy_parser

std::unique_ptr<amrex::Parser> PlasmaInjector::uy_parser
protected

◆ uz_parser

std::unique_ptr<amrex::Parser> PlasmaInjector::uz_parser
protected

◆ 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: