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

#include <PhysicalParticleContainer.H>

Inheritance diagram for PhysicalParticleContainer:
WarpXParticleContainer PhotonParticleContainer RigidInjectedParticleContainer

Public Types

enum  PhysicalParticleType { electron, positron, photon, other }
 
- Public Types inherited from WarpXParticleContainer
using DiagnosticParticleData = amrex::StructOfArrays< DiagIdx::nattribs, 0 >
 
using DiagnosticParticles = amrex::Vector< std::map< std::pair< int, int >, DiagnosticParticleData > >
 
using PairIndex = std::pair< int, int >
 
using TmpParticleTile = std::array< amrex::Gpu::DeviceVector< amrex::ParticleReal >, TmpIdx::nattribs >
 
using TmpParticles = amrex::Vector< std::map< PairIndex, TmpParticleTile > >
 

Public Member Functions

 PhysicalParticleContainer (amrex::AmrCore *amr_core, int ispecies, const std::string &name)
 
 PhysicalParticleContainer (amrex::AmrCore *amr_core)
 
void BackwardCompatibility ()
 
virtual ~PhysicalParticleContainer ()
 
virtual void InitData () override
 
void InitIonizationModule ()
 
virtual void Evolve (int lev, const amrex::MultiFab &Ex, const amrex::MultiFab &Ey, const amrex::MultiFab &Ez, const amrex::MultiFab &Bx, const amrex::MultiFab &By, const amrex::MultiFab &Bz, const amrex::MultiFab &Ex_avg, const amrex::MultiFab &Ey_avg, const amrex::MultiFab &Ez_avg, const amrex::MultiFab &Bx_avg, const amrex::MultiFab &By_avg, const amrex::MultiFab &Bz_avg, amrex::MultiFab &jx, amrex::MultiFab &jy, amrex::MultiFab &jz, amrex::MultiFab *cjx, amrex::MultiFab *cjy, amrex::MultiFab *cjz, amrex::MultiFab *rho, amrex::MultiFab *crho, const amrex::MultiFab *cEx, const amrex::MultiFab *cEy, const amrex::MultiFab *cEz, const amrex::MultiFab *cBx, const amrex::MultiFab *cBy, const amrex::MultiFab *cBz, amrex::Real t, amrex::Real dt, DtType a_dt_type=DtType::Full) override
 Evolve is the central function PhysicalParticleContainer that advances plasma particles for a time dt (typically one timestep). More...
 
virtual void PushPX (WarpXParIter &pti, amrex::FArrayBox const *exfab, amrex::FArrayBox const *eyfab, amrex::FArrayBox const *ezfab, amrex::FArrayBox const *bxfab, amrex::FArrayBox const *byfab, amrex::FArrayBox const *bzfab, const int ngE, const int, const long offset, const long np_to_push, int lev, int gather_lev, amrex::Real dt, ScaleFields scaleFields, DtType a_dt_type=DtType::Full)
 
virtual void PushP (int lev, amrex::Real dt, const amrex::MultiFab &Ex, const amrex::MultiFab &Ey, const amrex::MultiFab &Ez, const amrex::MultiFab &Bx, const amrex::MultiFab &By, const amrex::MultiFab &Bz) override
 
void PartitionParticlesInBuffers (long &nfine_current, long &nfine_gather, long const np, WarpXParIter &pti, int const lev, amrex::iMultiFab const *current_masks, amrex::iMultiFab const *gather_masks, RealVector &uxp, RealVector &uyp, RealVector &uzp, RealVector &wp)
 
virtual void PostRestart () final
 
void SplitParticles (int lev)
 
IonizationFilterFunc getIonizationFunc (const WarpXParIter &pti, int lev, int ngE, const amrex::FArrayBox &Ex, const amrex::FArrayBox &Ey, const amrex::FArrayBox &Ez, const amrex::FArrayBox &Bx, const amrex::FArrayBox &By, const amrex::FArrayBox &Bz)
 
virtual void AddParticles (int lev)
 
void AddPlasma (int lev, amrex::RealBox part_realbox=amrex::RealBox())
 
void MapParticletoBoostedFrame (amrex::Real &x, amrex::Real &y, amrex::Real &z, std::array< amrex::Real, 3 > &u)
 
