From 7d51f86d1d0338703cc8bb3acd0bccf3503a2210 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 6 May 2024 08:25:25 -0700 Subject: [PATCH 1/6] Diagnostics: Warn w/o Positions If a user specifies `..variables` without including particle position arguments we now warn. --- Docs/source/usage/parameters.rst | 5 +++-- .../Diagnostics/ParticleDiag/ParticleDiag.cpp | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Docs/source/usage/parameters.rst b/Docs/source/usage/parameters.rst index 5f97730e880..40c16a06df5 100644 --- a/Docs/source/usage/parameters.rst +++ b/Docs/source/usage/parameters.rst @@ -2689,10 +2689,11 @@ In-situ capabilities can be used by turning on Sensei or Ascent (provided they a * ``..variables`` (list of `strings` separated by spaces, optional) List of particle quantities to write to output. - Choices are ``w`` for the particle weight and ``ux`` ``uy`` ``uz`` for the particle momenta. + Choices are ``x``, ``y``, ``z`` for the particle positions (3D and RZ), ``x`` & ``z`` in 2D, ``z`` in 1D, + ``w`` for the particle weight and ``ux``, ``uy``, ``uz`` for the particle momenta. When using the lab-frame electrostatic solver, ``phi`` (electrostatic potential, on the macroparticles) is also available. By default, all particle quantities (except ``phi``) are written. - If ``..variables = none``, no particle data are written, except for particle positions, which are always included. + If ``..variables = none``, no particle data are written. * ``..random_fraction`` (`float`) optional If provided ``..random_fraction = a``, only `a` fraction of the particle data of this species will be dumped randomly in diag ````, i.e. if `rand() < a`, this particle will be dumped, where `rand()` denotes a random number generator. diff --git a/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp b/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp index 7ed64ccf8ec..17f739dbda0 100644 --- a/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp +++ b/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp @@ -6,6 +6,8 @@ #include "Utils/TextMsg.H" #include "WarpX.H" +#include + #include #include @@ -13,7 +15,7 @@ using namespace amrex; -ParticleDiag::ParticleDiag( +ParticleDiag::ParticleDiag ( const std::string& diag_name, const std::string& name, WarpXParticleContainer* pc, PinnedMemoryParticleContainer* pinned_pc): m_diag_name(diag_name), m_name(name), m_pc(pc), m_pinned_pc(pinned_pc) @@ -28,10 +30,11 @@ ParticleDiag::ParticleDiag( amrex::Vector variables; const int variables_specified = pp_diag_name_species_name.queryarr("variables", variables); - if (variables_specified){ + if (variables_specified) { // If only specific variables have been specified, fill m_plot_flags with zero and only set // requested variables to one std::fill(m_plot_flags.begin(), m_plot_flags.end(), 0); + bool contains_positions = false; if (variables[0] != "none"){ const std::map existing_variable_names = pc->getParticleComps(); for (const auto& var : variables){ @@ -47,9 +50,20 @@ ParticleDiag::ParticleDiag( "variables argument '" + var +"' is not an existing attribute for this species"); m_plot_flags[existing_variable_names.at(var)] = 1; + + if (var == "x" || var == "y" || var == "z") + contains_positions = true; } } } + + if (!contains_positions) { + ablastr::warn_manager::WMRecordWarning( + "Diagnostics", + diag_name + "." + name + ".variables contains no particle positions!", + ablastr::warn_manager::WarnPriority::high + ); + } } #ifdef WARPX_DIM_RZ From cc28d203b4aa832c02a76fdb3d619d58781f442f Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 6 May 2024 08:40:38 -0700 Subject: [PATCH 2/6] openPMD: Skip 0-positions for deselected comps --- Source/Diagnostics/WarpXOpenPMD.H | 6 ++- Source/Diagnostics/WarpXOpenPMD.cpp | 67 +++++++++++++++-------------- 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/Source/Diagnostics/WarpXOpenPMD.H b/Source/Diagnostics/WarpXOpenPMD.H index 12aa46de058..99d6e0682ab 100644 --- a/Source/Diagnostics/WarpXOpenPMD.H +++ b/Source/Diagnostics/WarpXOpenPMD.H @@ -218,11 +218,13 @@ private: /** This function sets up the entries for storing the particle positions and global IDs * * @param[in] currSpecies Corresponding openPMD species + * @param[in] positionComponents user-selected components of the particle position * @param[in] np Number of particles * @param[in] isBTD Is this a back-transformed diagnostics output? */ void SetupPos ( openPMD::ParticleSpecies& currSpecies, + std::vector const & positionComponents, const unsigned long long& np, bool isBTD = false); @@ -231,12 +233,14 @@ private: * Sets the entries for storing particle position offset, constant records (charge, mass) and ED-PIC attributes. * * @param[in] currSpecies Corresponding openPMD species + * @param[in] positionComponents user-selected components of the particle position * @param[in] np Number of particles * @param[in] charge Charge of the particles (note: fix for ions) * @param[in] mass Mass of the particles */ void SetConstParticleRecordsEDPIC ( openPMD::ParticleSpecies& currSpecies, + std::vector const & positionComponents, const unsigned long long& np, amrex::ParticleReal charge, amrex::ParticleReal mass); @@ -284,8 +288,8 @@ private: * @param[in] name species name * @param[in] iteration timestep * @param[in] write_real_comp The real attribute ids, from WarpX - * @param[in] real_comp_names The real attribute names, from WarpX * @param[in] write_int_comp The int attribute ids, from WarpX + * @param[in] real_comp_names The real attribute names, from WarpX * @param[in] int_comp_names The int attribute names, from WarpX * @param[in] charge Charge of the particles (note: fix for ions) * @param[in] mass Mass of the particles diff --git a/Source/Diagnostics/WarpXOpenPMD.cpp b/Source/Diagnostics/WarpXOpenPMD.cpp index 965eb82b31e..848b6818865 100644 --- a/Source/Diagnostics/WarpXOpenPMD.cpp +++ b/Source/Diagnostics/WarpXOpenPMD.cpp @@ -213,32 +213,29 @@ namespace detail return make_pair(record_name, component_name); } - /** Return the component labels for particle positions + /** Return the user-selected components for particle positions + * + * @param[in] write_real_comp The real attribute ids, from WarpX + * @param[in] real_comp_names The real attribute names, from WarpX */ inline std::vector< std::string > - getParticlePositionComponentLabels (bool ignore_dims=false) + getParticlePositionComponentLabels ( + amrex::Vector const & write_real_comp, + amrex::Vector const & real_comp_names) { - using vs = std::vector< std::string >; - auto positionComponents = vs{"x", "y", "z"}; - if (!ignore_dims) { -#if defined(WARPX_DIM_1D_Z) - positionComponents = vs{"z"}; -#elif defined(WARPX_DIM_XZ) - positionComponents = vs{"x", "z"}; -#elif defined(WARPX_DIM_RZ) - // note: although we internally store particle positions - // for AMReX in r,z and a theta attribute, we - // actually need them for algorithms (e.g. push) - // and I/O in Cartesian. - // Other attributes like momentum are consequently - // stored in x,y,z internally. - positionComponents = vs{"x", "y", "z"}; -#elif defined(WARPX_DIM_3D) - positionComponents = vs{"x", "y", "z"}; -#else -# error Unknown WarpX dimensionality. -#endif + std::vector< std::string > positionComponents; + + int idx = 0; + for (auto const & comp : real_comp_names ) { + if (write_real_comp[idx]) { + if (comp == "position_x" || comp == "position_y" || comp == "position_z") { + std::string const last_letter{comp.back()}; + positionComponents.push_back(last_letter); + } + } + idx++; } + return positionComponents; } @@ -705,16 +702,18 @@ WarpXOpenPMDPlot::DumpToFile (ParticleContainer* pc, doParticleSetup = is_first_flush_with_particles || is_last_flush_and_never_particles; } + auto const positionComponents = detail::getParticlePositionComponentLabels(write_real_comp, real_comp_names); + // this setup stage also implicitly calls "makeEmpty" if needed (i.e., is_last_flush_and_never_particles) // for BTD, we call this multiple times as we may resize in subsequent dumps if number of particles in the buffer > 0 if (doParticleSetup || is_resizing_flush) { - SetupPos(currSpecies, NewParticleVectorSize, isBTD); + SetupPos(currSpecies, positionComponents, NewParticleVectorSize, isBTD); SetupRealProperties(pc, currSpecies, write_real_comp, real_comp_names, write_int_comp, int_comp_names, NewParticleVectorSize, isBTD); } if (is_last_flush_to_step) { - SetConstParticleRecordsEDPIC(currSpecies, NewParticleVectorSize, charge, mass); + SetConstParticleRecordsEDPIC(currSpecies, positionComponents, NewParticleVectorSize, charge, mass); } // open files from all processors, in case some will not contribute below @@ -978,6 +977,7 @@ WarpXOpenPMDPlot::SaveRealProperty (ParticleIter& pti, void WarpXOpenPMDPlot::SetupPos ( openPMD::ParticleSpecies& currSpecies, + std::vector const & positionComponents, const unsigned long long& np, bool const isBTD) { @@ -986,7 +986,6 @@ WarpXOpenPMDPlot::SetupPos ( auto realType = openPMD::Dataset(openPMD::determineDatatype(), {np}, options); auto idType = openPMD::Dataset(openPMD::determineDatatype< uint64_t >(), {np}, options); - auto const positionComponents = detail::getParticlePositionComponentLabels(); for( auto const& comp : positionComponents ) { currSpecies["position"][comp].resetDataset( realType ); } @@ -998,6 +997,7 @@ WarpXOpenPMDPlot::SetupPos ( void WarpXOpenPMDPlot::SetConstParticleRecordsEDPIC ( openPMD::ParticleSpecies& currSpecies, + std::vector const & positionComponents, const unsigned long long& np, amrex::ParticleReal const charge, amrex::ParticleReal const mass) @@ -1006,7 +1006,6 @@ WarpXOpenPMDPlot::SetConstParticleRecordsEDPIC ( const auto *const scalar = openPMD::RecordComponent::SCALAR; // define record shape to be number of particles - auto const positionComponents = detail::getParticlePositionComponentLabels(true); for( auto const& comp : positionComponents ) { currSpecies["positionOffset"][comp].resetDataset( realType ); } @@ -1037,16 +1036,20 @@ WarpXOpenPMDPlot::SetConstParticleRecordsEDPIC ( #endif // meta data - currSpecies["position"].setUnitDimension( detail::getUnitDimension("position") ); - currSpecies["positionOffset"].setUnitDimension( detail::getUnitDimension("positionOffset") ); + if (!positionComponents.empty()) { + currSpecies["position"].setUnitDimension( detail::getUnitDimension("position") ); + currSpecies["positionOffset"].setUnitDimension( detail::getUnitDimension("positionOffset") ); + } currSpecies["charge"].setUnitDimension( detail::getUnitDimension("charge") ); currSpecies["mass"].setUnitDimension( detail::getUnitDimension("mass") ); // meta data for ED-PIC extension - currSpecies["position"].setAttribute( "macroWeighted", 0u ); - currSpecies["position"].setAttribute( "weightingPower", 0.0 ); - currSpecies["positionOffset"].setAttribute( "macroWeighted", 0u ); - currSpecies["positionOffset"].setAttribute( "weightingPower", 0.0 ); + if (!positionComponents.empty()) { + currSpecies["position"].setAttribute( "macroWeighted", 0u ); + currSpecies["position"].setAttribute( "weightingPower", 0.0 ); + currSpecies["positionOffset"].setAttribute( "macroWeighted", 0u ); + currSpecies["positionOffset"].setAttribute( "weightingPower", 0.0 ); + } currSpecies["id"].setAttribute( "macroWeighted", 0u ); currSpecies["id"].setAttribute( "weightingPower", 0.0 ); currSpecies["charge"].setAttribute( "macroWeighted", 0u ); From e848d8c51fb7bae4da6d8171b3144826da933f4b Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 7 May 2024 16:17:40 -0700 Subject: [PATCH 3/6] Clang-Tidy: Braces --- Source/Diagnostics/ParticleDiag/ParticleDiag.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp b/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp index 17f739dbda0..140122b5573 100644 --- a/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp +++ b/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp @@ -51,8 +51,9 @@ ParticleDiag::ParticleDiag ( +"' is not an existing attribute for this species"); m_plot_flags[existing_variable_names.at(var)] = 1; - if (var == "x" || var == "y" || var == "z") + if (var == "x" || var == "y" || var == "z") { contains_positions = true; + } } } } From 20758253722300a270f527f63c40a0b3d3a50b09 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 7 May 2024 18:16:25 -0700 Subject: [PATCH 4/6] Update Examples --- .../laser_acceleration/inputs_rz | 4 +- .../uniform_plasma/inputs_3d | 2 +- Examples/Tests/Implicit/inputs_1d | 4 +- .../Tests/Implicit/inputs_1d_semiimplicit | 4 +- Examples/Tests/Implicit/inputs_vandb_2d | 4 +- Examples/Tests/electrostatic_sphere/inputs_rz | 2 +- Examples/Tests/langmuir/inputs_3d | 4 +- Examples/Tests/photon_pusher/inputs_3d | 32 +++++++-------- Examples/Tests/plasma_lens/inputs_3d | 2 +- Examples/Tests/plasma_lens/inputs_boosted_3d | 2 +- Examples/Tests/plasma_lens/inputs_lattice_3d | 2 +- Examples/Tests/plasma_lens/inputs_short_3d | 2 +- Examples/Tests/qed/breit_wheeler/inputs_2d | 28 ++++++------- Examples/Tests/qed/breit_wheeler/inputs_3d | 28 ++++++------- .../Tests/qed/quantum_synchrotron/inputs_2d | 18 ++++----- .../Tests/qed/quantum_synchrotron/inputs_3d | 18 ++++----- Regression/WarpX-tests.ini | 40 +++++++++---------- 17 files changed, 98 insertions(+), 98 deletions(-) diff --git a/Examples/Physics_applications/laser_acceleration/inputs_rz b/Examples/Physics_applications/laser_acceleration/inputs_rz index 7365523b574..b61ed6f83ec 100644 --- a/Examples/Physics_applications/laser_acceleration/inputs_rz +++ b/Examples/Physics_applications/laser_acceleration/inputs_rz @@ -89,5 +89,5 @@ diagnostics.diags_names = diag1 diag1.intervals = 10 diag1.diag_type = Full diag1.fields_to_plot = Er Et Ez Br Bt Bz jr jt jz rho -diag1.electrons.variables = w ux uy uz orig_x orig_z -diag1.beam.variables = w ux uy uz +diag1.electrons.variables = x y z w ux uy uz orig_x orig_z +diag1.beam.variables = x y z w ux uy uz diff --git a/Examples/Physics_applications/uniform_plasma/inputs_3d b/Examples/Physics_applications/uniform_plasma/inputs_3d index b0275f6eed6..83310088176 100644 --- a/Examples/Physics_applications/uniform_plasma/inputs_3d +++ b/Examples/Physics_applications/uniform_plasma/inputs_3d @@ -45,7 +45,7 @@ electrons.uz_th = 0.01 # uth the std of the (unitless) momentum diagnostics.diags_names = diag1 chk diag1.intervals = 4 diag1.diag_type = Full -diag1.electrons.variables = ux uy uz w +diag1.electrons.variables = x y z ux uy uz w diag1.fields_to_plot = Bx By Bz Ex Ey Ez jx jy jz rho chk.intervals = 6 diff --git a/Examples/Tests/Implicit/inputs_1d b/Examples/Tests/Implicit/inputs_1d index 50d28a2db75..465d9dd6965 100644 --- a/Examples/Tests/Implicit/inputs_1d +++ b/Examples/Tests/Implicit/inputs_1d @@ -71,8 +71,8 @@ diagnostics.diags_names = diag1 diag1.intervals = 100 diag1.diag_type = Full diag1.fields_to_plot = Ex Ey Ez Bx By Bz jx jy jz rho divE -diag1.electrons.variables = w ux uy uz -diag1.protons.variables = w ux uy uz +diag1.electrons.variables = z w ux uy uz +diag1.protons.variables = z w ux uy uz warpx.reduced_diags_names = particle_energy field_energy particle_energy.type = ParticleEnergy diff --git a/Examples/Tests/Implicit/inputs_1d_semiimplicit b/Examples/Tests/Implicit/inputs_1d_semiimplicit index 2271a0bb1bc..4008a559588 100644 --- a/Examples/Tests/Implicit/inputs_1d_semiimplicit +++ b/Examples/Tests/Implicit/inputs_1d_semiimplicit @@ -71,8 +71,8 @@ diagnostics.diags_names = diag1 diag1.intervals = 100 diag1.diag_type = Full diag1.fields_to_plot = Ex Ey Ez Bx By Bz jx jy jz rho divE -diag1.electrons.variables = w ux uy uz -diag1.protons.variables = w ux uy uz +diag1.electrons.variables = z w ux uy uz +diag1.protons.variables = z w ux uy uz warpx.reduced_diags_names = particle_energy field_energy particle_energy.type = ParticleEnergy diff --git a/Examples/Tests/Implicit/inputs_vandb_2d b/Examples/Tests/Implicit/inputs_vandb_2d index 2dc57323efe..33ce964710a 100644 --- a/Examples/Tests/Implicit/inputs_vandb_2d +++ b/Examples/Tests/Implicit/inputs_vandb_2d @@ -82,8 +82,8 @@ diagnostics.diags_names = diag1 diag1.intervals = 20 diag1.diag_type = Full diag1.fields_to_plot = Ex Ey Ez Bx By Bz jx jy jz rho divE -diag1.electrons.variables = w ux uy uz -diag1.protons.variables = w ux uy uz +diag1.electrons.variables = x z w ux uy uz +diag1.protons.variables = x z w ux uy uz warpx.reduced_diags_names = particle_energy field_energy particle_energy.type = ParticleEnergy diff --git a/Examples/Tests/electrostatic_sphere/inputs_rz b/Examples/Tests/electrostatic_sphere/inputs_rz index 26d8b0c7afc..2b6151e6d8c 100644 --- a/Examples/Tests/electrostatic_sphere/inputs_rz +++ b/Examples/Tests/electrostatic_sphere/inputs_rz @@ -39,5 +39,5 @@ diag1.fields_to_plot = Er Et Ez rho diag2.intervals = 30 diag2.diag_type = Full diag2.fields_to_plot = none -diag2.electron.variables = ux uy uz w phi +diag2.electron.variables = x y z ux uy uz w phi diag2.format = openpmd diff --git a/Examples/Tests/langmuir/inputs_3d b/Examples/Tests/langmuir/inputs_3d index 432b4788171..604ed9bc514 100644 --- a/Examples/Tests/langmuir/inputs_3d +++ b/Examples/Tests/langmuir/inputs_3d @@ -93,5 +93,5 @@ diagnostics.diags_names = diag1 diag1.intervals = max_step diag1.diag_type = Full diag1.fields_to_plot = Ex Ey Ez Bx By Bz jx jy jz part_per_cell rho -diag1.electrons.variables = w ux -diag1.positrons.variables = uz +diag1.electrons.variables = x y z w ux +diag1.positrons.variables = x y z uz diff --git a/Examples/Tests/photon_pusher/inputs_3d b/Examples/Tests/photon_pusher/inputs_3d index e2c75981e0e..3977a187e1b 100644 --- a/Examples/Tests/photon_pusher/inputs_3d +++ b/Examples/Tests/photon_pusher/inputs_3d @@ -140,19 +140,19 @@ p_dn_10.single_particle_weight = 1.0 diagnostics.diags_names = diag1 diag1.intervals = 50 diag1.diag_type = Full -diag1.p_xp_1.variables = ux uy uz -diag1.p_xn_1.variables = ux uy uz -diag1.p_yp_1.variables = ux uy uz -diag1.p_yn_1.variables = ux uy uz -diag1.p_zp_1.variables = ux uy uz -diag1.p_zn_1.variables = ux uy uz -diag1.p_dp_1.variables = ux uy uz -diag1.p_dn_1.variables = ux uy uz -diag1.p_xp_10.variables = ux uy uz -diag1.p_xn_10.variables = ux uy uz -diag1.p_yp_10.variables = ux uy uz -diag1.p_yn_10.variables = ux uy uz -diag1.p_zp_10.variables = ux uy uz -diag1.p_zn_10.variables = ux uy uz -diag1.p_dp_10.variables = ux uy uz -diag1.p_dn_10.variables = ux uy uz +diag1.p_xp_1.variables = x y z ux uy uz +diag1.p_xn_1.variables = x y z ux uy uz +diag1.p_yp_1.variables = x y z ux uy uz +diag1.p_yn_1.variables = x y z ux uy uz +diag1.p_zp_1.variables = x y z ux uy uz +diag1.p_zn_1.variables = x y z ux uy uz +diag1.p_dp_1.variables = x y z ux uy uz +diag1.p_dn_1.variables = x y z ux uy uz +diag1.p_xp_10.variables = x y z ux uy uz +diag1.p_xn_10.variables = x y z ux uy uz +diag1.p_yp_10.variables = x y z ux uy uz +diag1.p_yn_10.variables = x y z ux uy uz +diag1.p_zp_10.variables = x y z ux uy uz +diag1.p_zn_10.variables = x y z ux uy uz +diag1.p_dp_10.variables = x y z ux uy uz +diag1.p_dn_10.variables = x y z ux uy uz diff --git a/Examples/Tests/plasma_lens/inputs_3d b/Examples/Tests/plasma_lens/inputs_3d index 7763013adb1..a87c1eb7f44 100644 --- a/Examples/Tests/plasma_lens/inputs_3d +++ b/Examples/Tests/plasma_lens/inputs_3d @@ -48,4 +48,4 @@ particles.repeated_plasma_lens_strengths_B = 0.0 0.0 0.0 0.0 diagnostics.diags_names = diag1 diag1.intervals = 84 diag1.diag_type = Full -diag1.electrons.variables = ux uy uz +diag1.electrons.variables = x y z ux uy uz diff --git a/Examples/Tests/plasma_lens/inputs_boosted_3d b/Examples/Tests/plasma_lens/inputs_boosted_3d index ecdf3b3baec..fa18ac439c4 100644 --- a/Examples/Tests/plasma_lens/inputs_boosted_3d +++ b/Examples/Tests/plasma_lens/inputs_boosted_3d @@ -50,4 +50,4 @@ particles.repeated_plasma_lens_strengths_B = 0.0 0.0 0.0 0.0 diagnostics.diags_names = diag1 diag1.intervals = 84 diag1.diag_type = Full -diag1.electrons.variables = ux uy uz +diag1.electrons.variables = x y z ux uy uz diff --git a/Examples/Tests/plasma_lens/inputs_lattice_3d b/Examples/Tests/plasma_lens/inputs_lattice_3d index a41ca8baee9..94e57de8290 100644 --- a/Examples/Tests/plasma_lens/inputs_lattice_3d +++ b/Examples/Tests/plasma_lens/inputs_lattice_3d @@ -70,4 +70,4 @@ plasmalens4.dEdx = 200000. diagnostics.diags_names = diag1 diag1.intervals = 84 diag1.diag_type = Full -diag1.electrons.variables = ux uy uz +diag1.electrons.variables = x y z ux uy uz diff --git a/Examples/Tests/plasma_lens/inputs_short_3d b/Examples/Tests/plasma_lens/inputs_short_3d index 8fa111df3c9..5c91ab26498 100644 --- a/Examples/Tests/plasma_lens/inputs_short_3d +++ b/Examples/Tests/plasma_lens/inputs_short_3d @@ -52,4 +52,4 @@ particles.repeated_plasma_lens_strengths_B = 0.0 0.0 0.0 0.0 diagnostics.diags_names = diag1 diag1.intervals = 1 #84 diag1.diag_type = Full -diag1.electrons.variables = ux uy uz +diag1.electrons.variables = x y z ux uy uz diff --git a/Examples/Tests/qed/breit_wheeler/inputs_2d b/Examples/Tests/qed/breit_wheeler/inputs_2d index 7f507dd08d7..857b3243ac6 100644 --- a/Examples/Tests/qed/breit_wheeler/inputs_2d +++ b/Examples/Tests/qed/breit_wheeler/inputs_2d @@ -201,19 +201,19 @@ diagnostics.diags_names = diag1 diag1.intervals = 2 diag1.diag_type = Full diag1.fields_to_plot = Ex -diag1.p1.variables = ux uy uz w opticalDepthBW -diag1.p2.variables = ux uy uz w opticalDepthBW -diag1.p3.variables = ux uy uz w opticalDepthBW -diag1.p4.variables = ux uy uz w opticalDepthBW - -diag1.ele1.variables = ux uy uz w opticalDepthQSR -diag1.ele2.variables = ux uy uz w opticalDepthQSR -diag1.ele3.variables = ux uy uz w opticalDepthQSR -diag1.ele4.variables = ux uy uz w opticalDepthQSR - -diag1.pos1.variables = ux uy uz w opticalDepthQSR -diag1.pos2.variables = ux uy uz w opticalDepthQSR -diag1.pos3.variables = ux uy uz w opticalDepthQSR -diag1.pos4.variables = ux uy uz w opticalDepthQSR +diag1.p1.variables = x z ux uy uz w opticalDepthBW +diag1.p2.variables = x z ux uy uz w opticalDepthBW +diag1.p3.variables = x z ux uy uz w opticalDepthBW +diag1.p4.variables = x z ux uy uz w opticalDepthBW + +diag1.ele1.variables = x z ux uy uz w opticalDepthQSR +diag1.ele2.variables = x z ux uy uz w opticalDepthQSR +diag1.ele3.variables = x z ux uy uz w opticalDepthQSR +diag1.ele4.variables = x z ux uy uz w opticalDepthQSR + +diag1.pos1.variables = x z ux uy uz w opticalDepthQSR +diag1.pos2.variables = x z ux uy uz w opticalDepthQSR +diag1.pos3.variables = x z ux uy uz w opticalDepthQSR +diag1.pos4.variables = x z ux uy uz w opticalDepthQSR diag1.format = plotfile diff --git a/Examples/Tests/qed/breit_wheeler/inputs_3d b/Examples/Tests/qed/breit_wheeler/inputs_3d index 2749a60b888..b79dfd9c030 100644 --- a/Examples/Tests/qed/breit_wheeler/inputs_3d +++ b/Examples/Tests/qed/breit_wheeler/inputs_3d @@ -201,19 +201,19 @@ diagnostics.diags_names = diag1 diag1.intervals = 2 diag1.diag_type = Full diag1.fields_to_plot = Ex -diag1.p1.variables = ux uy uz w opticalDepthBW -diag1.p2.variables = ux uy uz w opticalDepthBW -diag1.p3.variables = ux uy uz w opticalDepthBW -diag1.p4.variables = ux uy uz w opticalDepthBW - -diag1.ele1.variables = ux uy uz w opticalDepthQSR -diag1.ele2.variables = ux uy uz w opticalDepthQSR -diag1.ele3.variables = ux uy uz w opticalDepthQSR -diag1.ele4.variables = ux uy uz w opticalDepthQSR - -diag1.pos1.variables = ux uy uz w opticalDepthQSR -diag1.pos2.variables = ux uy uz w opticalDepthQSR -diag1.pos3.variables = ux uy uz w opticalDepthQSR -diag1.pos4.variables = ux uy uz w opticalDepthQSR +diag1.p1.variables = x y z ux uy uz w opticalDepthBW +diag1.p2.variables = x y z ux uy uz w opticalDepthBW +diag1.p3.variables = x y z ux uy uz w opticalDepthBW +diag1.p4.variables = x y z ux uy uz w opticalDepthBW + +diag1.ele1.variables = x y z ux uy uz w opticalDepthQSR +diag1.ele2.variables = x y z ux uy uz w opticalDepthQSR +diag1.ele3.variables = x y z ux uy uz w opticalDepthQSR +diag1.ele4.variables = x y z ux uy uz w opticalDepthQSR + +diag1.pos1.variables = x y z ux uy uz w opticalDepthQSR +diag1.pos2.variables = x y z ux uy uz w opticalDepthQSR +diag1.pos3.variables = x y z ux uy uz w opticalDepthQSR +diag1.pos4.variables = x y z ux uy uz w opticalDepthQSR diag1.format = plotfile diff --git a/Examples/Tests/qed/quantum_synchrotron/inputs_2d b/Examples/Tests/qed/quantum_synchrotron/inputs_2d index 2fc00231280..2ac2c782ccd 100644 --- a/Examples/Tests/qed/quantum_synchrotron/inputs_2d +++ b/Examples/Tests/qed/quantum_synchrotron/inputs_2d @@ -178,12 +178,12 @@ diagnostics.diags_names = diag1 diag1.intervals = 2 diag1.diag_type = Full diag1.fields_to_plot = Ex -diag1.p1.variables = ux uy uz w opticalDepthQSR -diag1.p2.variables = ux uy uz w opticalDepthQSR -diag1.p3.variables = ux uy uz w opticalDepthQSR -diag1.p4.variables = ux uy uz w opticalDepthQSR - -diag1.qsp_1.variables = ux uy uz w opticalDepthBW -diag1.qsp_2.variables = ux uy uz w opticalDepthBW -diag1.qsp_3.variables = ux uy uz w opticalDepthBW -diag1.qsp_4.variables = ux uy uz w opticalDepthBW +diag1.p1.variables = x z ux uy uz w opticalDepthQSR +diag1.p2.variables = x z ux uy uz w opticalDepthQSR +diag1.p3.variables = x z ux uy uz w opticalDepthQSR +diag1.p4.variables = x z ux uy uz w opticalDepthQSR + +diag1.qsp_1.variables = x z ux uy uz w opticalDepthBW +diag1.qsp_2.variables = x z ux uy uz w opticalDepthBW +diag1.qsp_3.variables = x z ux uy uz w opticalDepthBW +diag1.qsp_4.variables = x z ux uy uz w opticalDepthBW diff --git a/Examples/Tests/qed/quantum_synchrotron/inputs_3d b/Examples/Tests/qed/quantum_synchrotron/inputs_3d index 9bc963f7e94..429666ef938 100644 --- a/Examples/Tests/qed/quantum_synchrotron/inputs_3d +++ b/Examples/Tests/qed/quantum_synchrotron/inputs_3d @@ -178,12 +178,12 @@ diagnostics.diags_names = diag1 diag1.intervals = 2 diag1.diag_type = Full diag1.fields_to_plot = Ex -diag1.p1.variables = ux uy uz w opticalDepthQSR -diag1.p2.variables = ux uy uz w opticalDepthQSR -diag1.p3.variables = ux uy uz w opticalDepthQSR -diag1.p4.variables = ux uy uz w opticalDepthQSR - -diag1.qsp_1.variables = ux uy uz w opticalDepthBW -diag1.qsp_2.variables = ux uy uz w opticalDepthBW -diag1.qsp_3.variables = ux uy uz w opticalDepthBW -diag1.qsp_4.variables = ux uy uz w opticalDepthBW +diag1.p1.variables = x y z ux uy uz w opticalDepthQSR +diag1.p2.variables = x y z ux uy uz w opticalDepthQSR +diag1.p3.variables = x y z ux uy uz w opticalDepthQSR +diag1.p4.variables = x y z ux uy uz w opticalDepthQSR + +diag1.qsp_1.variables = x y z ux uy uz w opticalDepthBW +diag1.qsp_2.variables = x y z ux uy uz w opticalDepthBW +diag1.qsp_3.variables = x y z ux uy uz w opticalDepthBW +diag1.qsp_4.variables = x y z ux uy uz w opticalDepthBW diff --git a/Regression/WarpX-tests.ini b/Regression/WarpX-tests.ini index f8859ef7df5..861a1325c1b 100644 --- a/Regression/WarpX-tests.ini +++ b/Regression/WarpX-tests.ini @@ -554,7 +554,7 @@ analysisRoutine = Examples/Tests/electrostatic_sphere_eb/analysis_rz.py [ElectrostaticSphereLabFrame] buildDir = . inputFile = Examples/Tests/electrostatic_sphere/inputs_3d -runtime_params = warpx.do_electrostatic=labframe diag2.electron.variables=ux uy uz w phi +runtime_params = warpx.do_electrostatic=labframe diag2.electron.variables=x y z ux uy uz w phi dim = 3 addToCompileString = cmakeSetupOpts = -DWarpX_DIMS=3 @@ -1189,7 +1189,7 @@ analysisOutputImage = langmuir_fluid_multi_analysis.png [Langmuir_multi_1d] buildDir = . inputFile = Examples/Tests/langmuir/inputs_1d -runtime_params = algo.current_deposition=esirkepov diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz +runtime_params = algo.current_deposition=esirkepov diag1.electrons.variables=z w ux uy uz diag1.positrons.variables=z w ux uy uz dim = 1 addToCompileString = USE_OPENPMD=TRUE QED=FALSE cmakeSetupOpts = -DWarpX_DIMS=1 -DWarpX_OPENPMD=ON -DWarpX_QED=OFF @@ -1208,7 +1208,7 @@ analysisOutputImage = langmuir_multi_1d_analysis.png [Langmuir_multi_2d_MR] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver = ckc warpx.use_filter = 1 amr.max_level = 1 amr.ref_ratio = 4 warpx.fine_tag_lo = -10.e-6 -10.e-6 warpx.fine_tag_hi = 10.e-6 10.e-6 diag1.electrons.variables = w ux uy uz diag1.positrons.variables = w ux uy uz +runtime_params = algo.maxwell_solver = ckc warpx.use_filter = 1 amr.max_level = 1 amr.ref_ratio = 4 warpx.fine_tag_lo = -10.e-6 -10.e-6 warpx.fine_tag_hi = 10.e-6 10.e-6 diag1.electrons.variables = x z w ux uy uz diag1.positrons.variables = x z w ux uy uz dim = 2 addToCompileString = cmakeSetupOpts = -DWarpX_DIMS=2 @@ -1227,7 +1227,7 @@ analysisOutputImage = Langmuir_multi_2d_MR.png [Langmuir_multi_2d_MR_anisotropic] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver = ckc warpx.use_filter = 1 amr.max_level = 1 amr.ref_ratio_vect = 4 2 warpx.fine_tag_lo = -10.e-6 -10.e-6 warpx.fine_tag_hi = 10.e-6 10.e-6 diag1.electrons.variables = w ux uy uz diag1.positrons.variables = w ux uy uz +runtime_params = algo.maxwell_solver = ckc warpx.use_filter = 1 amr.max_level = 1 amr.ref_ratio_vect = 4 2 warpx.fine_tag_lo = -10.e-6 -10.e-6 warpx.fine_tag_hi = 10.e-6 10.e-6 diag1.electrons.variables = x z w ux uy uz diag1.positrons.variables = x z w ux uy uz dim = 2 addToCompileString = cmakeSetupOpts = -DWarpX_DIMS=2 @@ -1246,7 +1246,7 @@ analysisOutputImage = Langmuir_multi_2d_MR.png [Langmuir_multi_2d_MR_momentum_conserving] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver=ckc warpx.use_filter=1 amr.max_level=1 amr.ref_ratio=4 warpx.fine_tag_lo=-10.e-6 -10.e-6 warpx.fine_tag_hi=10.e-6 10.e-6 algo.field_gathering=momentum-conserving diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz +runtime_params = algo.maxwell_solver=ckc warpx.use_filter=1 amr.max_level=1 amr.ref_ratio=4 warpx.fine_tag_lo=-10.e-6 -10.e-6 warpx.fine_tag_hi=10.e-6 10.e-6 algo.field_gathering=momentum-conserving diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz dim = 2 addToCompileString = cmakeSetupOpts = -DWarpX_DIMS=2 @@ -1265,7 +1265,7 @@ analysisOutputImage = Langmuir_multi_2d_MR_momentum_conserving.png [Langmuir_multi_2d_MR_psatd] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver = psatd warpx.use_filter = 1 amr.max_level = 1 amr.ref_ratio = 4 warpx.fine_tag_lo = -10.e-6 -10.e-6 warpx.fine_tag_hi = 10.e-6 10.e-6 diag1.electrons.variables = w ux uy uz diag1.positrons.variables = w ux uy uz psatd.current_correction=0 warpx.abort_on_warning_threshold=medium +runtime_params = algo.maxwell_solver = psatd warpx.use_filter = 1 amr.max_level = 1 amr.ref_ratio = 4 warpx.fine_tag_lo = -10.e-6 -10.e-6 warpx.fine_tag_hi = 10.e-6 10.e-6 diag1.electrons.variables = x z w ux uy uz diag1.positrons.variables = x z w ux uy uz psatd.current_correction=0 warpx.abort_on_warning_threshold=medium dim = 2 addToCompileString = USE_PSATD=TRUE cmakeSetupOpts = -DWarpX_DIMS=2 -DWarpX_PSATD=ON @@ -1284,7 +1284,7 @@ analysisOutputImage = Langmuir_multi_2d_MR_psatd.png [Langmuir_multi_2d_nodal] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = warpx.grid_type=collocated algo.current_deposition=direct diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz +runtime_params = warpx.grid_type=collocated algo.current_deposition=direct diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz dim = 2 addToCompileString = cmakeSetupOpts = -DWarpX_DIMS=2 @@ -1303,7 +1303,7 @@ analysisOutputImage = langmuir_multi_2d_analysis.png [Langmuir_multi_2d_psatd] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver=psatd diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz diag1.fields_to_plot=Ex Ey Ez jx jy jz part_per_cell warpx.cfl = 0.7071067811865475 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium +runtime_params = algo.maxwell_solver=psatd diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz diag1.fields_to_plot=Ex Ey Ez jx jy jz part_per_cell warpx.cfl = 0.7071067811865475 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium dim = 2 addToCompileString = USE_PSATD=TRUE cmakeSetupOpts = -DWarpX_DIMS=2 -DWarpX_PSATD=ON @@ -1322,7 +1322,7 @@ analysisOutputImage = langmuir_multi_2d_analysis.png [Langmuir_multi_2d_psatd_current_correction] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 algo.current_deposition=esirkepov psatd.periodic_single_box_fft=1 psatd.current_correction=1 diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz diag1.fields_to_plot =Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 +runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 algo.current_deposition=esirkepov psatd.periodic_single_box_fft=1 psatd.current_correction=1 diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz diag1.fields_to_plot =Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 dim = 2 addToCompileString = USE_PSATD=TRUE cmakeSetupOpts = -DWarpX_DIMS=2 -DWarpX_PSATD=ON @@ -1341,7 +1341,7 @@ analysisOutputImage = langmuir_multi_2d_analysis.png [Langmuir_multi_2d_psatd_current_correction_nodal] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 algo.current_deposition=direct psatd.periodic_single_box_fft=1 psatd.current_correction=1 warpx.grid_type=collocated diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz diag1.fields_to_plot =Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 +runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 algo.current_deposition=direct psatd.periodic_single_box_fft=1 psatd.current_correction=1 warpx.grid_type=collocated diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz diag1.fields_to_plot =Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 dim = 2 addToCompileString = USE_PSATD=TRUE cmakeSetupOpts = -DWarpX_DIMS=2 -DWarpX_PSATD=ON @@ -1360,7 +1360,7 @@ analysisOutputImage = langmuir_multi_2d_analysis.png [Langmuir_multi_2d_psatd_momentum_conserving] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver=psatd algo.field_gathering=momentum-conserving diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz diag1.fields_to_plot=Ex Ey Ez jx jy jz part_per_cell warpx.cfl = 0.7071067811865475 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium +runtime_params = algo.maxwell_solver=psatd algo.field_gathering=momentum-conserving diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz diag1.fields_to_plot=Ex Ey Ez jx jy jz part_per_cell warpx.cfl = 0.7071067811865475 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium dim = 2 addToCompileString = USE_PSATD=TRUE cmakeSetupOpts = -DWarpX_DIMS=2 -DWarpX_PSATD=ON @@ -1417,7 +1417,7 @@ analysisOutputImage = Langmuir_multi_2d_psatd_multiJ_nodal.png [Langmuir_multi_2d_psatd_nodal] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver=psatd warpx.grid_type=collocated algo.current_deposition=direct diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz diag1.fields_to_plot=Ex Ey Ez jx jy jz part_per_cell warpx.cfl = 0.7071067811865475 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium +runtime_params = algo.maxwell_solver=psatd warpx.grid_type=collocated algo.current_deposition=direct diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz diag1.fields_to_plot=Ex Ey Ez jx jy jz part_per_cell warpx.cfl = 0.7071067811865475 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium dim = 2 addToCompileString = USE_PSATD=TRUE cmakeSetupOpts = -DWarpX_DIMS=2 -DWarpX_PSATD=ON @@ -1436,7 +1436,7 @@ analysisOutputImage = langmuir_multi_2d_analysis.png [Langmuir_multi_2d_psatd_Vay_deposition] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 algo.current_deposition=vay diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz diag1.fields_to_plot = Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 +runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 algo.current_deposition=vay diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz diag1.fields_to_plot = Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 dim = 2 addToCompileString = USE_PSATD=TRUE cmakeSetupOpts = -DWarpX_DIMS=2 -DWarpX_PSATD=ON @@ -1455,7 +1455,7 @@ analysisOutputImage = langmuir_multi_2d_analysis.png [Langmuir_multi_2d_psatd_Vay_deposition_particle_shape_4] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 algo.current_deposition=vay diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz diag1.fields_to_plot = Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 algo.particle_shape=4 +runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 algo.current_deposition=vay diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz diag1.fields_to_plot = Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 algo.particle_shape=4 dim = 2 addToCompileString = USE_PSATD=TRUE cmakeSetupOpts = -DWarpX_DIMS=2 -DWarpX_PSATD=ON @@ -1474,7 +1474,7 @@ analysisOutputImage = langmuir_multi_2d_analysis.png [Langmuir_multi_2d_psatd_Vay_deposition_nodal] buildDir = . inputFile = Examples/Tests/langmuir/inputs_2d -runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 warpx.grid_type=collocated algo.current_deposition=vay diag1.electrons.variables=w ux uy uz diag1.positrons.variables=w ux uy uz diag1.fields_to_plot = Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 +runtime_params = algo.maxwell_solver=psatd amr.max_grid_size=128 warpx.grid_type=collocated algo.current_deposition=vay diag1.electrons.variables=x z w ux uy uz diag1.positrons.variables=x z w ux uy uz diag1.fields_to_plot = Ex Ey Ez jx jy jz part_per_cell rho divE warpx.cfl = 0.7071067811865475 dim = 2 addToCompileString = USE_PSATD=TRUE cmakeSetupOpts = -DWarpX_DIMS=2 -DWarpX_PSATD=ON @@ -1492,7 +1492,7 @@ analysisOutputImage = langmuir_multi_2d_analysis.png [Langmuir_multi_nodal] buildDir = . -inputFile = Examples/Tests/langmuir/inputs_3d +inputFile = runtime_params = warpx.grid_type=collocated algo.current_deposition=direct dim = 3 addToCompileString = @@ -1721,7 +1721,7 @@ analysisOutputImage = langmuir_multi_analysis.png [Langmuir_multi_rz] buildDir = . inputFile = Examples/Tests/langmuir/inputs_rz -runtime_params = diag1.electrons.variables=w ux uy uz diag1.ions.variables=w ux uy uz diag1.dump_rz_modes=0 +runtime_params = diag1.electrons.variables=x y z w ux uy uz diag1.ions.variables=x y z w ux uy uz diag1.dump_rz_modes=0 dim = 2 addToCompileString = USE_RZ=TRUE cmakeSetupOpts = -DWarpX_DIMS=RZ @@ -1741,7 +1741,7 @@ aux1File = Regression/PostProcessingUtils/post_processing_utils.py [Langmuir_multi_rz_psatd] buildDir = . inputFile = Examples/Tests/langmuir/inputs_rz -runtime_params = algo.maxwell_solver=psatd diag1.electrons.variables=w ux uy uz diag1.ions.variables=w ux uy uz diag1.dump_rz_modes=0 algo.current_deposition=direct warpx.do_dive_cleaning=0 psatd.update_with_rho=1 electrons.random_theta=0 ions.random_theta=0 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium +runtime_params = algo.maxwell_solver=psatd diag1.electrons.variables=x y z w ux uy uz diag1.ions.variables=x y z w ux uy uz diag1.dump_rz_modes=0 algo.current_deposition=direct warpx.do_dive_cleaning=0 psatd.update_with_rho=1 electrons.random_theta=0 ions.random_theta=0 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium dim = 2 addToCompileString = USE_RZ=TRUE USE_PSATD=TRUE BLAS_LIB=-lblas LAPACK_LIB=-llapack cmakeSetupOpts = -DWarpX_DIMS=RZ -DWarpX_PSATD=ON @@ -1761,7 +1761,7 @@ aux1File = Regression/PostProcessingUtils/post_processing_utils.py [Langmuir_multi_rz_psatd_current_correction] buildDir = . inputFile = Examples/Tests/langmuir/inputs_rz -runtime_params = algo.maxwell_solver=psatd diag1.electrons.variables=w ux uy uz diag1.ions.variables=w ux uy uz diag1.dump_rz_modes=0 algo.current_deposition=direct warpx.do_dive_cleaning=0 amr.max_grid_size=128 psatd.periodic_single_box_fft=1 psatd.current_correction=1 diag1.fields_to_plot=jr jz Er Ez Bt rho divE electrons.random_theta=0 ions.random_theta=0 +runtime_params = algo.maxwell_solver=psatd diag1.electrons.variables=x y z w ux uy uz diag1.ions.variables=x y z w ux uy uz diag1.dump_rz_modes=0 algo.current_deposition=direct warpx.do_dive_cleaning=0 amr.max_grid_size=128 psatd.periodic_single_box_fft=1 psatd.current_correction=1 diag1.fields_to_plot=jr jz Er Ez Bt rho divE electrons.random_theta=0 ions.random_theta=0 dim = 2 addToCompileString = USE_RZ=TRUE USE_PSATD=TRUE BLAS_LIB=-lblas LAPACK_LIB=-llapack cmakeSetupOpts = -DWarpX_DIMS=RZ -DWarpX_PSATD=ON @@ -1781,7 +1781,7 @@ aux1File = Regression/PostProcessingUtils/post_processing_utils.py [Langmuir_multi_rz_psatd_multiJ] buildDir = . inputFile = Examples/Tests/langmuir/inputs_rz -runtime_params = amr.max_grid_size=32 algo.maxwell_solver=psatd diag1.electrons.variables=w ux uy uz diag1.ions.variables=w ux uy uz diag1.dump_rz_modes=0 algo.current_deposition=direct warpx.do_dive_cleaning=0 psatd.update_with_rho=1 warpx.n_rz_azimuthal_modes=2 electrons.random_theta=0 electrons.num_particles_per_cell_each_dim=2 4 2 ions.random_theta=0 ions.num_particles_per_cell_each_dim=2 4 2 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium warpx.do_multi_J=1 warpx.do_multi_J_n_depositions=4 warpx.use_filter=1 +runtime_params = amr.max_grid_size=32 algo.maxwell_solver=psatd diag1.electrons.variables=x y z w ux uy uz diag1.ions.variables=x y z w ux uy uz diag1.dump_rz_modes=0 algo.current_deposition=direct warpx.do_dive_cleaning=0 psatd.update_with_rho=1 warpx.n_rz_azimuthal_modes=2 electrons.random_theta=0 electrons.num_particles_per_cell_each_dim=2 4 2 ions.random_theta=0 ions.num_particles_per_cell_each_dim=2 4 2 psatd.current_correction=0 warpx.abort_on_warning_threshold=medium warpx.do_multi_J=1 warpx.do_multi_J_n_depositions=4 warpx.use_filter=1 dim = 2 addToCompileString = USE_RZ=TRUE USE_PSATD=TRUE BLAS_LIB=-lblas LAPACK_LIB=-llapack cmakeSetupOpts = -DWarpX_DIMS=RZ -DWarpX_PSATD=ON From c734171d65468b7ff06bafb6ebfa8e9804c88de7 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 7 May 2024 21:54:16 -0700 Subject: [PATCH 5/6] RZ: x,y,z --- Source/Diagnostics/ParticleDiag/ParticleDiag.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp b/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp index 140122b5573..1a64ae20f0e 100644 --- a/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp +++ b/Source/Diagnostics/ParticleDiag/ParticleDiag.cpp @@ -36,7 +36,11 @@ ParticleDiag::ParticleDiag ( std::fill(m_plot_flags.begin(), m_plot_flags.end(), 0); bool contains_positions = false; if (variables[0] != "none"){ - const std::map existing_variable_names = pc->getParticleComps(); + std::map existing_variable_names = pc->getParticleComps(); +#ifdef WARPX_DIM_RZ + // we reconstruct to Cartesian x,y,z for RZ particle output + existing_variable_names["y"] = PIdx::theta; +#endif for (const auto& var : variables){ if (var == "phi") { // User requests phi on particle. This is *not* part of the variables that From b670db87303f771486f64678b58f85f44cb881d3 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Thu, 9 May 2024 00:45:37 -0700 Subject: [PATCH 6/6] Fix: openPMD Low-D position/positionOffset Continue to write defaults for coarse and fine position of omitted dimensions to zero. --- Source/Diagnostics/WarpXOpenPMD.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Source/Diagnostics/WarpXOpenPMD.cpp b/Source/Diagnostics/WarpXOpenPMD.cpp index 848b6818865..45d5dc1cdee 100644 --- a/Source/Diagnostics/WarpXOpenPMD.cpp +++ b/Source/Diagnostics/WarpXOpenPMD.cpp @@ -1014,9 +1014,12 @@ WarpXOpenPMDPlot::SetConstParticleRecordsEDPIC ( #if defined(WARPX_DIM_1D_Z) currSpecies["position"]["x"].resetDataset( realType ); currSpecies["position"]["y"].resetDataset( realType ); + currSpecies["positionOffset"]["x"].resetDataset( realType ); + currSpecies["positionOffset"]["y"].resetDataset( realType ); #endif #if defined(WARPX_DIM_XZ) currSpecies["position"]["y"].resetDataset( realType ); + currSpecies["positionOffset"]["y"].resetDataset( realType ); #endif // make constant @@ -1030,9 +1033,12 @@ WarpXOpenPMDPlot::SetConstParticleRecordsEDPIC ( #if defined(WARPX_DIM_1D_Z) currSpecies["position"]["x"].makeConstant( 0._prt ); currSpecies["position"]["y"].makeConstant( 0._prt ); + currSpecies["positionOffset"]["x"].makeConstant( 0._prt ); + currSpecies["positionOffset"]["y"].makeConstant( 0._prt ); #endif #if defined(WARPX_DIM_XZ) currSpecies["position"]["y"].makeConstant( 0._prt ); + currSpecies["positionOffset"]["y"].makeConstant( 0._prt ); #endif // meta data