diff --git a/Src/Particle/AMReX_NeighborParticles.H b/Src/Particle/AMReX_NeighborParticles.H index 47dc17413fd..74fb1116813 100644 --- a/Src/Particle/AMReX_NeighborParticles.H +++ b/Src/Particle/AMReX_NeighborParticles.H @@ -309,6 +309,30 @@ public: calcCommSize(); } + /** Remove the last n Real components of the species + * + * @param n number of components to remove + */ + void RemoveRealComp (int n = 1) + { + ParticleContainer:: + RemoveRealComp(n); + ghost_real_comp.pop_back(); + calcCommSize(); + } + + /** Remove the last n Int components of the species + * + * @param n number of components to remove + */ + void RemoveIntComp (int n = 1) + { + ParticleContainer:: + RemoveIntComp(n); + ghost_int_comp.pop_back(); + calcCommSize(); + } + void Redistribute (int lev_min=0, int lev_max=-1, int nGrow=0, int local=0, bool remove_negative=true) { diff --git a/Src/Particle/AMReX_ParticleContainer.H b/Src/Particle/AMReX_ParticleContainer.H index 449b1c85409..a5404ec0f7c 100644 --- a/Src/Particle/AMReX_ParticleContainer.H +++ b/Src/Particle/AMReX_ParticleContainer.H @@ -1324,6 +1324,38 @@ public: AddIntComp(getDefaultCompNameInt(NArrayInt+m_num_runtime_int), communicate); } + /** Remove the last n Real components of the species + * + * @param n number of components to remove + */ + void RemoveRealComp (int n = 1) + { + m_num_runtime_real--; + if (m_num_runtime_real == 0 && m_num_runtime_int == 0) { + m_runtime_comps_defined = false; + } + for (int i = 0; i < n; ++i) { + h_redistribute_real_comp.pop_back(); + } + SetParticleSize(); + } + + /** Remove the last n Int components of the species + * + * @param n number of components to remove + */ + void RemoveIntComp (int n = 1) + { + m_num_runtime_int--; + if (m_num_runtime_real == 0 && m_num_runtime_int == 0) { + m_runtime_comps_defined = false; + } + for (int i = 0; i < n; ++i) { + h_redistribute_int_comp.pop_back(); + } + SetParticleSize(); + } + int NumRuntimeRealComps () const { return m_num_runtime_real; } int NumRuntimeIntComps () const { return m_num_runtime_int; }