diff --git a/src/incflo.cpp b/src/incflo.cpp index 1f985b37..d4e7bb3f 100644 --- a/src/incflo.cpp +++ b/src/incflo.cpp @@ -56,21 +56,9 @@ void incflo::InitData () InitFromScratch(m_cur_time); #ifdef AMREX_USE_EB -#ifdef INCFLO_USE_PARTICLES - const auto& ebfact = EBFactory(0); -#endif -#endif - -#ifdef INCFLO_USE_PARTICLES - initializeTracerParticles( (ParGDBBase*)GetParGDB() -#ifdef AMREX_USE_EB - ,ebfact -#endif - ); -#endif - -#ifdef AMREX_USE_EB - InitialRedistribution(); + if (!EBFactory(0).isAllRegular()) { + InitialRedistribution(); + } #endif if (m_do_initial_proj) { @@ -279,6 +267,15 @@ void incflo::MakeNewLevelFromScratch (int lev, Real time, const BoxArray& new_gr if (m_restart_file.empty()) { prob_init_fluid(lev); + +#ifdef INCFLO_USE_PARTICLES + initializeTracerParticles( (ParGDBBase*)GetParGDB() +#ifdef AMREX_USE_EB + ,EBFactory(0) +#endif + ); +#endif + } //make_mixedBC_mask(lev, grids[lev], dmap[lev]); diff --git a/src/particles/incflo_PCEvolve.cpp b/src/particles/incflo_PCEvolve.cpp index 0689097b..aec2811a 100644 --- a/src/particles/incflo_PCEvolve.cpp +++ b/src/particles/incflo_PCEvolve.cpp @@ -33,9 +33,9 @@ void incflo_PC::AdvectWithFlow (int a_lev, AMREX_ASSERT(OK(a_lev, a_lev, a_umac[0].nGrow()-1)); AMREX_ASSERT(a_lev >= 0 && a_lev < GetParticles().size()); - AMREX_D_TERM(AMREX_ASSERT(a_umac.nGrow() >= 1);, - AMREX_ASSERT(a_vmac.nGrow() >= 1);, - AMREX_ASSERT(a_wmac.nGrow() >= 1);); + AMREX_D_TERM(AMREX_ASSERT(a_umac[0].nGrow() >= 1);, + AMREX_ASSERT(a_vmac[0].nGrow() >= 1);, + AMREX_ASSERT(a_wmac[0].nGrow() >= 1);); const auto strttime = amrex::second(); const Geometry & geom = m_gdb->Geom(a_lev); @@ -164,7 +164,6 @@ void incflo_PC::AdvectWithFlow (int a_lev, { auto& ptile = ParticlesAt(a_lev, pti); auto& aos = ptile.GetArrayOfStructs(); - auto& soa = ptile.GetStructOfArrays(); const int n = aos.numParticles(); auto *p_pbox = aos().data(); diff --git a/src/particles/incflo_PCInit.cpp b/src/particles/incflo_PCInit.cpp index ada57ac1..0c219dd8 100644 --- a/src/particles/incflo_PCInit.cpp +++ b/src/particles/incflo_PCInit.cpp @@ -233,7 +233,6 @@ void incflo_PC::initializeParticlesUniformDistributionInBox ( const RealBox& par { auto& ptile = ParticlesAt(lev, pti); auto& aos = ptile.GetArrayOfStructs(); - auto& soa = ptile.GetStructOfArrays(); const int n = aos.numParticles(); auto *p_pbox = aos().data(); diff --git a/src/particles/incflo_Tracers.cpp b/src/particles/incflo_Tracers.cpp index a19a587e..9a3eb7b3 100644 --- a/src/particles/incflo_Tracers.cpp +++ b/src/particles/incflo_Tracers.cpp @@ -50,6 +50,18 @@ void incflo::initializeTracerParticles ( ParGDBBase* a_gdb if (m_use_tracer_particles) namelist_unalloc.remove( incfloParticleNames::tracers ); + // If we've already allocated, then we probably want to resize + const auto& particles_namelist( particleData.getNames() ); + for (auto it = particles_namelist.begin(); it != particles_namelist.end(); ++it) { + std::string species_name( *it ); + if (species_name == incfloParticleNames::tracers) + { + if (!particleData[incfloParticleNames::tracers]->OK()) { + particleData[incfloParticleNames::tracers]->resizeData(); + } + } + } + return; }