aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Source/Particles/MultiParticleContainer.cpp21
-rw-r--r--Source/Particles/WarpXParticleContainer.H30
-rw-r--r--Source/Particles/WarpXParticleContainer.cpp15
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