void AddGaussianBeam (const amrex::Real x_m, const amrex::Real y_m, const amrex::Real z_m, const amrex::Real x_rms, const amrex::Real y_rms, const amrex::Real z_rms, const amrex::Real x_cut, const amrex::Real y_cut, const amrex::Real z_cut, const amrex::Real q_tot, long npart, const int do_symmetrize)
 
void AddPlasmaFromFile (amrex::ParticleReal q_tot, amrex::ParticleReal z_shift)
 
void CheckAndAddParticle (amrex::Real x, amrex::Real y, amrex::Real z, std::array< amrex::Real, 3 > u, amrex::Real weight, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_x, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_y, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_z, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_ux, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_uy, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_uz, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_w)
 
virtual void GetParticleSlice (const int direction, const amrex::Real z_old, const amrex::Real z_new, const amrex::Real t_boost, const amrex::Real t_lab, const amrex::Real dt, DiagnosticParticles &diagnostic_particles) final
 
virtual void ConvertUnits (ConvertDirection convert_dir) override
 
void applyNCIFilter (int lev, const amrex::Box &box, amrex::Elixir &exeli, amrex::Elixir &eyeli, amrex::Elixir &ezeli, amrex::Elixir &bxeli, amrex::Elixir &byeli, amrex::Elixir &bzeli, amrex::FArrayBox &filtered_Ex, amrex::FArrayBox &filtered_Ey, amrex::FArrayBox &filtered_Ez, amrex::FArrayBox &filtered_Bx, amrex::FArrayBox &filtered_By, amrex::FArrayBox &filtered_Bz, const amrex::FArrayBox &Ex, const amrex::FArrayBox &Ey, const amrex::FArrayBox &Ez, const amrex::FArrayBox &Bx, const amrex::FArrayBox &By, const amrex::FArrayBox &Bz, amrex::FArrayBox const *&exfab, amrex::FArrayBox const *&eyfab, amrex::FArrayBox const *&ezfab, amrex::FArrayBox const *&bxfab, amrex::FArrayBox const *&byfab, amrex::FArrayBox const *&bzfab)
 Apply NCI Godfrey filter to all components of E and B before gather. More...
 
void resample (const int timestep) override final
 This function determines if resampling should be done for the current species, and if so, performs the resampling. More...
 
bool has_quantum_sync () const override
 
bool has_breit_wheeler () const override
 
void set_breit_wheeler_engine_ptr (std::shared_ptr< BreitWheelerEngine > ptr) override
 
void set_quantum_sync_engine_ptr (std::shared_ptr< QuantumSynchrotronEngine > ptr) override
 
PhotonEmissionFilterFunc getPhotonEmissionFilterFunc ()
 
PairGenerationFilterFunc getPairGenerationFilterFunc ()
 
- Public Member Functions inherited from WarpXParticleContainer
 WarpXParticleContainer (amrex::AmrCore *amr_core, int ispecies)
 
virtual ~WarpXParticleContainer ()
 
void AllocData ()
 
void PushX (amrex::Real dt)
 
void PushX (int lev, amrex::Real dt)
 
void DepositCharge (amrex::Vector< std::unique_ptr< amrex::MultiFab > > &rho, bool local=false, bool reset=false, bool do_rz_volume_scaling=false)
 
std::unique_ptr< amrex::MultiFab > GetChargeDensity (int lev, bool local=false)
 
virtual void DepositCharge (WarpXParIter &pti, RealVector &wp, const int *const ion_lev, amrex::MultiFab *rho, int icomp, const long offset, const long np_to_depose, int thread_num, int lev, int depos_lev)
 
virtual void DepositCurrent (WarpXParIter &pti, RealVector &wp, RealVector &uxp, RealVector &uyp, RealVector &uzp, const int *const ion_lev, amrex::MultiFab *jx, amrex::MultiFab *jy, amrex::MultiFab *jz, const long offset, const long np_to_depose, int thread_num, int lev, int depos_lev, amrex::Real dt)
 
virtual void UpdateContinuousInjectionPosition (amrex::Real)
 
amrex::Real sumParticleCharge (bool local=false)
 
std::array< amrex::Real, 3 > meanParticleVelocity (bool local=false)
 
