10 #ifndef WARPX_WarpXParticleContainer_H_
11 #define WARPX_WarpXParticleContainer_H_
61 [[nodiscard]]
const std::array<RealVector, PIdx::nattribs>&
GetAttribs ()
const
66 [[nodiscard]] std::array<RealVector, PIdx::nattribs>&
GetAttribs ()
170 int n_external_attr_real,
171 int n_external_attr_int) = 0;
179 void PushX (
int lev, amrex::Real
dt);
204 amrex::Real
dt, amrex::Real relative_time);
217 bool local =
false,
bool reset =
false,
218 bool apply_boundary_and_scale_volume =
false,
219 bool interpolate_across_levels =
true,
221 void DepositCharge (std::unique_ptr<amrex::MultiFab>& rho,
int lev,
222 bool local =
false,
bool reset =
false,
223 bool apply_boundary_and_scale_volume =
false,
226 std::unique_ptr<amrex::MultiFab>
GetChargeDensity(
int lev,
bool local =
false);
254 amrex::Real relative_time,
323 int uniqueparticles, amrex::Long
id=-1);
377 int DoQED()
const {
return false; }
385 template<PhysicalSpecies PhysSpec>
409 virtual std::vector<std::
string>
getUserIntAttribs ()
const {
return std::vector<std::string>{}; }
PhysicalSpecies
Definition: SpeciesPhysicalProperties.H:16
DtType
Definition: WarpXDtType.H:11
PushType
Definition: WarpXPushType.H:12
Definition: BreitWheelerEngineWrapper.H:294
Definition: NamedComponentParticleContainer.H:49
Definition: PlasmaInjector.H:42
Definition: QuantumSyncEngineWrapper.H:273
Definition: WarpXParticleContainer.H:53
WarpXParIter(ContainerType &pc, int level)
Definition: WarpXParticleContainer.cpp:74
std::array< RealVector, PIdx::nattribs > & GetAttribs()
Definition: WarpXParticleContainer.H:66
const RealVector & GetAttribs(int comp) const
Definition: WarpXParticleContainer.H:71
IntVector & GetiAttribs(int comp)
Definition: WarpXParticleContainer.H:81
RealVector & GetAttribs(int comp)
Definition: WarpXParticleContainer.H:76
const std::array< RealVector, PIdx::nattribs > & GetAttribs() const
Definition: WarpXParticleContainer.H:61
Definition: WarpXParticleContainer.H:110
amrex::Real self_fields_required_precision
Definition: WarpXParticleContainer.H:340
int do_continuous_injection
Definition: WarpXParticleContainer.H:445
virtual std::vector< std::string > getUserIntAttribs() const
Definition: WarpXParticleContainer.H:409
~WarpXParticleContainer() override=default
bool AmIA() const noexcept
Definition: WarpXParticleContainer.H:386
amrex::Vector< amrex::ParticleReal > m_B_external_particle
Definition: WarpXParticleContainer.H:346
bool m_gather_from_main_grid
instead of gathering fields from the finest patch level, gather from the coarsest
Definition: WarpXParticleContainer.H:436
void AllocData()
Definition: WarpXParticleContainer.cpp:149
virtual PlasmaInjector * GetPlasmaInjector(const int)
Definition: WarpXParticleContainer.H:140
void defineAllParticleTiles() noexcept
Definition: WarpXParticleContainer.cpp:1394
virtual void PostRestart()=0
void particlePostLocate(ParticleType &p, const amrex::ParticleLocData &pld, int lev) override
Definition: WarpXParticleContainer.cpp:1411
virtual void ReadHeader(std::istream &is)=0
int self_fields_max_iters
Definition: WarpXParticleContainer.H:342
amrex::Real m_current_injection_position
Current injection position.
Definition: WarpXParticleContainer.H:350
int species_id
Definition: WarpXParticleContainer.H:423
std::string m_qed_breit_wheeler_ele_product_name
Definition: WarpXParticleContainer.H:472
virtual void WriteHeader(std::ostream &os) const =0
amrex::Gpu::DeviceVector< amrex::Real > adk_exp_prefactor
Definition: WarpXParticleContainer.H:455
amrex::Gpu::DeviceVector< amrex::Real > adk_power
Definition: WarpXParticleContainer.H:453
PhysicalSpecies physical_species
Definition: WarpXParticleContainer.H:427
virtual void set_quantum_sync_engine_ptr(std::shared_ptr< QuantumSynchrotronEngine >)
Definition: WarpXParticleContainer.H:469
virtual void ContinuousFluxInjection(amrex::Real, amrex::Real)
Definition: WarpXParticleContainer.H:275
std::string getSpeciesTypeName() const
This function returns a string containing the name of the species type.
Definition: WarpXParticleContainer.H:391
int m_qed_quantum_sync_phot_product
Definition: WarpXParticleContainer.H:475
amrex::ParticleReal maxParticleVelocity(bool local=false)
Definition: WarpXParticleContainer.cpp:1300
virtual void InitIonizationModule()
Definition: WarpXParticleContainer.H:134
virtual void InitData()=0
amrex::Gpu::DeviceVector< amrex::Real > adk_prefactor
Definition: WarpXParticleContainer.H:454
void SetDoBackTransformedParticles(const bool do_back_transformed_particles)
Definition: WarpXParticleContainer.H:359
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, PushType push_type=PushType::Explicit)=0
amrex::ParticleReal sumParticleCharge(bool local=false)
Definition: WarpXParticleContainer.cpp:1185
int ionization_initial_level
Definition: WarpXParticleContainer.H:451
amrex::Real self_fields_absolute_tolerance
Definition: WarpXParticleContainer.H:341
amrex::Vector< amrex::FArrayBox > local_jx
Definition: WarpXParticleContainer.H:480
virtual void UpdateAntennaPosition(const amrex::Real)
Update antenna position for continuous injection of lasers in a boosted frame. Empty function for con...
Definition: WarpXParticleContainer.H:270
amrex::ParticleReal mass
Definition: WarpXParticleContainer.H:426
bool doContinuousInjection() const
Definition: WarpXParticleContainer.H:272
amrex::Vector< amrex::FArrayBox > local_jy
Definition: WarpXParticleContainer.H:481
std::unique_ptr< amrex::MultiFab > GetChargeDensity(int lev, bool local=false)
Definition: WarpXParticleContainer.cpp:1160
static void ReadParameters()
Definition: WarpXParticleContainer.cpp:137
int getIonizationInitialLevel() const noexcept
Definition: WarpXParticleContainer.H:492
std::array< amrex::Gpu::DeviceVector< amrex::ParticleReal >, TmpIdx::nattribs > TmpParticleTile
Definition: WarpXParticleContainer.H:487
virtual void DefaultInitializeRuntimeAttributes(amrex::ParticleTile< amrex::Particle< NStructReal, NStructInt >, NArrayReal, NArrayInt, amrex::PinnedArenaAllocator > &pinned_tile, int n_external_attr_real, int n_external_attr_int)=0
Virtual method to initialize runtime attributes. Must be overriden by each derived class.
int ion_atomic_number
Definition: WarpXParticleContainer.H:450
bool m_do_back_transformed_particles
Definition: WarpXParticleContainer.H:461
amrex::Vector< amrex::FArrayBox > local_jz
Definition: WarpXParticleContainer.H:482
amrex::Gpu::DeviceVector< amrex::Real > ionization_energies
Definition: WarpXParticleContainer.H:452
amrex::ParticleReal getCharge() const
Definition: WarpXParticleContainer.H:364
TmpParticles tmp_particle_data
Definition: WarpXParticleContainer.H:495
virtual amrex::Vector< amrex::Parser * > getUserRealAttribParser() const
Definition: WarpXParticleContainer.H:415
void ApplyBoundaryConditions()
Apply particle BC.
Definition: WarpXParticleContainer.cpp:1433
virtual void set_breit_wheeler_engine_ptr(std::shared_ptr< BreitWheelerEngine >)
Definition: WarpXParticleContainer.H:467
virtual bool has_breit_wheeler() const
Definition: WarpXParticleContainer.H:373
virtual amrex::Vector< amrex::Parser * > getUserIntAttribParser() const
Definition: WarpXParticleContainer.H:413
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)=0
std::string m_qed_breit_wheeler_pos_product_name
Definition: WarpXParticleContainer.H:474
std::string m_qed_quantum_sync_phot_product_name
Definition: WarpXParticleContainer.H:476
virtual void ContinuousInjection(const amrex::RealBox &)
Definition: WarpXParticleContainer.H:264
WarpXParticleContainer & operator=(const WarpXParticleContainer &)=delete
ParticleBoundaries m_boundary_conditions
Definition: WarpXParticleContainer.H:430
int m_qed_breit_wheeler_pos_product
Definition: WarpXParticleContainer.H:473
int ionization_product
Definition: WarpXParticleContainer.H:448
virtual BreitWheelerEngine * get_breit_wheeler_engine_ptr() const
Definition: WarpXParticleContainer.H:418
int m_qed_breit_wheeler_ele_product
Definition: WarpXParticleContainer.H:471
bool do_splitting
Definition: WarpXParticleContainer.H:337
std::array< amrex::ParticleReal, 3 > meanParticleVelocity(bool local=false)
Definition: WarpXParticleContainer.cpp:1214
WarpXParticleContainer & operator=(WarpXParticleContainer &&)=default
void DepositCurrent(amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > &J, amrex::Real dt, amrex::Real relative_time)
Deposit current density.
Definition: WarpXParticleContainer.cpp:712
bool initialize_self_fields
Definition: WarpXParticleContainer.H:339
int self_fields_verbosity
Definition: WarpXParticleContainer.H:343
virtual std::vector< std::string > getUserRealAttribs() const
Definition: WarpXParticleContainer.H:411
void DepositCharge(amrex::Vector< std::unique_ptr< amrex::MultiFab > > &rho, bool local=false, bool reset=false, bool apply_boundary_and_scale_volume=false, bool interpolate_across_levels=true, int icomp=0)
Deposit charge density.
Definition: WarpXParticleContainer.cpp:1057
virtual bool has_quantum_sync() const
Definition: WarpXParticleContainer.H:372
WarpXParticleContainer(amrex::AmrCore *amr_core, int ispecies)
Definition: WarpXParticleContainer.cpp:86
std::string physical_element
Definition: WarpXParticleContainer.H:456
virtual QuantumSynchrotronEngine * get_quantum_sync_engine_ptr() const
Definition: WarpXParticleContainer.H:419
int split_type
Definition: WarpXParticleContainer.H:353
void PushX(amrex::Real dt)
Definition: WarpXParticleContainer.cpp:1327
WarpXParticleContainer(WarpXParticleContainer &&)=default
void AddNParticles(int lev, long n, amrex::Vector< amrex::ParticleReal > const &x, amrex::Vector< amrex::ParticleReal > const &y, amrex::Vector< amrex::ParticleReal > const &z, amrex::Vector< amrex::ParticleReal > const &ux, amrex::Vector< amrex::ParticleReal > const &uy, amrex::Vector< amrex::ParticleReal > const &uz, int nattr_real, amrex::Vector< amrex::Vector< amrex::ParticleReal >> const &attr_real, int nattr_int, amrex::Vector< amrex::Vector< int >> const &attr_int, int uniqueparticles, amrex::Long id=-1)
Adds n particles to the simulation.
Definition: WarpXParticleContainer.cpp:158
TmpParticles getTmpParticleData() const noexcept
Definition: WarpXParticleContainer.H:490
friend MultiParticleContainer
Definition: WarpXParticleContainer.H:112
amrex::Vector< amrex::ParticleReal > m_E_external_particle
Definition: WarpXParticleContainer.H:347
std::string ionization_product_name
Definition: WarpXParticleContainer.H:449
int getSpeciesId() const
Definition: WarpXParticleContainer.H:277
virtual void resample(const int, bool)
Virtual method to resample the species. Overriden by PhysicalParticleContainer only....
Definition: WarpXParticleContainer.H:399
int DoFieldIonization() const
Definition: WarpXParticleContainer.H:368
int do_not_deposit
Definition: WarpXParticleContainer.H:338
WarpXParticleContainer(const WarpXParticleContainer &)=delete
amrex::ParticleReal getMass() const
Definition: WarpXParticleContainer.H:366
int do_not_push
Definition: WarpXParticleContainer.H:438
int DoQED() const
Definition: WarpXParticleContainer.H:375
int do_resampling
Definition: WarpXParticleContainer.H:458
int do_not_gather
Definition: WarpXParticleContainer.H:439
static void BackwardCompatibility()
bool m_deposit_on_main_grid
instead of depositing (current, charge) on the finest patch level, deposit to the coarsest grid
Definition: WarpXParticleContainer.H:433
amrex::Vector< amrex::FArrayBox > local_rho
Definition: WarpXParticleContainer.H:479
std::pair< int, int > PairIndex
Definition: WarpXParticleContainer.H:485
int do_field_ionization
Definition: WarpXParticleContainer.H:447
amrex::ParticleReal charge
Definition: WarpXParticleContainer.H:425
SoARef GetStructOfArrays() const
typename SoA::RealVector RealVector
typename SoA::IntVector IntVector
static constexpr int NArrayInt
static constexpr int NArrayReal
typename SoA::RealVector RealVector
T_ParticleType ParticleType
int n
Definition: run_libensemble_on_warpx.py:70
std::string get_name(const PhysicalSpecies &ps)
Returns the name associated to a PhysicalSpecies.
Definition: SpeciesPhysicalProperties.cpp:295
float dt
Definition: stencil.py:442
Definition: ParticleBoundaries.H:19
@ nattribs
Definition: WarpXParticleContainer_fwd.H:39