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 a21506ec3..c4bb5e410 100644 --- a/Source/Particles/WarpXParticleContainer.H +++ b/Source/Particles/WarpXParticleContainer.H @@ -85,6 +85,10 @@ public: RealVector& GetAttribs (int comp) { return GetStructOfArrays().GetRealData(comp); } + + IntVector& GetiAttribs (int comp) { + return GetStructOfArrays().GetIntData(comp); + } }; class MultiParticleContainer; @@ -176,6 +180,7 @@ public: virtual void DepositCharge(WarpXParIter& pti, RealVector& wp, + const int * const ion_lev, amrex::MultiFab* rho, int icomp, const long offset, @@ -189,6 +194,7 @@ public: RealVector& uxp, RealVector& uyp, RealVector& uzp, + const int * const ion_lev, amrex::MultiFab* jx, amrex::MultiFab* jy, amrex::MultiFab* jz, @@ -258,6 +264,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) @@ -274,15 +282,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; @@ -299,6 +314,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; |