amrex::Real maxParticleVelocity (bool local=false)
 
void AddNParticles (int lev, int n, const amrex::ParticleReal *x, const amrex::ParticleReal *y, const amrex::ParticleReal *z, const amrex::ParticleReal *vx, const amrex::ParticleReal *vy, const amrex::ParticleReal *vz, int nattr, const amrex::ParticleReal *attr, int uniqueparticles, amrex::Long id=-1)
 
virtual void ReadHeader (std::istream &is)
 
virtual void WriteHeader (std::ostream &os) const
 
void ApplyBoundaryConditions (ParticleBC boundary_conditions)
 Apply particle BC. More...
 
void AddRealComp (const std::string &name, bool comm=true)
 
void AddIntComp (const std::string &name, bool comm=true)
 
int doBackTransformedDiagnostics () const
 
std::map< std::string, int > getParticleComps () const noexcept
 
std::map< std::string, int > getParticleiComps () const noexcept
 
std::map< std::string, int > getParticleRuntimeComps () const noexcept
 
std::map< std::string, int > getParticleRuntimeiComps () const noexcept
 
amrex::ParticleReal getCharge () const
 
amrex::ParticleReal getMass () const
 
int DoFieldIonization () const
 
int DoQED () const
 
template<PhysicalSpecies PhysSpec>
bool AmIA () const noexcept
 
amrex::Array< amrex::Real, 3 > get_v_galilean ()
 

Protected Member Functions

void ContinuousInjection (const amrex::RealBox &injection_box) override
 
- Protected Member Functions inherited from WarpXParticleContainer
void defineAllParticleTiles () noexcept
 

Protected Attributes

std::string species_name
 
std::unique_ptr< PlasmaInjectorplasma_injector
 
bool boost_adjust_transverse_positions = false
 
bool do_backward_propagation = false
 
Resampling m_resampler
 
bool do_classical_radiation_reaction = false
 
bool m_do_qed_quantum_sync = false
 
bool m_do_qed_breit_wheeler = false
 
std::shared_ptr< QuantumSynchrotronEnginem_shr_p_qs_engine
 
std::shared_ptr< BreitWheelerEnginem_shr_p_bw_engine
 
- Protected Attributes inherited from WarpXParticleContainer
amrex::Array< amrex::Real, 3 > m_v_galilean = {{0}}
 
std::map< std::string, int > particle_comps
 
std::map< std::string, int > particle_icomps
 
std::map< std::string, int > particle_runtime_comps
 
std::map< std::string, int > particle_runtime_icomps
 
int species_id
 
amrex::Real charge
 
amrex::Real mass
 
PhysicalSpecies physical_species
 
bool m_deposit_on_main_grid = false
 instead of depositing (current, charge) on the finest patch level, deposit to the coarsest grid More...
 
bool m_gather_from_main_grid = false
 instead of gathering fields from the finest patch level, gather from the coarsest More...
 
int do_not_push = 0
 
int do_not_deposit = 0
 
int do_not_gather = 0
 
int do_continuous_injection = 0
 
int do_field_ionization = 0
 
int ionization_product
 
std::string ionization_product_name
 
int ion_atomic_number
 
int ionization_initial_level = 0
 
amrex::Gpu::DeviceVector< amrex::Real > ionization_energies
 
amrex::Gpu::DeviceVector< amrex::Real > adk_power
 
amrex::Gpu::DeviceVector< amrex::Real > adk_prefactor
 
amrex::Gpu::DeviceVector< amrex::Real > adk_exp_prefactor
 
std::string physical_element
 
int do_resampling = 0
 
int do_back_transformed_diagnostics = 1
 
bool m_do_qed = false
 
int m_qed_breit_wheeler_ele_product
 
std::string m_qed_breit_wheeler_ele_product_name
 
int m_qed_breit_wheeler_pos_product
 
std::string m_qed_breit_wheeler_pos_product_name
 
int m_qed_quantum_sync_phot_product
 
std::string m_qed_quantum_sync_phot_product_name
 
amrex::Vector< amrex::FArrayBox > local_rho
 
amrex::Vector< amrex::FArrayBox > local_jx
 
amrex::Vector< amrex::FArrayBox > local_jy
 
