diff options
Diffstat (limited to 'Source/Particles/MultiParticleContainer.H')
-rw-r--r-- | Source/Particles/MultiParticleContainer.H | 80 |
1 files changed, 65 insertions, 15 deletions
diff --git a/Source/Particles/MultiParticleContainer.H b/Source/Particles/MultiParticleContainer.H index 58546a106..f9a0e51d7 100644 --- a/Source/Particles/MultiParticleContainer.H +++ b/Source/Particles/MultiParticleContainer.H @@ -1,14 +1,15 @@ - #ifndef WARPX_ParticleContainer_H_ #define WARPX_ParticleContainer_H_ -#include <AMReX_Particles.H> +#include "ElementaryProcess.H" + #include <WarpXParticleContainer.H> #include <PhysicalParticleContainer.H> #include <RigidInjectedParticleContainer.H> #include <PhotonParticleContainer.H> #include <LaserParticleContainer.H> +#include <AMReX_Particles.H> #ifdef WARPX_QED #include <BreitWheelerEngineWrapper.H> #include <QuantumSyncEngineWrapper.H> @@ -18,6 +19,8 @@ #include <map> #include <string> #include <algorithm> +#include <utility> +#include <tuple> // // MultiParticleContainer holds multiple (nspecies or npsecies+1 when @@ -162,9 +165,9 @@ public: int nSpecies() const {return nspecies;} - int nSpeciesBoostedFrameDiags() const {return nspecies_boosted_frame_diags;} - int mapSpeciesBoostedFrameDiags(int i) const {return map_species_boosted_frame_diags[i];} - int doBoostedFrameDiags() const {return do_boosted_frame_diags;} + int nSpeciesBackTransformedDiagnostics() const {return nspecies_back_transformed_diagnostics;} + int mapSpeciesBackTransformedDiagnostics(int i) const {return map_species_back_transformed_diagnostics[i];} + int doBackTransformedDiagnostics() const {return do_back_transformed_diagnostics;} int nSpeciesDepositOnMainGrid () const { bool const onMainGrid = true; @@ -196,6 +199,8 @@ public: PhysicalParticleContainer& GetPCtmp () { return *pc_tmp; } + IonizationProcess ionization_process; + protected: // Particle container types @@ -215,13 +220,58 @@ protected: #ifdef WARPX_QED // The QED engines - BreitWheelerEngine bw_engine; - QuantumSynchrotronEngine qs_engine; + std::shared_ptr<BreitWheelerEngine> m_shr_p_bw_engine; + std::shared_ptr<QuantumSynchrotronEngine> m_shr_p_qs_engine; //_______________________________ - //Initialize QED engines and provides smart pointers - //to species who need QED processes + /** + * Initialize QED engines and provides smart pointers + * to species who need QED processes + */ void InitQED (); + + //Variables to store how many species need a QED process + int m_nspecies_quantum_sync = 0; + int m_nspecies_breit_wheeler = 0; + //________ + + /** + * Returns the number of species having Quantum Synchrotron process enabled + */ + int NSpeciesQuantumSync() const { return m_nspecies_quantum_sync;} + + /** + * Returns the number of species having Breit Wheeler process enabled + */ + int NSpeciesBreitWheeler() const { return m_nspecies_breit_wheeler;} + + /** + * Initializes the Quantum Synchrotron engine + */ + void InitQuantumSync (); + + /** + * Initializes the Quantum Synchrotron engine + */ + void InitBreitWheeler (); + + /** + * Parses inputfile parameters for Quantum Synchrotron engine + * @return {a tuple containing a flag which is true if tables + * have to be generate, a filename (where tables should be stored + * or read from) and control parameters.} + */ + std::tuple<bool, std::string, PicsarQuantumSynchrotronCtrl> + ParseQuantumSyncParams (); + + /** + * Parses inputfile parameters for Breit Wheeler engine + * @return {a tuple containing a flag which is true if tables + * have to be generate, a filename (where tables should be stored + * or read from) and control parameters.} + */ + std::tuple<bool, std::string, PicsarBreitWheelerCtrl> + ParseBreitWheelerParams (); #endif private: @@ -236,12 +286,12 @@ private: void mapSpeciesProduct (); int getSpeciesID (std::string product_str); - // Number of species dumped in BoostedFrameDiagnostics - int nspecies_boosted_frame_diags = 0; - // map_species_boosted_frame_diags[i] is the species ID in - // MultiParticleContainer for 0<i<nspecies_boosted_frame_diags - std::vector<int> map_species_boosted_frame_diags; - int do_boosted_frame_diags = 0; + // Number of species dumped in BackTransformedDiagnostics + int nspecies_back_transformed_diagnostics = 0; + // map_species_back_transformed_diagnostics[i] is the species ID in + // MultiParticleContainer for 0<i<nspecies_back_transformed_diagnostics + std::vector<int> map_species_back_transformed_diagnostics; + int do_back_transformed_diagnostics = 0; // runtime parameters int nlasers = 0; |