aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/PhysicalParticleContainer.H
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/PhysicalParticleContainer.H')
-rw-r--r--Source/Particles/PhysicalParticleContainer.H39
1 files changed, 38 insertions, 1 deletions
diff --git a/Source/Particles/PhysicalParticleContainer.H b/Source/Particles/PhysicalParticleContainer.H
index b558323a3..c953aa2d7 100644
--- a/Source/Particles/PhysicalParticleContainer.H
+++ b/Source/Particles/PhysicalParticleContainer.H
@@ -7,6 +7,11 @@
#include <AMReX_IArrayBox.H>
+#ifdef WARPX_QED
+ #include <QuantumSyncEngineWrapper.H>
+ #include <BreitWheelerEngineWrapper.H>
+#endif
+
#include <map>
class PhysicalParticleContainer
@@ -136,7 +141,15 @@ public:
amrex::Real q_tot, long npart, int do_symmetrize);
void CheckAndAddParticle(amrex::Real x, amrex::Real y, amrex::Real z,
- std::array<amrex::Real, 3> u, amrex::Real weight);
+ 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,
@@ -172,6 +185,16 @@ public:
amrex::FArrayBox const * & ezfab, amrex::FArrayBox const * & bxfab,
amrex::FArrayBox const * & byfab, amrex::FArrayBox const * & bzfab);
+#ifdef WARPX_QED
+ bool has_quantum_sync() override;
+ bool has_breit_wheeler() override;
+
+ void set_breit_wheeler_engine_ptr
+ (std::shared_ptr<BreitWheelerEngine>) override;
+ void set_quantum_sync_engine_ptr
+ (std::shared_ptr<QuantumSynchrotronEngine>) override;
+#endif
+
protected:
std::string species_name;
@@ -186,6 +209,20 @@ protected:
// Inject particles during the whole simulation
void ContinuousInjection (const amrex::RealBox& injection_box) override;
+#ifdef WARPX_QED
+ // A flag to enable quantum_synchrotron process for leptons
+ bool do_qed_quantum_sync = false;
+
+ // A flag to enable breit_wheeler process [photons only!!]
+ bool do_qed_breit_wheeler = false;
+
+ // A smart pointer to an instance of a Quantum Synchrotron engine
+ std::shared_ptr<QuantumSynchrotronEngine> shr_ptr_qs_engine;
+
+ // A smart pointer to an instance of a Breit Wheeler engine [photons only!]
+ std::shared_ptr<BreitWheelerEngine> shr_ptr_bw_engine;
+#endif
+
};
#endif