amrex::Vector< amrex::FArrayBox > local_jz
 
TmpParticles tmp_particle_data
 

Additional Inherited Members

- Static Public Member Functions inherited from WarpXParticleContainer
static void ReadParameters ()
 
static void BackwardCompatibility ()
 
- Public Attributes inherited from WarpXParticleContainer
friend MultiParticleContainer
 
bool do_splitting = false
 
bool initialize_self_fields = false
 
amrex::Real self_fields_required_precision = 1.e-11
 
int split_type = 0
 
bool m_do_random_filter = false
 
bool m_do_uniform_filter = false
 
bool m_do_parser_filter = false
 
amrex::Real m_random_fraction = 1.0
 
int m_uniform_stride = 1
 
std::unique_ptr< ParserWrapper< 7 > > m_particle_filter_parser
 

Detailed Description

PhysicalParticleContainer is the ParticleContainer class containing plasma particles (if a simulation has 2 plasma species, say "electrons" and "ions"), they will be two instances of PhysicalParticleContainer.

PhysicalParticleContainer inherits from WarpXParticleContainer.

Member Enumeration Documentation

◆ PhysicalParticleType

Enumerator
electron 
positron 
photon 
other 

Constructor & Destructor Documentation

◆ PhysicalParticleContainer() [1/2]

PhysicalParticleContainer::PhysicalParticleContainer ( amrex::AmrCore *  amr_core,
int  ispecies,
const std::string &  name 
)

◆ PhysicalParticleContainer() [2/2]

PhysicalParticleContainer::PhysicalParticleContainer ( amrex::AmrCore *  amr_core)

◆ ~PhysicalParticleContainer()

virtual PhysicalParticleContainer::~PhysicalParticleContainer ( )
inlinevirtual

Member Function Documentation

◆ AddGaussianBeam()

void PhysicalParticleContainer::AddGaussianBeam ( const amrex::Real  x_m,
const amrex::Real  y_m,
const amrex::Real  z_m,
const amrex::Real  x_rms,
const amrex::Real  y_rms,
const amrex::Real  z_rms,
const amrex::Real  x_cut,
const amrex::Real  y_cut,
const amrex::Real  z_cut,
const amrex::Real  q_tot,
long  npart,
const int  do_symmetrize 
)

◆ AddParticles()

void PhysicalParticleContainer::AddParticles ( int  lev)
virtual

◆ AddPlasma()

void PhysicalParticleContainer::AddPlasma ( int  lev,
amrex::RealBox  part_realbox = amrex::RealBox() 
)

Create new macroparticles for this species, with a fixed number of particles per cell (in the cells of part_realbox). The new particles are only created inside the intersection of part_realbox with the local grid for the current proc.

Parameters
[in]levthe index of the refinement level
[in]part_realboxthe box in which new particles should be created (this box should correspond to an integer number of cells in each direction, but its boundaries need not be aligned with the actual cells of the simulation)

◆ AddPlasmaFromFile()

void PhysicalParticleContainer::AddPlasmaFromFile ( amrex::ParticleReal  q_tot,
amrex::ParticleReal  z_shift 
)

Load a particle beam from an external file

Parameters
[in]q_tottotal charge of the particle species to be initialized
[in]z_shiftoptional shift to the z position of particles (useful for boosted frame runs)

◆ applyNCIFilter()

void PhysicalParticleContainer::applyNCIFilter ( int  lev,
const amrex::Box &  box,
amrex::Elixir &  exeli,
amrex::Elixir &  eyeli,
amrex::Elixir &  ezeli,
amrex::Elixir &  bxeli,
amrex::Elixir &  byeli,
amrex::Elixir &  bzeli,
amrex::FArrayBox &  filtered_Ex,
amrex::FArrayBox &  filtered_Ey,
amrex::FArrayBox &  filtered_Ez,
amrex::FArrayBox &  filtered_Bx,
amrex::FArrayBox &  filtered_By,
amrex::FArrayBox &  filtered_Bz,
const amrex::FArrayBox &  Ex,
const amrex::FArrayBox &  Ey,
const amrex::FArrayBox &  Ez,
const amrex::FArrayBox &  Bx,
const amrex::FArrayBox &  By,
const amrex::FArrayBox &  Bz,
amrex::FArrayBox const *&  exfab,
amrex::FArrayBox const *&  eyfab,
amrex::FArrayBox const *&  ezfab,
amrex::FArrayBox const *&  bxfab,
amrex::FArrayBox const *&  byfab,
amrex::FArrayBox const *&  bzfab 
)

