diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/Diagnostics/BoostedFrameDiagnostic.cpp | 44 | ||||
-rw-r--r-- | Source/Particles/MultiParticleContainer.cpp | 13 | ||||
-rw-r--r-- | Source/Particles/WarpXParticleContainer.H | 2 |
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; |