diff options
Diffstat (limited to 'Source/Particles/WarpXParticleContainer.H')
-rw-r--r-- | Source/Particles/WarpXParticleContainer.H | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/Source/Particles/WarpXParticleContainer.H b/Source/Particles/WarpXParticleContainer.H index ac5b47ada..c252eee6b 100644 --- a/Source/Particles/WarpXParticleContainer.H +++ b/Source/Particles/WarpXParticleContainer.H @@ -76,6 +76,10 @@ public: RealVector& GetAttribs (int comp) { return GetStructOfArrays().GetRealData(comp); } + + IntVector& GetiAttribs (int comp) { + return GetStructOfArrays().GetIntData(comp); + } }; class MultiParticleContainer; @@ -167,6 +171,7 @@ public: virtual void DepositCharge(WarpXParIter& pti, RealVector& wp, + const int * const ion_lev, amrex::MultiFab* rho, int icomp, const long offset, @@ -180,6 +185,7 @@ public: RealVector& uxp, RealVector& uyp, RealVector& uzp, + const int * const ion_lev, amrex::MultiFab* jx, amrex::MultiFab* jy, amrex::MultiFab* jz, @@ -249,6 +255,8 @@ public: static int NextID () { return ParticleType::NextID(); } + void setNextID(int next_id) { ParticleType::NextID(next_id); } + bool do_splitting = false; // split along axes (0) or diagonals (1) @@ -265,15 +273,22 @@ public: void AddIntComp (const std::string& name, bool comm=true) { - particle_comps[name] = NumIntComps(); + particle_icomps[name] = NumIntComps(); AddIntComp(comm); } int DoBoostedFrameDiags () const { return do_boosted_frame_diags; } + virtual void buildIonizationMask (const amrex::MFIter& mfi, const int lev, + amrex::Gpu::ManagedDeviceVector<int>& ionization_mask) + {}; + + std::map<std::string, int> getParticleComps () { return particle_comps;} + protected: std::map<std::string, int> particle_comps; + std::map<std::string, int> particle_icomps; int species_id; @@ -290,6 +305,17 @@ protected: // support all features allowed by direct injection. int do_continuous_injection = 0; + int do_field_ionization = 0; + int ionization_product; + std::string ionization_product_name; + int ion_atomic_number; + int ionization_initial_level = 0; + amrex::Gpu::ManagedVector<amrex::Real> ionization_energies; + amrex::Gpu::ManagedVector<amrex::Real> adk_power; + amrex::Gpu::ManagedVector<amrex::Real> adk_prefactor; + amrex::Gpu::ManagedVector<amrex::Real> adk_exp_prefactor; + std::string physical_element; + int do_boosted_frame_diags = 1; amrex::Vector<amrex::FArrayBox> local_rho; |