Apply NCI Godfrey filter to all components of E and B before gather.

Parameters
levMR level
boxbox onto which the filter is applied
exelisafeguard Elixir object (to avoid de-allocating too early –between ParIter iterations– on GPU) for field Ex
eyelisafeguard Elixir object (to avoid de-allocating too early –between ParIter iterations– on GPU) for field Ey
ezelisafeguard Elixir object (to avoid de-allocating too early –between ParIter iterations– on GPU) for field Ez
bxelisafeguard Elixir object (to avoid de-allocating too early –between ParIter iterations– on GPU) for field Bx
byelisafeguard Elixir object (to avoid de-allocating too early –between ParIter iterations– on GPU) for field By
bzelisafeguard Elixir object (to avoid de-allocating too early –between ParIter iterations– on GPU) for field Bz
filtered_ExArray containing filtered value
filtered_EyArray containing filtered value
filtered_EzArray containing filtered value
filtered_BxArray containing filtered value
filtered_ByArray containing filtered value
filtered_BzArray containing filtered value
ExField array before filtering (not modified)
EyField array before filtering (not modified)
EzField array before filtering (not modified)
BxField array before filtering (not modified)
ByField array before filtering (not modified)
BzField array before filtering (not modified)
exfabpointer to the Ex field (modified)
eyfabpointer to the Ey field (modified)
ezfabpointer to the Ez field (modified)
bxfabpointer to the Bx field (modified)
byfabpointer to the By field (modified)
bzfabpointer to the Bz field (modified)

The NCI Godfrey filter is applied on Ex, the result is stored in filtered_Ex and the pointer exfab is modified (before this function is called, it points to Ex and after this function is called, it points to Ex_filtered)

◆ BackwardCompatibility()

void PhysicalParticleContainer::BackwardCompatibility ( )

This function queries deprecated input parameters and abort the run if one of them is specified.

◆ CheckAndAddParticle()

void PhysicalParticleContainer::CheckAndAddParticle ( amrex::Real  x,
amrex::Real  y,
amrex::Real  z,
std::array< amrex::Real, 3 >  u,
amrex::Real  weight,
amrex::Gpu::HostVector< amrex::ParticleReal > &  particle_x,
amrex::Gpu::HostVector< amrex::ParticleReal > &  particle_y,
amrex::Gpu::HostVector< amrex::ParticleReal > &  particle_z,
amrex::Gpu::HostVector< amrex::ParticleReal > &  particle_ux,
amrex::Gpu::HostVector< amrex::ParticleReal > &  particle_uy,
amrex::Gpu::HostVector< amrex::ParticleReal > &  particle_uz,
amrex::Gpu::HostVector< amrex::ParticleReal > &  particle_w 
)

◆ ContinuousInjection()

void PhysicalParticleContainer::ContinuousInjection ( const amrex::RealBox &  injection_box)
overrideprotectedvirtual

Reimplemented from WarpXParticleContainer.

◆ ConvertUnits()

void PhysicalParticleContainer::ConvertUnits ( ConvertDirection  convert_dir)
overridevirtual

Reimplemented from WarpXParticleContainer.

◆ Evolve()

void PhysicalParticleContainer::Evolve ( int  lev,
const amrex::MultiFab &  Ex,
const amrex::MultiFab &  Ey,
const amrex::MultiFab &  Ez,
const amrex::MultiFab &  Bx,
const amrex::MultiFab &  By,
const amrex::MultiFab &  Bz,
const amrex::MultiFab &  Ex_avg,
const amrex::MultiFab &  Ey_avg,
const amrex::MultiFab &  Ez_avg,
const amrex::MultiFab &  Bx_avg,
const amrex::MultiFab &  By_avg,
const amrex::MultiFab &  Bz_avg,
amrex::MultiFab &  jx,
amrex::MultiFab &  jy,
amrex::MultiFab &  jz,
amrex::MultiFab *  cjx,
amrex::MultiFab *  cjy,
amrex::MultiFab *  cjz,
amrex::MultiFab *  rho,
amrex::MultiFab *  crho,
const amrex::MultiFab *  cEx,
const amrex::MultiFab *  cEy,
const amrex::MultiFab *  cEz,
const amrex::MultiFab *  cBx,
const amrex::MultiFab *  cBy,
const amrex::MultiFab *  cBz,
amrex::Real  t,
amrex::Real  dt,
DtType  a_dt_type = DtType::Full 
)
overridevirtual

