diff options
Diffstat (limited to '')
-rw-r--r-- | Source/Particles/MultiParticleContainer.cpp | 21 | ||||
-rw-r--r-- | Source/Particles/WarpXParticleContainer.H | 30 | ||||
-rw-r--r-- | Source/Particles/WarpXParticleContainer.cpp | 15 |
3 files changed, 53 insertions, 13 deletions
diff --git a/Source/Particles/MultiParticleContainer.cpp b/Source/Particles/MultiParticleContainer.cpp index 1b644b543..01ea948cd 100644 --- a/Source/Particles/MultiParticleContainer.cpp +++ b/Source/Particles/MultiParticleContainer.cpp @@ -28,7 +28,26 @@ MultiParticleContainer::MultiParticleContainer (AmrCore* amr_core) if (WarpX::use_laser) { allcontainers[n-1].reset(new LaserParticleContainer(amr_core,n-1)); } - pc_tmp.reset(new PhysicalParticleContainer(amr_core)); + pc_tmp.reset(new PhysicalParticleContainer(amr_core)); + + if (WarpX::do_boosted_frame_diagnostic && WarpX::do_boosted_frame_particles) + { + for (int i = 0; i < n; ++i) + { + allcontainers[i]->AddRealComp("xold"); + allcontainers[i]->AddRealComp("yold"); + allcontainers[i]->AddRealComp("zold"); + allcontainers[i]->AddRealComp("uxold"); + allcontainers[i]->AddRealComp("uyold"); + allcontainers[i]->AddRealComp("uzold"); + } + pc_tmp->AddRealComp("xold"); + pc_tmp->AddRealComp("yold"); + pc_tmp->AddRealComp("zold"); + pc_tmp->AddRealComp("uxold"); + pc_tmp->AddRealComp("uyold"); + pc_tmp->AddRealComp("uzold"); + } } void diff --git a/Source/Particles/WarpXParticleContainer.H b/Source/Particles/WarpXParticleContainer.H index 050060b47..275554cd8 100644 --- a/Source/Particles/WarpXParticleContainer.H +++ b/Source/Particles/WarpXParticleContainer.H @@ -14,9 +14,6 @@ struct PIdx #ifdef WARPX_RZ theta, // RZ needs all three position components #endif -#ifdef WARPX_STORE_OLD_PARTICLE_ATTRIBS - xold, yold, zold, uxold, uyold, uzold, -#endif nattribs }; }; @@ -42,15 +39,7 @@ namespace ParticleStringNames {"Ez", PIdx::Ez }, {"Bx", PIdx::Bx }, {"By", PIdx::By }, - {"Bz", PIdx::Bz }, -#ifdef WARPX_STORE_OLD_PARTICLE_ATTRIBS - {"xold", PIdx::xold }, - {"yold", PIdx::yold }, - {"zold", PIdx::zold }, - {"uxold", PIdx::uxold}, - {"uyold", PIdx::uyold}, - {"uzold", PIdx::uzold}, -#endif + {"Bz", PIdx::Bz } }; } @@ -231,8 +220,25 @@ public: // split along axes (0) or diagonals (1) int split_type = 0; + using amrex::ParticleContainer<0, 0, PIdx::nattribs>::AddRealComp; + using amrex::ParticleContainer<0, 0, PIdx::nattribs>::AddIntComp; + + void AddRealComp (const std::string& name, bool comm=true) + { + particle_comps[name] = NumRealComps(); + AddRealComp(comm); + } + + void AddIntComp (const std::string& name, bool comm=true) + { + particle_comps[name] = NumIntComps(); + AddIntComp(comm); + } + protected: + std::map<std::string, int> particle_comps; + int species_id; amrex::Real charge; diff --git a/Source/Particles/WarpXParticleContainer.cpp b/Source/Particles/WarpXParticleContainer.cpp index c52e0a6d0..567a3ff51 100644 --- a/Source/Particles/WarpXParticleContainer.cpp +++ b/Source/Particles/WarpXParticleContainer.cpp @@ -63,6 +63,21 @@ WarpXParticleContainer::WarpXParticleContainer (AmrCore* amr_core, int ispecies) SetParticleSize(); ReadParameters(); + // build up the map of string names to particle component numbers + particle_comps["w"] = PIdx::w; + particle_comps["ux"] = PIdx::ux; + particle_comps["uy"] = PIdx::uy; + particle_comps["uz"] = PIdx::uz; + particle_comps["Ex"] = PIdx::Ex; + particle_comps["Ey"] = PIdx::Ey; + particle_comps["Ez"] = PIdx::Ez; + particle_comps["Bx"] = PIdx::Bx; + particle_comps["By"] = PIdx::By; + particle_comps["Bz"] = PIdx::Bz; +#ifdef WARPX_RZ + particle_comps["theta"] = PIdx::theta; +#endif + // Initialize temporary local arrays for charge/current deposition int num_threads = 1; #ifdef _OPENMP |