aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/MultiParticleContainer.H
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/MultiParticleContainer.H')
-rw-r--r--Source/Particles/MultiParticleContainer.H36
1 files changed, 22 insertions, 14 deletions
diff --git a/Source/Particles/MultiParticleContainer.H b/Source/Particles/MultiParticleContainer.H
index f9a0e51d7..d7ddc7a72 100644
--- a/Source/Particles/MultiParticleContainer.H
+++ b/Source/Particles/MultiParticleContainer.H
@@ -11,16 +11,17 @@
#include <AMReX_Particles.H>
#ifdef WARPX_QED
+ #include <QedChiFunctions.H>
#include <BreitWheelerEngineWrapper.H>
#include <QuantumSyncEngineWrapper.H>
#endif
+#include "CollisionType.H"
+
#include <memory>
#include <map>
#include <string>
#include <algorithm>
-#include <utility>
-#include <tuple>
//
// MultiParticleContainer holds multiple (nspecies or npsecies+1 when
@@ -43,6 +44,11 @@ public:
return *allcontainers[ispecies];
}
+#ifdef WARPX_USE_OPENPMD
+ std::unique_ptr<WarpXParticleContainer>& GetUniqueContainer(int ispecies) {
+ return allcontainers[ispecies];
+ }
+#endif
std::array<amrex::Real, 3> meanParticleVelocity(int ispecies) {
return allcontainers[ispecies]->meanParticleVelocity();
}
@@ -138,6 +144,8 @@ public:
void doFieldIonization ();
+ void doCoulombCollisions ();
+
void Checkpoint (const std::string& dir) const;
void WritePlotFile (const std::string& dir) const;
@@ -210,6 +218,10 @@ protected:
std::vector<std::string> lasers_names;
+ std::vector<std::string> collision_names;
+
+ amrex::Vector<std::unique_ptr<CollisionType> > allcollisions;
+
//! instead of depositing (current, charge) on the finest patch level, deposit to the coarsest grid
std::vector<bool> m_deposit_on_main_grid;
@@ -256,22 +268,17 @@ protected:
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.}
+ * Called by InitQuantumSync if a new table has
+ * to be generated.
*/
- std::tuple<bool, std::string, PicsarQuantumSynchrotronCtrl>
- ParseQuantumSyncParams ();
+ void QuantumSyncGenerateTable();
/**
- * 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.}
+ * Called by InitBreitWheeler if a new table has
+ * to be generated.
*/
- std::tuple<bool, std::string, PicsarBreitWheelerCtrl>
- ParseBreitWheelerParams ();
+ void BreitWheelerGenerateTable();
+
#endif
private:
@@ -296,5 +303,6 @@ private:
// runtime parameters
int nlasers = 0;
int nspecies = 1; // physical particles only. nspecies+nlasers == allcontainers.size().
+ int ncollisions = 0;
};
#endif /*WARPX_ParticleContainer_H_*/