Evolve is the central function PhysicalParticleContainer that advances plasma particles for a time dt (typically one timestep).

Parameters
levlevel on which particles are living
ExMultiFab from which field Ex is gathered
EyMultiFab from which field Ey is gathered
EzMultiFab from which field Ez is gathered
BxMultiFab from which field Bx is gathered
ByMultiFab from which field By is gathered
BzMultiFab from which field Bz is gathered
jxMultiFab to which the particles' current jx is deposited
jyMultiFab to which the particles' current jy is deposited
jzMultiFab to which the particles' current jz is deposited
cjxSame as jx (coarser, from lev-1), when using deposition buffers
cjySame as jy (coarser, from lev-1), when using deposition buffers
cjzSame as jz (coarser, from lev-1), when using deposition buffers
rhoMultiFab to which the particles' charge is deposited
crhoSame as rho (coarser, from lev-1), when using deposition buffers
cExSame as Ex (coarser, from lev-1), when using gather buffers
cEySame as Ey (coarser, from lev-1), when using gather buffers
cEzSame as Ez (coarser, from lev-1), when using gather buffers
cBxSame as Bx (coarser, from lev-1), when using gather buffers
cBySame as By (coarser, from lev-1), when using gather buffers
cBzSame as Bz (coarser, from lev-1), when using gather buffers
tcurrent physical time
dttime step by which particles are advanced
a_dt_typetype of time step (used for sub-cycling)

Evolve iterates over particle iterator (each box) and performs filtering, field gather, particle push and current deposition for all particles in the box.

Implements WarpXParticleContainer.

Reimplemented in RigidInjectedParticleContainer, and PhotonParticleContainer.

◆ getIonizationFunc()

IonizationFilterFunc PhysicalParticleContainer::getIonizationFunc ( const WarpXParIter pti,
int  lev,
int  ngE,
const amrex::FArrayBox &  Ex,
const amrex::FArrayBox &  Ey,
const amrex::FArrayBox &  Ez,
const amrex::FArrayBox &  Bx,
const amrex::FArrayBox &  By,
const amrex::FArrayBox &  Bz 
)

◆ getPairGenerationFilterFunc()

PairGenerationFilterFunc PhysicalParticleContainer::getPairGenerationFilterFunc ( )

◆ GetParticleSlice()

void PhysicalParticleContainer::GetParticleSlice ( const int  direction,
const amrex::Real  z_old,
const amrex::Real  z_new,
const amrex::Real  t_boost,
const amrex::Real  t_lab,
const amrex::Real  dt,
DiagnosticParticles diagnostic_particles 
)
finalvirtual

Reimplemented from WarpXParticleContainer.

◆ getPhotonEmissionFilterFunc()

PhotonEmissionFilterFunc PhysicalParticleContainer::getPhotonEmissionFilterFunc ( )

◆ has_breit_wheeler()

bool PhysicalParticleContainer::has_breit_wheeler ( ) const
overridevirtual

Tells if this PhysicalParticleContainer has Breit Wheeler process enabled

Returns
true if process is enabled

Reimplemented from WarpXParticleContainer.

◆ has_quantum_sync()

bool PhysicalParticleContainer::has_quantum_sync ( ) const
overridevirtual

Tells if this PhysicalParticleContainer has Quantum Synchrotron process enabled

Returns
true if process is enabled

Reimplemented from WarpXParticleContainer.

◆ InitData()

void PhysicalParticleContainer::InitData ( )
overridevirtual

◆ InitIonizationModule()

void PhysicalParticleContainer::InitIonizationModule ( )

◆ MapParticletoBoostedFrame()

void PhysicalParticleContainer::MapParticletoBoostedFrame ( amrex::Real &  x,
amrex::Real &  y,
amrex::Real &  z,
std::array< amrex::Real, 3 > &  u 
)

