10 #ifndef WARPX_PhysicalParticleContainer_H_
11 #define WARPX_PhysicalParticleContainer_H_
51 const std::string&
name);
63 virtual void ReadHeader (std::istream& is)
override;
65 virtual void WriteHeader (std::ostream& os)
const override;
103 virtual void Evolve (
int lev,
127 bool skip_deposition=
false )
override;
138 const long np_to_push,
139 int lev,
int gather_lev,
143 virtual void PushP (
int lev, amrex::Real
dt,
197 amrex::ParticleReal& ux, amrex::ParticleReal& uy, amrex::ParticleReal& uz);
200 const amrex::Real x_m,
const amrex::Real y_m,
const amrex::Real z_m,
201 const amrex::Real x_rms,
const amrex::Real y_rms,
const amrex::Real z_rms,
202 const amrex::Real x_cut,
const amrex::Real y_cut,
const amrex::Real z_cut,
203 const amrex::Real q_tot,
long npart,
const int do_symmetrize,
const int symmetrization_order);
213 amrex::ParticleReal
x, amrex::ParticleReal
y, amrex::ParticleReal
z,
214 amrex::ParticleReal ux, amrex::ParticleReal uy, amrex::ParticleReal uz,
215 amrex::ParticleReal weight,
240 const int n_external_attr_real,
241 const int n_external_attr_int,
285 amrex::Elixir& exeli, amrex::Elixir& eyeli, amrex::Elixir& ezeli,
286 amrex::Elixir& bxeli, amrex::Elixir& byeli, amrex::Elixir& bzeli,
303 void resample (
const int timestep)
override final;
329 (std::shared_ptr<BreitWheelerEngine> ptr)
override;
336 (std::shared_ptr<QuantumSynchrotronEngine> ptr)
override;
DtType
Definition: WarpXDtType.H:11
Filter functor for the Breit Wheeler process.
Definition: QEDPairGeneration.H:38
Filter functor for the QED photon emission process.
Definition: QEDPhotonEmission.H:43
Definition: PhysicalParticleContainer.H:46
void AddPlasmaFlux(amrex::Real dt)
Definition: PhysicalParticleContainer.cpp:1417
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)
Definition: Partition.cpp:53
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
Definition: PhysicalParticleContainer.cpp:2445
std::vector< std::string > m_user_int_attribs
Definition: PhysicalParticleContainer.H:387
virtual void DefaultInitializeRuntimeAttributes(amrex::ParticleTile< amrex::Particle< NStructReal, NStructInt >, NArrayReal, NArrayInt, amrex::PinnedArenaAllocator > &pinned_tile, const int n_external_attr_real, const int n_external_attr_int, const amrex::RandomEngine &engine) override final
Default initialize runtime attributes in a tile. This routine does not initialize the first n_externa...
Definition: PhysicalParticleContainer.cpp:675
std::unique_ptr< PlasmaInjector > plasma_injector
Definition: PhysicalParticleContainer.H:346
void CheckAndAddParticle(amrex::ParticleReal x, amrex::ParticleReal y, amrex::ParticleReal z, amrex::ParticleReal ux, amrex::ParticleReal uy, amrex::ParticleReal uz, amrex::ParticleReal 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)
Definition: PhysicalParticleContainer.cpp:788
void AddPlasmaFromFile(amrex::ParticleReal q_tot, amrex::ParticleReal z_shift)
Definition: PhysicalParticleContainer.cpp:563
IonizationFilterFunc getIonizationFunc(const WarpXParIter &pti, int lev, amrex::IntVect ngEB, const amrex::FArrayBox &Ex, const amrex::FArrayBox &Ey, const amrex::FArrayBox &Ez, const amrex::FArrayBox &Bx, const amrex::FArrayBox &By, const amrex::FArrayBox &Bz)
Definition: PhysicalParticleContainer.cpp:2900
std::shared_ptr< BreitWheelerEngine > m_shr_p_bw_engine
Definition: PhysicalParticleContainer.H:384
Resampling m_resampler
Definition: PhysicalParticleContainer.H:355
void SplitParticles(int lev)
Definition: PhysicalParticleContainer.cpp:2259
bool m_do_qed_quantum_sync
Definition: PhysicalParticleContainer.H:375
void ContinuousFluxInjection(const amrex::Real t, const amrex::Real dt) override
Definition: PhysicalParticleContainer.cpp:2597
void ContinuousInjection(const amrex::RealBox &injection_box) override
Definition: PhysicalParticleContainer.cpp:2587
bool has_breit_wheeler() const override
Definition: PhysicalParticleContainer.cpp:2961
void AddPlasma(int lev, amrex::RealBox part_realbox=amrex::RealBox())
Definition: PhysicalParticleContainer.cpp:890
bool m_do_qed_breit_wheeler
Definition: PhysicalParticleContainer.H:378
PairGenerationFilterFunc getPairGenerationFilterFunc()
Definition: PhysicalParticleContainer.cpp:2988
bool do_classical_radiation_reaction
Definition: PhysicalParticleContainer.H:368
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, 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, bool skip_deposition=false) override
Evolve is the central function PhysicalParticleContainer that advances plasma particles for a time dt...
Definition: PhysicalParticleContainer.cpp:1935
virtual ~PhysicalParticleContainer()
Definition: PhysicalParticleContainer.H:59
std::shared_ptr< QuantumSynchrotronEngine > m_shr_p_qs_engine
Definition: PhysicalParticleContainer.H:381
std::vector< std::unique_ptr< amrex::Parser > > m_user_int_attrib_parser
Definition: PhysicalParticleContainer.H:391
virtual void InitData() override
Definition: PhysicalParticleContainer.cpp:389
virtual void ReadHeader(std::istream &is) override
Definition: ParticleIO.cpp:107
virtual void AddParticles(int lev)
Definition: PhysicalParticleContainer.cpp:813
void BackwardCompatibility()
Definition: PhysicalParticleContainer.cpp:373
virtual void PostRestart() final
Definition: PhysicalParticleContainer.H:160
bool m_save_previous_position
Definition: PhysicalParticleContainer.H:371
void MapParticletoBoostedFrame(amrex::ParticleReal &x, amrex::ParticleReal &y, amrex::ParticleReal &z, amrex::ParticleReal &ux, amrex::ParticleReal &uy, amrex::ParticleReal &uz)
Definition: PhysicalParticleContainer.cpp:395
virtual void InitIonizationModule() override
Definition: PhysicalParticleContainer.cpp:2832
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 amrex::IntVect ngEB, 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)
Definition: PhysicalParticleContainer.cpp:2614
void set_quantum_sync_engine_ptr(std::shared_ptr< QuantumSynchrotronEngine > ptr) override
Definition: PhysicalParticleContainer.cpp:2975
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, const int symmetrization_order)
Definition: PhysicalParticleContainer.cpp:443
std::vector< std::string > m_user_real_attribs
Definition: PhysicalParticleContainer.H:389
virtual void WriteHeader(std::ostream &os) const override
Definition: ParticleIO.cpp:114
void set_breit_wheeler_engine_ptr(std::shared_ptr< BreitWheelerEngine > ptr) override
Definition: PhysicalParticleContainer.cpp:2968
bool boost_adjust_transverse_positions
Definition: PhysicalParticleContainer.H:351
bool has_quantum_sync() const override
Definition: PhysicalParticleContainer.cpp:2956
std::vector< std::unique_ptr< amrex::Parser > > m_user_real_attrib_parser
Definition: PhysicalParticleContainer.H:393
PhotonEmissionFilterFunc getPhotonEmissionFilterFunc()
Definition: PhysicalParticleContainer.cpp:2981
std::string species_name
Definition: PhysicalParticleContainer.H:345
bool m_rz_random_theta
Definition: PhysicalParticleContainer.H:353
bool do_backward_propagation
Definition: PhysicalParticleContainer.H:352
PhysicalParticleContainer(amrex::AmrCore *amr_core, int ispecies, const std::string &name)
Definition: PhysicalParticleContainer.cpp:232
void resample(const int timestep) override final
This function determines if resampling should be done for the current species, and if so,...
Definition: PhysicalParticleContainer.cpp:2921
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.
Definition: PhysicalParticleContainer.cpp:2182
This is a general class used for resampling that is instantiated as a member of MultiParticleContaine...
Definition: Resampling.H:42
Definition: WarpXParticleContainer.H:52
Definition: WarpXParticleContainer.H:104
static constexpr int NArrayInt
static constexpr int NArrayReal
def y
Definition: Excitation_Flag_Generator.py:76
def x
Formats datastring to remove "+" at the end of the string #####.
Definition: Excitation_Flag_Generator.py:75
def z
Definition: Excitation_Flag_Generator.py:77
string name
Definition: stencil.py:452
int dt
Definition: stencil.py:440
int z_shift
Definition: yt3d_mpi.py:45
Definition: Ionization.H:31
Functor that scales E and B by a factor before pushing the particles. This is used for rigid injectio...
Definition: ScaleFields.H:14