aboutsummaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/Diagnostics/BoostedFrameDiagnostic.cpp44
-rw-r--r--Source/Particles/MultiParticleContainer.cpp13
-rw-r--r--Source/Particles/WarpXParticleContainer.H2
3 files changed, 47 insertions, 12 deletions
diff --git a/Source/Diagnostics/BoostedFrameDiagnostic.cpp b/Source/Diagnostics/BoostedFrameDiagnostic.cpp
index 5d85fc8f8..ad33b68d8 100644
--- a/Source/Diagnostics/BoostedFrameDiagnostic.cpp
+++ b/Source/Diagnostics/BoostedFrameDiagnostic.cpp
@@ -497,6 +497,8 @@ BoostedFrameDiagnostic(Real zmin_lab, Real zmax_lab, Real v_window_lab,
void BoostedFrameDiagnostic::Flush(const Geometry& geom)
{
BL_PROFILE("BoostedFrameDiagnostic::Flush");
+
+ std::cout<<"in Flush"\n;
VisMF::Header::Version current_version = VisMF::GetHeaderVersion();
VisMF::SetHeaderVersion(amrex::VisMF::Header::NoFabHeader_v1);
@@ -539,8 +541,10 @@ void BoostedFrameDiagnostic::Flush(const Geometry& geom)
}
if (WarpX::do_boosted_frame_particles) {
- for (int j = 0; j < mypc.nSpecies(); ++j) {
- std::string species_name = species_names[mypc.map_species_lab_diags[j]];
+ // for (int j = 0; j < mypc.nSpecies(); ++j) {
+ for (int j = 0; j < mypc.nspecies_lab_frame_diags; ++j) {
+ int js = mypc.map_species_lab_diags[j];
+ std::string species_name = species_names[js];
#ifdef WARPX_USE_HDF5
writeParticleDataHDF5(particles_buffer_[i][j],
snapshots_[i].file_name,
@@ -576,8 +580,12 @@ writeLabFrameData(const MultiFab* cell_centered_data,
const Real zhi_boost = domain_z_boost.hi(boost_direction_);
const std::vector<std::string> species_names = mypc.GetSpeciesNames();
+
+ Print()<<"in BoostedFrameDiagnostic::writeLabFrameData 1\n";
for (int i = 0; i < N_snapshots_; ++i) {
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 2\n";
+
const Real old_z_boost = snapshots_[i].current_z_boost;
snapshots_[i].updateCurrentZPositions(t_boost,
inv_gamma_boost_,
@@ -589,6 +597,7 @@ writeLabFrameData(const MultiFab* cell_centered_data,
(snapshots_[i].current_z_lab > snapshots_[i].zmax_lab) ) continue;
int i_lab = (snapshots_[i].current_z_lab - snapshots_[i].zmin_lab) / dz_lab_;
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 3\n";
if (buff_counter_[i] == 0) {
if (WarpX::do_boosted_frame_fields) {
@@ -603,6 +612,7 @@ writeLabFrameData(const MultiFab* cell_centered_data,
}
if (WarpX::do_boosted_frame_particles) particles_buffer_[i].resize(mypc.nspecies_lab_frame_diags);
}
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 4\n";
if (WarpX::do_boosted_frame_fields) {
const int ncomp = cell_centered_data->nComp();
@@ -642,11 +652,15 @@ writeLabFrameData(const MultiFab* cell_centered_data,
&ncomp, &i_boost, &i_lab);
}
}
-
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 5\n";
if (WarpX::do_boosted_frame_particles) {
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 6\n";
+
mypc.GetLabFrameData(snapshots_[i].file_name, i_lab, boost_direction_,
old_z_boost, snapshots_[i].current_z_boost,
t_boost, snapshots_[i].t_lab, dt, particles_buffer_[i]);
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 7\n";
+
}
@@ -667,7 +681,11 @@ writeLabFrameData(const MultiFab* cell_centered_data,
}
if (WarpX::do_boosted_frame_particles) {
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 8\n";
+
for (int j = 0; j < mypc.nspecies_lab_frame_diags; ++j) {
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 9\n";
+
const std::string species_name = species_names[mypc.map_species_lab_diags[j]];
#ifdef WARPX_USE_HDF5
writeParticleDataHDF5(particles_buffer_[i][j],
@@ -675,9 +693,14 @@ writeLabFrameData(const MultiFab* cell_centered_data,
species_name);
#else
std::stringstream part_ss;
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 10\n";
+
part_ss << snapshots_[i].file_name + "/" + species_name + "/";
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 11\n";
+
writeParticleData(particles_buffer_[i][j], part_ss.str(), i_lab);
#endif
+ std::cout<<"in BoostedFrameDiagnostic::writeLabFrameData 12\n";
}
particles_buffer_[i].clear();
}
@@ -860,9 +883,12 @@ LabSnapShot(Real t_lab_in, Real t_boost, Real zmin_lab_in,
if (WarpX::do_boosted_frame_particles){
auto & mypc = WarpX::GetInstance().GetPartContainer();
const std::vector<std::string> species_names = mypc.GetSpeciesNames();
- for (int j = 0; j < mypc.nSpecies(); ++j)
+ // for (int j = 0; j < mypc.nSpecies(); ++j)
+ for (int j = 0; j < mypc.nspecies_lab_frame_diags; ++j)
{
- std::string species_name = species_names[mypc.map_species_lab_diags[j]];
+ int js = mypc.map_species_lab_diags[j];
+ std::cout<<"js "<<js<<'\n';
+ std::string species_name = species_names[js];
output_create_species_group(file_name, species_name);
for (int k = 0; k < static_cast<int>(particle_field_names.size()); ++k)
{
@@ -886,11 +912,13 @@ LabSnapShot(Real t_lab_in, Real t_boost, Real zmin_lab_in,
auto & mypc = WarpX::GetInstance().GetPartContainer();
const std::vector<std::string> species_names = mypc.GetSpeciesNames();
- int nspecies = mypc.nSpecies();
+// int nspecies = mypc.nSpecies();
const std::string particles_prefix = "particle";
- for(int i = 0; i < nspecies; ++i) {
- std::string species_name = species_names[mypc.map_species_lab_diags[i]];
+// for(int i = 0; i < nspecies; ++i) {
+ for(int i = 0; i < mypc.nspecies_lab_frame_diags; ++i) {
+ int is = mypc.map_species_lab_diags[i];
+ std::string species_name = species_names[is];
const std::string fullpath = file_name + "/" + species_name;
if (!UtilCreateDirectory(fullpath, 0755))
CreateDirectoryFailed(fullpath);
diff --git a/Source/Particles/MultiParticleContainer.cpp b/Source/Particles/MultiParticleContainer.cpp
index bde8d244e..4726cb4cf 100644
--- a/Source/Particles/MultiParticleContainer.cpp
+++ b/Source/Particles/MultiParticleContainer.cpp
@@ -40,8 +40,8 @@ MultiParticleContainer::MultiParticleContainer (AmrCore* amr_core)
auto& pc = allcontainers[i];
if (pc->do_boosted_frame_diags){
map_species_lab_diags[nspecies_lab_frame_diags] = i;
- nspecies_lab_frame_diags += 1;
do_boosted_frame_diags = 1;
+ nspecies_lab_frame_diags += 1;
}
}
@@ -389,12 +389,16 @@ MultiParticleContainer
{
BL_PROFILE("MultiParticleContainer::GetLabFrameData");
+ std::cout<<"GetLabFrameData 1\n";
// Loop over particle species
- for (int i = 0; i < nspecies; ++i){
- WarpXParticleContainer* pc = allcontainers[i].get();
+ for (int i = 0; i < nspecies_lab_frame_diags; ++i){
+ int isp = map_species_lab_diags[i];
+std::cout<<"GetLabFrameData 2\n";
+ WarpXParticleContainer* pc = allcontainers[isp].get();
WarpXParticleContainer::DiagnosticParticles diagnostic_particles;
pc->GetParticleSlice(direction, z_old, z_new, t_boost, t_lab, dt, diagnostic_particles);
+std::cout<<"GetLabFrameData 3\n";
// Here, diagnostic_particles[lev][index] is a WarpXParticleContainer::DiagnosticParticleData
// where "lev" is the AMR level and "index" is a [grid index][tile index] pair.
@@ -404,13 +408,16 @@ MultiParticleContainer
// and Fills parts[species number i] with particle data from all grids and
// tiles in diagnostic_particles. parts contains particles from all
// AMR levels indistinctly.
+std::cout<<"GetLabFrameData 4\n";
for (auto it = diagnostic_particles[lev].begin(); it != diagnostic_particles[lev].end(); ++it){
// it->first is the [grid index][tile index] key
// it->second is the corresponding
// WarpXParticleContainer::DiagnosticParticleData value
+std::cout<<"GetLabFrameData 5\n";
parts[i].GetRealData(DiagIdx::w).insert( parts[i].GetRealData(DiagIdx::w ).end(),
it->second.GetRealData(DiagIdx::w ).begin(),
it->second.GetRealData(DiagIdx::w ).end());
+std::cout<<"GetLabFrameData 6\n";
parts[i].GetRealData(DiagIdx::x).insert( parts[i].GetRealData(DiagIdx::x ).end(),
it->second.GetRealData(DiagIdx::x ).begin(),
diff --git a/Source/Particles/WarpXParticleContainer.H b/Source/Particles/WarpXParticleContainer.H
index 600061e8d..d1e25f3ad 100644
--- a/Source/Particles/WarpXParticleContainer.H
+++ b/Source/Particles/WarpXParticleContainer.H
@@ -271,7 +271,7 @@ protected:
// support all features allowed by direct injection.
int do_continuous_injection = 0;
- int do_boosted_frame_diags = 0;
+ int do_boosted_frame_diags = 1;
amrex::Vector<amrex::FArrayBox> local_rho;
amrex::Vector<amrex::FArrayBox> local_jx;