◆ PartitionParticlesInBuffers()

void PhysicalParticleContainer::PartitionParticlesInBuffers ( long &  nfine_current,
long &  nfine_gather,
long const  np,
WarpXParIter pti,
int const  lev,
amrex::iMultiFab const *  current_masks,
amrex::iMultiFab const *  gather_masks,
RealVector &  uxp,
RealVector &  uyp,
RealVector &  uzp,
RealVector &  wp 
)

◆ PostRestart()

virtual void PhysicalParticleContainer::PostRestart ( )
inlinefinalvirtual

◆ PushP()

void PhysicalParticleContainer::PushP ( int  lev,
amrex::Real  dt,
const amrex::MultiFab &  Ex,
const amrex::MultiFab &  Ey,
const amrex::MultiFab &  Ez,
const amrex::MultiFab &  Bx,
const amrex::MultiFab &  By,
const amrex::MultiFab &  Bz 
)
overridevirtual

This pushes the particle momenta by dt.

Implements WarpXParticleContainer.

Reimplemented in RigidInjectedParticleContainer, and PhotonParticleContainer.

◆ PushPX()

void PhysicalParticleContainer::PushPX ( WarpXParIter pti,
amrex::FArrayBox const *  exfab,
amrex::FArrayBox const *  eyfab,
amrex::FArrayBox const *  ezfab,
amrex::FArrayBox const *  bxfab,
amrex::FArrayBox const *  byfab,
amrex::FArrayBox const *  bzfab,
const int  ngE,
const int  ,
const long  offset,
const long  np_to_push,
int  lev,
int  gather_lev,
amrex::Real  dt,
ScaleFields  scaleFields,
DtType  a_dt_type = DtType::Full 
)
virtual

◆ resample()

void PhysicalParticleContainer::resample ( const int  timestep)
finaloverridevirtual

This function determines if resampling should be done for the current species, and if so, performs the resampling.

Parameters
[in]resamplerthe Resampling object used for resampling.
[in]timestepthe current timestep.

Reimplemented from WarpXParticleContainer.

◆ set_breit_wheeler_engine_ptr()

void PhysicalParticleContainer::set_breit_wheeler_engine_ptr ( std::shared_ptr< BreitWheelerEngine ptr)
overridevirtual

Acquires a shared smart pointer to a BreitWheelerEngine

Parameters
[in]ptrthe pointer

Reimplemented from WarpXParticleContainer.

◆ set_quantum_sync_engine_ptr()

void PhysicalParticleContainer::set_quantum_sync_engine_ptr ( std::shared_ptr< QuantumSynchrotronEngine ptr)
overridevirtual

Acquires a shared smart pointer to a QuantumSynchrotronEngine

Parameters
[in]ptrthe pointer

Reimplemented from WarpXParticleContainer.

◆ SplitParticles()

void PhysicalParticleContainer::SplitParticles ( int  lev)

Member Data Documentation

◆ boost_adjust_transverse_positions

bool PhysicalParticleContainer::boost_adjust_transverse_positions = false
protected

◆ do_backward_propagation

bool PhysicalParticleContainer::do_backward_propagation = false
protected

◆ do_classical_radiation_reaction

bool PhysicalParticleContainer::do_classical_radiation_reaction = false
protected

◆ m_do_qed_breit_wheeler

bool PhysicalParticleContainer::m_do_qed_breit_wheeler = false
protected

◆ m_do_qed_quantum_sync

bool PhysicalParticleContainer::m_do_qed_quantum_sync = false
protected

◆ m_resampler

Resampling PhysicalParticleContainer::m_resampler
protected

◆ m_shr_p_bw_engine

std::shared_ptr<BreitWheelerEngine> PhysicalParticleContainer::m_shr_p_bw_engine
protected

◆ m_shr_p_qs_engine

std::shared_ptr<QuantumSynchrotronEngine> PhysicalParticleContainer::m_shr_p_qs_engine
protected

◆ plasma_injector

std::unique_ptr<PlasmaInjector> PhysicalParticleContainer::plasma_injector
protected

◆ species_name

std::string PhysicalParticleContainer::species_name
protected

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