WarpX
Loading...
Searching...
No Matches
PhysicalParticleContainer.H
Go to the documentation of this file.
1/* Copyright 2019-2020 Andrew Myers, Axel Huebl, David Grote
2 * Ligia Diana Amorim, Luca Fedeli, Maxence Thevenet
3 * Remi Lehe, Revathi Jambunathan, Weiqun Zhang
4 * Yinjian Zhao
5 *
6 * This file is part of WarpX.
7 *
8 * License: BSD-3-Clause-LBNL
9 */
10#ifndef WARPX_PhysicalParticleContainer_H_
11#define WARPX_PhysicalParticleContainer_H_
12
15#ifdef WARPX_QED
20#endif
26
28
29#include <AMReX_GpuContainers.H>
30#include <AMReX_Particles.H>
31#include <AMReX_REAL.H>
32#include <AMReX_RealBox.H>
33
34#include <AMReX_BaseFwd.H>
35#include <AMReX_AmrCoreFwd.H>
36
37#include <memory>
38#include <string>
39
49{
50public:
51
53 int ispecies,
54 const std::string& name);
55
57
61
62 ~PhysicalParticleContainer () override = default;
63
68
69 virtual void AllocData () override;
70
71 void InitData () override;
72
73 void ReadHeader (std::istream& is) override;
74
75 void WriteHeader (std::ostream& os) const override;
76
77 void InitIonizationModule () override;
78
79 /*
80 * \brief Returns a pointer to the i'th plasma injector.
81 */
82 PlasmaInjector* GetPlasmaInjector (int i) override;
83
104 int lev,
105 const std::string& current_fp_string,
106 amrex::Real t,
107 amrex::Real dt,
108 SubcyclingHalf subcycling_half=SubcyclingHalf::None,
109 bool skip_deposition=false,
110 PositionPushType position_push_type=PositionPushType::Full,
111 MomentumPushType momentum_push_type=MomentumPushType::Full,
112 ImplicitOptions const * implicit_options = nullptr) override;
113
117 virtual void PushPX (WarpXParIter& pti,
118 amrex::FArrayBox const * exfab,
119 amrex::FArrayBox const * eyfab,
120 amrex::FArrayBox const * ezfab,
121 amrex::FArrayBox const * bxfab,
122 amrex::FArrayBox const * byfab,
123 amrex::FArrayBox const * bzfab,
124 amrex::IntVect ngEB, int /*e_is_nodal*/,
125 long offset,
126 long np_to_push,
127 int lev, int gather_lev,
128 amrex::Real dt, ScaleFields scaleFields,
129 SubcyclingHalf subcycling_half=SubcyclingHalf::None,
130 PositionPushType position_push_type=PositionPushType::Full,
131 MomentumPushType momentum_push_type=MomentumPushType::Full);
132
134 long offset,
135 long np_to_push,
136 long & num_unconverged_particles,
137 amrex::Gpu::DeviceVector<long> & unconverged_indices,
139
141 long offset,
142 long np_to_push,
143 long num_unconverged_particles,
144 amrex::Gpu::DeviceVector<long> & unconverged_indices,
146
147 void ImplicitPushXP (WarpXParIter& pti,
148 amrex::FArrayBox const * exfab,
149 amrex::FArrayBox const * eyfab,
150 amrex::FArrayBox const * ezfab,
151 amrex::FArrayBox const * bxfab,
152 amrex::FArrayBox const * byfab,
153 amrex::FArrayBox const * bzfab,
154 ImplicitOptions const * implicit_options,
155 amrex::IntVect const & ngEB,
156 long offset,
157 long np_to_push,
158 int lev, int gather_lev,
159 amrex::Real dt,
160 long & num_unconverged_particles,
161 amrex::Gpu::DeviceVector<long> & unconverged_indices,
163
166 amrex::FArrayBox const * exfab,
167 amrex::FArrayBox const * eyfab,
168 amrex::FArrayBox const * ezfab,
169 amrex::FArrayBox const * bxfab,
170 amrex::FArrayBox const * byfab,
171 amrex::FArrayBox const * bzfab,
172 ImplicitOptions const * implicit_options,
173 amrex::IntVect ngEB,
174 amrex::MultiFab * const jx,
175 amrex::MultiFab * const jy,
176 amrex::MultiFab * const jz,
177 long offset,
178 int lev, int gather_lev,
179 amrex::Real dt,
180 bool skip_deposition,
181 long num_unconverged_particles,
182 amrex::Gpu::DeviceVector<long> & unconverged_indices,
184
185 void PushP (int lev, amrex::Real dt,
186 const amrex::MultiFab& Ex,
187 const amrex::MultiFab& Ey,
188 const amrex::MultiFab& Ez,
189 const amrex::MultiFab& Bx,
190 const amrex::MultiFab& By,
191 const amrex::MultiFab& Bz) override;
192
194 long& nfine_current,
195 long& nfine_gather,
196 long np,
197 WarpXParIter& pti,
198 int lev,
199 int n_field_gather_buffer,
200 int n_current_deposition_buffer,
201 amrex::iMultiFab const* current_masks,
202 amrex::iMultiFab const* gather_masks );
203
204 void PostRestart () final {}
205
206 void SplitParticles (int lev);
207
209 int lev,
210 amrex::IntVect ngEB,
211 const amrex::FArrayBox& Ex,
212 const amrex::FArrayBox& Ey,
213 const amrex::FArrayBox& Ez,
214 const amrex::FArrayBox& Bx,
215 const amrex::FArrayBox& By,
216 const amrex::FArrayBox& Bz);
217
218 // Inject particles in Box 'part_box'
219 virtual void AddParticles (int lev);
220
232 void AddPlasma (PlasmaInjector const& plasma_injector, int lev, amrex::RealBox part_realbox = amrex::RealBox());
233
240 void AddPlasmaFlux (PlasmaInjector const& plasma_injector, amrex::Real dt);
241
242 void MapParticletoBoostedFrame (amrex::ParticleReal& x, amrex::ParticleReal& y, amrex::ParticleReal& z,
243 amrex::ParticleReal& ux, amrex::ParticleReal& uy, amrex::ParticleReal& uz,
244 amrex::Real t_lab = 0.) const;
245
246 void AddGaussianBeam (PlasmaInjector const& plasma_injector);
247
253 void AddPlasmaFromFile (PlasmaInjector & plasma_injector,
254 amrex::ParticleReal q_tot,
255 amrex::ParticleReal z_shift);
256
258 amrex::ParticleReal x, amrex::ParticleReal y, amrex::ParticleReal z,
259 amrex::ParticleReal ux, amrex::ParticleReal uy, amrex::ParticleReal uz,
260 amrex::ParticleReal weight,
268 amrex::Real t_lab= 0.) const;
269
283 int n_external_attr_real,
284 int n_external_attr_int) final;
285
325 void applyNCIFilter (
326 int lev, const amrex::Box& box,
327 amrex::Elixir& exeli, amrex::Elixir& eyeli, amrex::Elixir& ezeli,
328 amrex::Elixir& bxeli, amrex::Elixir& byeli, amrex::Elixir& bzeli,
329 amrex::FArrayBox& filtered_Ex, amrex::FArrayBox& filtered_Ey,
330 amrex::FArrayBox& filtered_Ez, amrex::FArrayBox& filtered_Bx,
331 amrex::FArrayBox& filtered_By, amrex::FArrayBox& filtered_Bz,
332 const amrex::FArrayBox& Ex, const amrex::FArrayBox& Ey,
333 const amrex::FArrayBox& Ez, const amrex::FArrayBox& Bx,
334 const amrex::FArrayBox& By, const amrex::FArrayBox& Bz,
335 amrex::FArrayBox const * & ex_ptr, amrex::FArrayBox const * & ey_ptr,
336 amrex::FArrayBox const * & ez_ptr, amrex::FArrayBox const * & bx_ptr,
337 amrex::FArrayBox const * & by_ptr, amrex::FArrayBox const * & bz_ptr);
338
347 void resample (
348 const amrex::Vector<amrex::Geometry>& geom, int timestep, bool verbose=true) final;
349
350#ifdef WARPX_QED
351 //Functions decleared in WarpXParticleContainer.H
352 //containers for which QED processes could be relevant
353 //are expected to override these functions
354
360 bool has_quantum_sync () const override;
361
367 bool has_breit_wheeler () const override;
368
374 (const std::shared_ptr<BreitWheelerEngine>& ptr) override;
375
381 (const std::shared_ptr<QuantumSynchrotronEngine>& ptr) override;
382 //__________
383
385 return m_shr_p_bw_engine.get();
386 }
387
389 return m_shr_p_qs_engine.get();
390 }
391
393
395#endif
396
397 std::vector<std::string> getUserIntAttribs () const override {
398 return m_user_int_attribs;
399 }
400
401 std::vector<std::string> getUserRealAttribs () const override {
402 return m_user_real_attribs;
403 }
404
406 return GetVecOfPtrs(m_user_int_attrib_parser);
407 }
408
410 return GetVecOfPtrs(m_user_real_attrib_parser);
411 }
412
413 // By default this returns false; overridden here to return runtime value
414 virtual bool getTemperatureDepositionFlag () const noexcept override {return m_do_temperature_deposition;}
415
418 amrex::Real relative_time) override;
419
420 virtual void DepositTemperature (
421 WarpXParIter& pti,
422 RealVector const & wp, RealVector const & uxp,
423 RealVector const & uyp, RealVector const & uzp,
424 amrex::MultiFab * const Tx, amrex::MultiFab * const Ty, amrex::MultiFab * const Tz,
425 long const offset, long const np_to_deposit,
426 int const thread_num, const int lev, int const depos_lev,
427 amrex::Real const relative_time, PushType push_type,
430
431protected:
432
433 /*
434 Finds the box defining the region where refine injection should be used, if that
435 option is enabled. Currently this only works for numLevels() == 2 and static mesh
436 refinement.
437 */
438 bool findRefinedInjectionBox (amrex::Box& fine_injection_box, amrex::IntVect& rrfac);
439
440 std::string species_name;
441 std::vector<std::unique_ptr<PlasmaInjector>> plasma_injectors;
442
443 // When true, adjust the transverse particle positions accounting
444 // for the difference between the Lorentz transformed time of the
445 // particle and the time of the boosted frame.
448 bool m_rz_random_theta = true;
449
450 // Impose t_lab from the openPMD file for externally loaded species
452
454
455 // Inject particles during the whole simulation
456 void ContinuousInjection (const amrex::RealBox& injection_box) override;
457
458 // Continuously inject a flux of particles from a defined surface
459 void ContinuousFluxInjection (amrex::Real t, amrex::Real dt) override;
460
461 //This function return true if the PhysicalParticleContainer contains electrons
462 //or positrons, false otherwise
463
464 //When true PhysicalParticleContainer tries to use a pusher including
465 //radiation reaction
467
468 // A flag to enable saving of the previous timestep positions
470
471 // Flag controlling whether or not variance and then temperatures are computed per species
473
474 std::unique_ptr<warpx::particles::deposition::VarianceAccumulationBuffer> local_temperature_arrays;
475
476#ifdef WARPX_QED
477 // A flag to enable quantum_synchrotron process for leptons
479
480 // A flag to enable breit_wheeler process [photons only!!]
482
483 // A smart pointer to an instance of a Quantum Synchrotron engine
484 std::shared_ptr<QuantumSynchrotronEngine> m_shr_p_qs_engine;
485
486 // A smart pointer to an instance of a Breit Wheeler engine [photons only!]
487 std::shared_ptr<BreitWheelerEngine> m_shr_p_bw_engine;
488#endif
489 /* Vector of user-defined integer attributes for species, species_name */
490 std::vector<std::string> m_user_int_attribs;
491 /* Vector of user-defined real attributes for species, species_name */
492 std::vector<std::string> m_user_real_attribs;
493 /* Vector of user-defined parser for initializing user-defined integer attributes */
495 /* Vector of user-defined parser for initializing user-defined real attributes */
497
498};
499
500#endif
Array4< int const > offset
PushType
Particle push scheme.
Definition WarpXAlgorithmSelection.H:170
PositionPushType
For advanced collision algorithms that split the particle push in substeps.
Definition WarpXAlgorithmSelection.H:181
@ Full
Definition WarpXAlgorithmSelection.H:181
MomentumPushType
For advanced collision algorithms that split the particle push in substeps.
Definition WarpXAlgorithmSelection.H:189
@ Full
Definition WarpXAlgorithmSelection.H:189
SubcyclingHalf
Subcycling half selector.
Definition WarpXAlgorithmSelection.H:166
@ None
Definition WarpXAlgorithmSelection.H:166
Definition BreitWheelerEngineWrapper.H:294
Filter functor for the Breit Wheeler process.
Definition QEDPairGeneration.H:38
Filter functor for the QED photon emission process.
Definition QEDPhotonEmission.H:44
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:1091
void set_breit_wheeler_engine_ptr(const std::shared_ptr< BreitWheelerEngine > &ptr) override
Definition PhysicalParticleContainer.cpp:1691
void Evolve(ablastr::fields::MultiFabRegister &fields, int lev, const std::string &current_fp_string, amrex::Real t, amrex::Real dt, SubcyclingHalf subcycling_half=SubcyclingHalf::None, bool skip_deposition=false, PositionPushType position_push_type=PositionPushType::Full, MomentumPushType momentum_push_type=MomentumPushType::Full, ImplicitOptions const *implicit_options=nullptr) override
Evolve is the central function in PhysicalParticleContainer that advances plasma particles for a time...
Definition PhysicalParticleContainer.cpp:426
std::vector< std::string > m_user_int_attribs
Definition PhysicalParticleContainer.H:490
BreitWheelerEngine * get_breit_wheeler_engine_ptr() const override
Definition PhysicalParticleContainer.H:384
amrex::Vector< amrex::Parser * > getUserIntAttribParser() const override
Definition PhysicalParticleContainer.H:405
PhysicalParticleContainer & operator=(PhysicalParticleContainer const &)=delete
std::unique_ptr< warpx::particles::deposition::VarianceAccumulationBuffer > local_temperature_arrays
Definition PhysicalParticleContainer.H:474
void PartitionParticlesInBuffers(long &nfine_current, long &nfine_gather, long np, WarpXParIter &pti, int lev, int n_field_gather_buffer, int n_current_deposition_buffer, amrex::iMultiFab const *current_masks, amrex::iMultiFab const *gather_masks)
Determine which particles deposit/gather in the buffer, and and reorder the particle arrays according...
Definition Partition.cpp:53
void SetupSuborbitParticles(WarpXParIter &pti, long offset, long np_to_push, long num_unconverged_particles, amrex::Gpu::DeviceVector< long > &unconverged_indices, amrex::Gpu::DeviceVector< amrex::ParticleReal > &saved_weights)
Definition ImplicitPushPX.cpp:312
virtual void AccumulateVelocitiesAndComputeTemperature(ablastr::fields::MultiLevelVectorField const &T_vf, amrex::Real relative_time) override
Accumulate velocity moments for matched temperature deposition using particle shapes.
Definition PhysicalParticleContainer.cpp:1891
bool findRefinedInjectionBox(amrex::Box &fine_injection_box, amrex::IntVect &rrfac)
Definition PhysicalParticleContainer.cpp:1654
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:1582
std::shared_ptr< BreitWheelerEngine > m_shr_p_bw_engine
Definition PhysicalParticleContainer.H:487
Resampling m_resampler
Definition PhysicalParticleContainer.H:453
amrex::Vector< std::unique_ptr< amrex::Parser > > m_user_int_attrib_parser
Definition PhysicalParticleContainer.H:494
PhysicalParticleContainer(PhysicalParticleContainer &&)=default
void set_quantum_sync_engine_ptr(const std::shared_ptr< QuantumSynchrotronEngine > &ptr) override
Definition PhysicalParticleContainer.cpp:1698
void SplitParticles(int lev)
Definition PhysicalParticleContainer.cpp:887
bool m_do_qed_quantum_sync
Definition PhysicalParticleContainer.H:478
void ImplicitPushXP(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, ImplicitOptions const *implicit_options, amrex::IntVect const &ngEB, long offset, long np_to_push, int lev, int gather_lev, amrex::Real dt, long &num_unconverged_particles, amrex::Gpu::DeviceVector< long > &unconverged_indices, amrex::Gpu::DeviceVector< amrex::ParticleReal > &saved_weights)
Definition ImplicitPushPX.cpp:387
void ContinuousInjection(const amrex::RealBox &injection_box) override
Definition AddParticles.cpp:267
bool has_breit_wheeler() const override
Definition PhysicalParticleContainer.cpp:1684
PhysicalParticleContainer(PhysicalParticleContainer const &)=delete
bool m_do_qed_breit_wheeler
Definition PhysicalParticleContainer.H:481
void ImplicitPushXPSubOrbits(WarpXParIter &pti, ablastr::fields::MultiFabRegister &fields, amrex::FArrayBox const *exfab, amrex::FArrayBox const *eyfab, amrex::FArrayBox const *ezfab, amrex::FArrayBox const *bxfab, amrex::FArrayBox const *byfab, amrex::FArrayBox const *bzfab, ImplicitOptions const *implicit_options, amrex::IntVect ngEB, amrex::MultiFab *const jx, amrex::MultiFab *const jy, amrex::MultiFab *const jz, long offset, int lev, int gather_lev, amrex::Real dt, bool skip_deposition, long num_unconverged_particles, amrex::Gpu::DeviceVector< long > &unconverged_indices, amrex::Gpu::DeviceVector< amrex::ParticleReal > &saved_weights)
Definition ImplicitPushPX.cpp:668
PairGenerationFilterFunc getPairGenerationFilterFunc()
Definition PhysicalParticleContainer.cpp:1711
bool do_classical_radiation_reaction
Definition PhysicalParticleContainer.H:466
void MapParticletoBoostedFrame(amrex::ParticleReal &x, amrex::ParticleReal &y, amrex::ParticleReal &z, amrex::ParticleReal &ux, amrex::ParticleReal &uy, amrex::ParticleReal &uz, amrex::Real t_lab=0.) const
Definition AddParticles.cpp:293
std::shared_ptr< QuantumSynchrotronEngine > m_shr_p_qs_engine
Definition PhysicalParticleContainer.H:484
std::vector< std::string > getUserRealAttribs() const override
Definition PhysicalParticleContainer.H:401
void DefaultInitializeRuntimeAttributes(typename ContainerLike< amrex::PinnedArenaAllocator >::ParticleTileType &pinned_tile, int n_external_attr_real, int n_external_attr_int) final
Default initialize runtime attributes in a tile. This routine does not initialize the first n_externa...
Definition PhysicalParticleContainer.cpp:405
bool impose_t_lab_from_file
Definition PhysicalParticleContainer.H:451
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, amrex::IntVect ngEB, int, long offset, long np_to_push, int lev, int gather_lev, amrex::Real dt, ScaleFields scaleFields, SubcyclingHalf subcycling_half=SubcyclingHalf::None, PositionPushType position_push_type=PositionPushType::Full, MomentumPushType momentum_push_type=MomentumPushType::Full)
Gather fields and push particles in one fused kernel.
Definition PhysicalParticleContainer.cpp:1241
virtual bool getTemperatureDepositionFlag() const noexcept override
Definition PhysicalParticleContainer.H:414
void resample(const amrex::Vector< amrex::Geometry > &geom, int timestep, bool verbose=true) final
This function determines if resampling should be done for the current species, and if so,...
Definition PhysicalParticleContainer.cpp:1615
void InitData() override
Definition PhysicalParticleContainer.cpp:398
void ReadHeader(std::istream &is) override
Definition ParticleIO.cpp:115
virtual void AddParticles(int lev)
Definition AddParticles.cpp:195
void BackwardCompatibility()
Definition PhysicalParticleContainer.cpp:382
virtual void AllocData() override
Definition PhysicalParticleContainer.cpp:342
virtual void DepositTemperature(WarpXParIter &pti, RealVector const &wp, RealVector const &uxp, RealVector const &uyp, RealVector const &uzp, amrex::MultiFab *const Tx, amrex::MultiFab *const Ty, amrex::MultiFab *const Tz, long const offset, long const np_to_deposit, int const thread_num, const int lev, int const depos_lev, amrex::Real const relative_time, PushType push_type, const warpx::particles::deposition::TemperatureDepositionType type, const warpx::particles::deposition::TemperatureDepositionPass pass) override
Definition PhysicalParticleContainer.cpp:1737
amrex::Vector< std::unique_ptr< amrex::Parser > > m_user_real_attrib_parser
Definition PhysicalParticleContainer.H:496
void AddPlasma(PlasmaInjector const &plasma_injector, int lev, amrex::RealBox part_realbox=amrex::RealBox())
Definition AddParticles.cpp:741
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, amrex::Real t_lab=0.) const
Definition AddParticles.cpp:341
bool m_save_previous_position
Definition PhysicalParticleContainer.H:469
void InitIonizationModule() override
Definition PhysicalParticleContainer.cpp:1495
QuantumSynchrotronEngine * get_quantum_sync_engine_ptr() const override
Definition PhysicalParticleContainer.H:388
void FindSuborbitParticles(WarpXParIter &pti, long offset, long np_to_push, long &num_unconverged_particles, amrex::Gpu::DeviceVector< long > &unconverged_indices, amrex::Gpu::DeviceVector< amrex::ParticleReal > &saved_weights)
Definition ImplicitPushPX.cpp:264
void PostRestart() final
Definition PhysicalParticleContainer.H:204
std::vector< std::string > m_user_real_attribs
Definition PhysicalParticleContainer.H:492
std::vector< std::string > getUserIntAttribs() const override
Definition PhysicalParticleContainer.H:397
void ContinuousFluxInjection(amrex::Real t, amrex::Real dt) override
Definition AddParticles.cpp:279
~PhysicalParticleContainer() override=default
bool m_do_temperature_deposition
Definition PhysicalParticleContainer.H:472
PhysicalParticleContainer & operator=(PhysicalParticleContainer &&)=default
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 *&ex_ptr, amrex::FArrayBox const *&ey_ptr, amrex::FArrayBox const *&ez_ptr, amrex::FArrayBox const *&bx_ptr, amrex::FArrayBox const *&by_ptr, amrex::FArrayBox const *&bz_ptr)
Apply NCI Godfrey filter to all components of E and B before gather.
Definition PhysicalParticleContainer.cpp:808
void AddPlasmaFromFile(PlasmaInjector &plasma_injector, amrex::ParticleReal q_tot, amrex::ParticleReal z_shift)
Definition AddParticles.cpp:603
void WriteHeader(std::ostream &os) const override
Definition ParticleIO.cpp:122
void AddGaussianBeam(PlasmaInjector const &plasma_injector)
Definition AddParticles.cpp:367
PlasmaInjector * GetPlasmaInjector(int i) override
Definition PhysicalParticleContainer.cpp:1606
bool boost_adjust_transverse_positions
Definition PhysicalParticleContainer.H:446
std::vector< std::unique_ptr< PlasmaInjector > > plasma_injectors
Definition PhysicalParticleContainer.H:441
amrex::Vector< amrex::Parser * > getUserRealAttribParser() const override
Definition PhysicalParticleContainer.H:409
bool has_quantum_sync() const override
Definition PhysicalParticleContainer.cpp:1679
PhotonEmissionFilterFunc getPhotonEmissionFilterFunc()
Definition PhysicalParticleContainer.cpp:1704
std::string species_name
Definition PhysicalParticleContainer.H:440
bool m_rz_random_theta
Definition PhysicalParticleContainer.H:448
bool do_backward_propagation
Definition PhysicalParticleContainer.H:447
PhysicalParticleContainer(amrex::AmrCore *amr_core, int ispecies, const std::string &name)
Definition PhysicalParticleContainer.cpp:119
void AddPlasmaFlux(PlasmaInjector const &plasma_injector, amrex::Real dt)
Definition AddParticles.cpp:1208
Definition PlasmaInjector.H:39
Definition QuantumSyncEngineWrapper.H:273
This is a general class used for resampling that is instantiated as a member of MultiParticleContaine...
Definition Resampling.H:54
Definition WarpXParticleContainer.H:112
WarpXParticleContainer(amrex::AmrCore *amr_core, int ispecies)
Definition WarpXParticleContainer.cpp:94
ParticleTile< ParticleType, NArrayReal, NArrayInt, Allocator > ParticleTileType
Definition EffectivePotentialPoissonSolver.H:63
amrex::Vector< VectorField > MultiLevelVectorField
Definition MultiFabRegister.H:208
PinnedVector< T > HostVector
PODVector< T, ArenaAllocator< T > > DeviceVector
BoxND< 3 > Box
IntVectND< 3 > IntVect
TemperatureDepositionType
Definition TemperatureDepositionTypes.H:20
TemperatureDepositionPass
Definition TemperatureDepositionTypes.H:25
Definition ImplicitOptions.H:7
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
Definition MultiFabRegister.H:262