From 11ba553236792f9172c096d6ec7447720897b480 Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Thu, 24 Mar 2022 15:40:13 -0700 Subject: [PATCH 01/14] DRAFT for Moving Frame --- Source/Diagnostics/ReducedDiags/FieldProbe.H | 3 ++ .../Diagnostics/ReducedDiags/FieldProbe.cpp | 47 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.H b/Source/Diagnostics/ReducedDiags/FieldProbe.H index 15c5d18f202..14359715b0b 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.H +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.H @@ -100,6 +100,9 @@ private: //! Judges whether to gather raw fields or interpolated data bool raw_fields = false; + //! Judges whether to follow a moving window + bool do_moving_window_FP = false; + /** * Built-in function in ReducedDiags to write out test data */ diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp index a0414c0fc1f..b22a3edb0fd 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp @@ -8,6 +8,8 @@ #include "FieldProbe.H" #include "FieldProbeParticleContainer.H" #include "Particles/Gather/FieldGather.H" +#include "Particles/Pusher/GetAndSetPosition.H" +#include "Particles/Pusher/UpdatePosition.H" #include "Utils/IntervalsParser.H" #include "Utils/TextMsg.H" @@ -147,6 +149,7 @@ FieldProbe::FieldProbe (std::string rd_name) pp_rd_name.query("integrate", m_field_probe_integrate); pp_rd_name.query("raw_fields", raw_fields); pp_rd_name.query("interp_order", interp_order); + pp_rd_name.query("do_moving_window_FP", do_moving_window_FP); if (WarpX::gamma_boost > 1.0_rt) { @@ -426,6 +429,8 @@ void FieldProbe::ComputeDiags (int step) for (MyParIter pti(m_probe, lev); pti.isValid(); ++pti) { const auto getPosition = GetParticlePosition(pti); + auto setPosition = SetParticlePosition(pti); + auto const np = pti.numParticles(); if( ProbeInDomain() ) @@ -565,6 +570,48 @@ void FieldProbe::ComputeDiags (int step) /* m_data now contains up-to-date values for: * [x, y, z, Ex, Ey, Ez, Bx, By, Bz, and S] */ } + if (do_moving_window_FP) + { + if (temp_field_probe_integrate) + { + for (auto ip=0; ip < np; ip++) + { + amrex::ParticleReal xp, yp, zp; + getPosition(ip, xp, yp, zp); + if (warpx.moving_window_dir == 0) + { + setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c), yp, zp) + } + if (warpx.moving_window_dir == 1) + { + setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c), zp) + } + if (warpx.moving_window_dir == WARPX_ZINDEX) + { + setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)) + } + } + else + { + for (auto ip=0; ip < np; ip++) + { + amrex::ParticleReal xp, yp, zp; + getPosition(ip, xp, yp, zp); + if (warpx.moving_window_dir == 0) + { + setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c)*m_intervals, yp, zp) + } + if (warpx.moving_window_dir == 1) + { + setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c)*m_intervals, zp) + } + if (warpx.moving_window_dir == WARPX_ZINDEX) + { + setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)*m_intervals) + } + } + } + } } } // end particle iterator loop Gpu::synchronize(); From 0ac087960f2f207deb17709151e9fc583f112150 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 24 Mar 2022 22:42:30 +0000 Subject: [PATCH 02/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- Source/Diagnostics/ReducedDiags/FieldProbe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp index b22a3edb0fd..18842b49920 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp @@ -573,7 +573,7 @@ void FieldProbe::ComputeDiags (int step) if (do_moving_window_FP) { if (temp_field_probe_integrate) - { + { for (auto ip=0; ip < np; ip++) { amrex::ParticleReal xp, yp, zp; From 8ae919578f10c29ce647089287af0254e0b5a893 Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Thu, 24 Mar 2022 15:48:42 -0700 Subject: [PATCH 03/14] Adds m_last_compute_step --- Source/Diagnostics/ReducedDiags/FieldProbe.H | 3 +++ Source/Diagnostics/ReducedDiags/FieldProbe.cpp | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.H b/Source/Diagnostics/ReducedDiags/FieldProbe.H index 14359715b0b..b814c77c10f 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.H +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.H @@ -76,6 +76,9 @@ private: //! counts number of particles for all MPI ranks long m_valid_particles {0}; + //! counts the number of steps since last computation (for non-integrated detectors) + int m_last_compute_step = 0; + //! determines geometry of detector point distribution DetectorGeometry m_probe_geometry = DetectorGeometry::Point; diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp index b22a3edb0fd..90a29647364 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp @@ -599,15 +599,15 @@ void FieldProbe::ComputeDiags (int step) getPosition(ip, xp, yp, zp); if (warpx.moving_window_dir == 0) { - setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c)*m_intervals, yp, zp) + setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step), yp, zp) } if (warpx.moving_window_dir == 1) { - setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c)*m_intervals, zp) + setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step), zp) } if (warpx.moving_window_dir == WARPX_ZINDEX) { - setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)*m_intervals) + setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step)) } } } @@ -661,6 +661,7 @@ void FieldProbe::ComputeDiags (int step) }// end loop over refinement levels // make sure data is in m_data on the IOProcessor // TODO: In the future, we want to use a parallel I/O method instead (plotfiles or openPMD) + m_last_compute_step = step; } // end void FieldProbe::ComputeDiags void FieldProbe::WriteToFile (int step) const From ee1a385483d1db0e761f368bb0c62b8f36f8fb33 Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Thu, 24 Mar 2022 16:09:07 -0700 Subject: [PATCH 04/14] Generalized SetParticlePosition, semicolons and formatting --- Source/Diagnostics/ReducedDiags/FieldProbe.cpp | 13 +++++++------ Source/Particles/Pusher/GetAndSetPosition.H | 4 +++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp index dbefc5c7270..baa2fd8325a 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp @@ -580,17 +580,18 @@ void FieldProbe::ComputeDiags (int step) getPosition(ip, xp, yp, zp); if (warpx.moving_window_dir == 0) { - setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c), yp, zp) + setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c), yp, zp); } if (warpx.moving_window_dir == 1) { - setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c), zp) + setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c), zp); } if (warpx.moving_window_dir == WARPX_ZINDEX) { - setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)) + setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)); } } + } else { for (auto ip=0; ip < np; ip++) @@ -599,15 +600,15 @@ void FieldProbe::ComputeDiags (int step) getPosition(ip, xp, yp, zp); if (warpx.moving_window_dir == 0) { - setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step), yp, zp) + setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step), yp, zp); } if (warpx.moving_window_dir == 1) { - setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step), zp) + setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step), zp); } if (warpx.moving_window_dir == WARPX_ZINDEX) { - setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step)) + setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step)); } } } diff --git a/Source/Particles/Pusher/GetAndSetPosition.H b/Source/Particles/Pusher/GetAndSetPosition.H index 58dbe02c146..4067895790d 100644 --- a/Source/Particles/Pusher/GetAndSetPosition.H +++ b/Source/Particles/Pusher/GetAndSetPosition.H @@ -155,7 +155,9 @@ struct SetParticlePosition #if defined(WARPX_DIM_RZ) RType* AMREX_RESTRICT m_theta; #endif - SetParticlePosition (WarpXParIter& a_pti, int a_offset = 0) noexcept + + template + SetParticlePosition (const ptiType& a_pti, int a_offset = 0) noexcept { auto& aos = a_pti.GetArrayOfStructs(); m_structs = aos().dataPtr() + a_offset; From 4aa1059dd79953b84a2cf200024e4b50249dedc7 Mon Sep 17 00:00:00 2001 From: Tiberius Rheaume <35204125+TiberiusRheaume@users.noreply.github.com> Date: Fri, 25 Mar 2022 09:00:54 -0700 Subject: [PATCH 05/14] Update Source/Diagnostics/ReducedDiags/FieldProbe.H Co-authored-by: Axel Huebl --- Source/Diagnostics/ReducedDiags/FieldProbe.H | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.H b/Source/Diagnostics/ReducedDiags/FieldProbe.H index b814c77c10f..12c369515df 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.H +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.H @@ -76,7 +76,7 @@ private: //! counts number of particles for all MPI ranks long m_valid_particles {0}; - //! counts the number of steps since last computation (for non-integrated detectors) + //! remember the last time `ComputeDiags` was called to count the number of steps in between(for non-integrated detectors) int m_last_compute_step = 0; //! determines geometry of detector point distribution From db389fedcbd756a0d03c5176b672f1a5a00274dc Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Fri, 25 Mar 2022 10:11:22 -0700 Subject: [PATCH 06/14] Moved particle push before calculations. Condensed stuff. --- Source/Diagnostics/ReducedDiags/FieldProbe.H | 2 + .../Diagnostics/ReducedDiags/FieldProbe.cpp | 70 +++++++------------ 2 files changed, 28 insertions(+), 44 deletions(-) diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.H b/Source/Diagnostics/ReducedDiags/FieldProbe.H index 12c369515df..8f5fa80f5f8 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.H +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.H @@ -106,6 +106,8 @@ private: //! Judges whether to follow a moving window bool do_moving_window_FP = false; + //! Calculates particle movement in moving window sims + amrex::Real temp_dist_mult; /** * Built-in function in ReducedDiags to write out test data */ diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp index baa2fd8325a..9ef43741749 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp @@ -388,6 +388,11 @@ void FieldProbe::ComputeDiags (int step) { const amrex::Geometry& gm = warpx.Geom(lev); const auto prob_lo = gm.ProbLo(); + amrex::Real const dt = WarpX::GetInstance().getdt(lev); + if (do_moving_window_FP) + { + temp_dist_mult = dt*warpx.moving_window_v*PhysConst::c; + } // get MultiFab data at lev const amrex::MultiFab &Ex = warpx.getEfield(lev, 0); @@ -433,6 +438,27 @@ void FieldProbe::ComputeDiags (int step) auto const np = pti.numParticles(); + if (do_moving_window_FP) + { + int step_diff = step - m_last_compute_step; + for (auto ip=0; ip < np; ip++) + { + amrex::ParticleReal xp, yp, zp; + getPosition(ip, xp, yp, zp); + if (warpx.moving_window_dir == 0) + { + setPosition(ip, xp+(temp_dist_mult*step_diff), yp, zp); + } + if (warpx.moving_window_dir == 1) + { + setPosition(ip, xp, yp+(temp_dist_mult*step_diff), zp); + } + if (warpx.moving_window_dir == WARPX_ZINDEX) + { + setPosition(ip, xp, yp, zp+(temp_dist_mult*step_diff)); + } + } + } if( ProbeInDomain() ) { const auto cell_size = gm.CellSizeArray(); @@ -484,7 +510,6 @@ void FieldProbe::ComputeDiags (int step) const int temp_interp_order = interp_order; const bool temp_raw_fields = raw_fields; const bool temp_field_probe_integrate = m_field_probe_integrate; - amrex::Real const dt = WarpX::GetInstance().getdt(lev); // Interpolating to the probe positions for each particle amrex::ParallelFor( np, [=] AMREX_GPU_DEVICE (long ip) @@ -570,49 +595,6 @@ void FieldProbe::ComputeDiags (int step) /* m_data now contains up-to-date values for: * [x, y, z, Ex, Ey, Ez, Bx, By, Bz, and S] */ } - if (do_moving_window_FP) - { - if (temp_field_probe_integrate) - { - for (auto ip=0; ip < np; ip++) - { - amrex::ParticleReal xp, yp, zp; - getPosition(ip, xp, yp, zp); - if (warpx.moving_window_dir == 0) - { - setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c), yp, zp); - } - if (warpx.moving_window_dir == 1) - { - setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c), zp); - } - if (warpx.moving_window_dir == WARPX_ZINDEX) - { - setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)); - } - } - } - else - { - for (auto ip=0; ip < np; ip++) - { - amrex::ParticleReal xp, yp, zp; - getPosition(ip, xp, yp, zp); - if (warpx.moving_window_dir == 0) - { - setPosition(ip, xp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step), yp, zp); - } - if (warpx.moving_window_dir == 1) - { - setPosition(ip, xp, yp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step), zp); - } - if (warpx.moving_window_dir == WARPX_ZINDEX) - { - setPosition(ip, xp, yp, zp+(dt*warpx.moving_window_v*PhysConst::c)*(step-m_last_compute_step)); - } - } - } - } } } // end particle iterator loop Gpu::synchronize(); From 9df180003e268464306a4fb2d2d9cd903e6f4126 Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Fri, 25 Mar 2022 11:19:38 -0700 Subject: [PATCH 07/14] Fixed Velocity, added start and stop time functionality --- Source/Diagnostics/ReducedDiags/FieldProbe.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp index 9ef43741749..57eb9ce0ab1 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp @@ -391,7 +391,7 @@ void FieldProbe::ComputeDiags (int step) amrex::Real const dt = WarpX::GetInstance().getdt(lev); if (do_moving_window_FP) { - temp_dist_mult = dt*warpx.moving_window_v*PhysConst::c; + temp_dist_mult = dt*warpx.moving_window_v; } // get MultiFab data at lev @@ -437,8 +437,7 @@ void FieldProbe::ComputeDiags (int step) auto setPosition = SetParticlePosition(pti); auto const np = pti.numParticles(); - - if (do_moving_window_FP) + if (do_moving_window_FP && step > warpx.start_moving_window_step && step <= warpx.end_moving_window_step) { int step_diff = step - m_last_compute_step; for (auto ip=0; ip < np; ip++) From d7c730c6a318d92a76bc3485ee97e434e3a6d21f Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Fri, 25 Mar 2022 11:33:44 -0700 Subject: [PATCH 08/14] Documentation --- Docs/source/usage/parameters.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/Docs/source/usage/parameters.rst b/Docs/source/usage/parameters.rst index 260c407eeea..801e2fcdf80 100644 --- a/Docs/source/usage/parameters.rst +++ b/Docs/source/usage/parameters.rst @@ -2314,6 +2314,7 @@ Reduced Diagnostics otherwise it is set to ``1``. Integrated electric and magnetic field components can instead be obtained by specifying ``.integrate == true``. + In a ``moving window`` simulation, the FieldProbe can be set to follow the moving frame by specifying ``.do_moving_window_FP = 1`` (default 0). .. warning:: From 8adb8ba694b159666b99597f62655a9ee28b38fe Mon Sep 17 00:00:00 2001 From: Tiberius Rheaume <35204125+TiberiusRheaume@users.noreply.github.com> Date: Wed, 30 Mar 2022 11:27:26 -0700 Subject: [PATCH 09/14] Apply suggestions from code review Co-authored-by: Axel Huebl --- Docs/source/usage/parameters.rst | 2 +- Source/Diagnostics/ReducedDiags/FieldProbe.H | 4 +--- .../Diagnostics/ReducedDiags/FieldProbe.cpp | 24 ++++++++++++------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Docs/source/usage/parameters.rst b/Docs/source/usage/parameters.rst index 801e2fcdf80..4df474e54cb 100644 --- a/Docs/source/usage/parameters.rst +++ b/Docs/source/usage/parameters.rst @@ -2314,7 +2314,7 @@ Reduced Diagnostics otherwise it is set to ``1``. Integrated electric and magnetic field components can instead be obtained by specifying ``.integrate == true``. - In a ``moving window`` simulation, the FieldProbe can be set to follow the moving frame by specifying ``.do_moving_window_FP = 1`` (default 0). + In a *moving window* simulation, the FieldProbe can be set to follow the moving frame by specifying ``.do_moving_window_FP = 1`` (default 0). .. warning:: diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.H b/Source/Diagnostics/ReducedDiags/FieldProbe.H index 8f5fa80f5f8..27c52618731 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.H +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.H @@ -76,7 +76,7 @@ private: //! counts number of particles for all MPI ranks long m_valid_particles {0}; - //! remember the last time `ComputeDiags` was called to count the number of steps in between(for non-integrated detectors) + //! remember the last time @see ComputeDiags was called to count the number of steps in between (for non-integrated detectors) int m_last_compute_step = 0; //! determines geometry of detector point distribution @@ -106,8 +106,6 @@ private: //! Judges whether to follow a moving window bool do_moving_window_FP = false; - //! Calculates particle movement in moving window sims - amrex::Real temp_dist_mult; /** * Built-in function in ReducedDiags to write out test data */ diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp index 57eb9ce0ab1..0fc5dc0f40d 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp @@ -389,9 +389,16 @@ void FieldProbe::ComputeDiags (int step) const amrex::Geometry& gm = warpx.Geom(lev); const auto prob_lo = gm.ProbLo(); amrex::Real const dt = WarpX::GetInstance().getdt(lev); - if (do_moving_window_FP) + // Calculates particle movement in moving window sims + amrex::Real move_dist = 0.0; + bool const update_particles_moving_window = + do_moving_window_FP && + step > warpx.start_moving_window_step && + step <= warpx.end_moving_window_step; + if (update_particles_moving_window) { - temp_dist_mult = dt*warpx.moving_window_v; + int step_diff = step - m_last_compute_step; + move_dist = dt*warpx.moving_window_v*step_diff; } // get MultiFab data at lev @@ -434,27 +441,26 @@ void FieldProbe::ComputeDiags (int step) for (MyParIter pti(m_probe, lev); pti.isValid(); ++pti) { const auto getPosition = GetParticlePosition(pti); - auto setPosition = SetParticlePosition(pti); + auto setPosition = SetParticlePosition(pti); auto const np = pti.numParticles(); - if (do_moving_window_FP && step > warpx.start_moving_window_step && step <= warpx.end_moving_window_step) + if (update_particles_moving_window) { - int step_diff = step - m_last_compute_step; - for (auto ip=0; ip < np; ip++) + for::ParallelFor( np, [=] AMREX_GPU_DEVICE (long ip) { amrex::ParticleReal xp, yp, zp; getPosition(ip, xp, yp, zp); if (warpx.moving_window_dir == 0) { - setPosition(ip, xp+(temp_dist_mult*step_diff), yp, zp); + setPosition(ip, xp+move_dist, yp, zp); } if (warpx.moving_window_dir == 1) { - setPosition(ip, xp, yp+(temp_dist_mult*step_diff), zp); + setPosition(ip, xp, yp+move_dist, zp); } if (warpx.moving_window_dir == WARPX_ZINDEX) { - setPosition(ip, xp, yp, zp+(temp_dist_mult*step_diff)); + setPosition(ip, xp, yp, zp+move_dist); } } } From 4aac06d30110fcfeb363ce9b2b6ad036059450f6 Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Wed, 30 Mar 2022 14:24:20 -0700 Subject: [PATCH 10/14] Empty-Commit From 8156d05a7c6f1ae4af9c954845c42d65c2de5461 Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Thu, 31 Mar 2022 10:55:03 -0700 Subject: [PATCH 11/14] Fixed ParallelFor from review --- Source/Diagnostics/ReducedDiags/FieldProbe.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp index 0fc5dc0f40d..fb305a293a0 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbe.cpp +++ b/Source/Diagnostics/ReducedDiags/FieldProbe.cpp @@ -446,23 +446,24 @@ void FieldProbe::ComputeDiags (int step) auto const np = pti.numParticles(); if (update_particles_moving_window) { - for::ParallelFor( np, [=] AMREX_GPU_DEVICE (long ip) + const auto temp_warpx_moving_window = warpx.moving_window_dir; + amrex::ParallelFor( np, [=] AMREX_GPU_DEVICE (long ip) { amrex::ParticleReal xp, yp, zp; getPosition(ip, xp, yp, zp); - if (warpx.moving_window_dir == 0) + if (temp_warpx_moving_window == 0) { setPosition(ip, xp+move_dist, yp, zp); } - if (warpx.moving_window_dir == 1) + if (temp_warpx_moving_window == 1) { setPosition(ip, xp, yp+move_dist, zp); } - if (warpx.moving_window_dir == WARPX_ZINDEX) + if (temp_warpx_moving_window == WARPX_ZINDEX) { setPosition(ip, xp, yp, zp+move_dist); } - } + }); } if( ProbeInDomain() ) { From 693a10ae943ecd137c69247e034ec6c9130375cc Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Thu, 31 Mar 2022 15:24:01 -0700 Subject: [PATCH 12/14] FP moving window in laser_acceleration 1d, 2d, 3d test --- .../laser_acceleration/inputs_1d | 10 ++++++++++ .../laser_acceleration/inputs_2d | 15 +++++++++++++++ .../laser_acceleration/inputs_3d | 16 ++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/Examples/Physics_applications/laser_acceleration/inputs_1d b/Examples/Physics_applications/laser_acceleration/inputs_1d index 28c8f66a5da..86b22e5450d 100644 --- a/Examples/Physics_applications/laser_acceleration/inputs_1d +++ b/Examples/Physics_applications/laser_acceleration/inputs_1d @@ -70,3 +70,13 @@ 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 + +# Reduced Diagnostics +warpx.reduced_diags_names = FP + +FP.type = FieldProbe +FP.intervals = 10 +FP.integrate = 0 +FP.probe_geometry = Point +FP.z_probe = 0 +FP.do_moving_window_FP = 1 diff --git a/Examples/Physics_applications/laser_acceleration/inputs_2d b/Examples/Physics_applications/laser_acceleration/inputs_2d index 8a79e57240d..35f60cae959 100644 --- a/Examples/Physics_applications/laser_acceleration/inputs_2d +++ b/Examples/Physics_applications/laser_acceleration/inputs_2d @@ -87,3 +87,18 @@ diagnostics.diags_names = diag1 diag1.intervals = 200 diag1.diag_type = Full diag1.fields_to_plot = Ex Ey Ez Bx By Bz jx jy jz rho + +# Reduced Diagnostics +warpx.reduced_diags_names = FP + +FP.type = FieldProbe +FP.intervals = 10 +FP.integrate = 0 +FP.probe_geometry = Line +FP.x_probe = 0 +FP.z_probe = -56e-6 +FP.x1_probe = 0 +FP.z1_probe = 12e-6 +FP.resolution = 300 +FP.do_moving_window_FP = 1 + diff --git a/Examples/Physics_applications/laser_acceleration/inputs_3d b/Examples/Physics_applications/laser_acceleration/inputs_3d index 11c34c3aff8..cc0aa6e0cb1 100644 --- a/Examples/Physics_applications/laser_acceleration/inputs_3d +++ b/Examples/Physics_applications/laser_acceleration/inputs_3d @@ -77,3 +77,19 @@ 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 + +# Reduced Diagnostics +warpx.reduced_diags_names = FP + +FP.type = FieldProbe +FP.intervals = 10 +FP.integrate = 0 +FP.probe_geometry = Line +FP.x_probe = 0 +FP.y_probe = 0 +FP.z_probe = -56e-6 +FP.x1_probe = 0 +FP.y1_probe = 0 +FP.z1_probe = 12e-6 +FP.resolution = 300 +FP.do_moving_window_FP = 1 From 55cfcf5d61aa342e5892662f0f29e9fc649b011e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 31 Mar 2022 22:25:05 +0000 Subject: [PATCH 13/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- Examples/Physics_applications/laser_acceleration/inputs_2d | 1 - 1 file changed, 1 deletion(-) diff --git a/Examples/Physics_applications/laser_acceleration/inputs_2d b/Examples/Physics_applications/laser_acceleration/inputs_2d index 35f60cae959..e5c3790437f 100644 --- a/Examples/Physics_applications/laser_acceleration/inputs_2d +++ b/Examples/Physics_applications/laser_acceleration/inputs_2d @@ -101,4 +101,3 @@ FP.x1_probe = 0 FP.z1_probe = 12e-6 FP.resolution = 300 FP.do_moving_window_FP = 1 - From 94cca27130a7b58dea28b6b91c1ccd49e090c4ea Mon Sep 17 00:00:00 2001 From: Tiberius-Elisa Date: Thu, 31 Mar 2022 16:59:28 -0700 Subject: [PATCH 14/14] Line detector instead of point --- Examples/Physics_applications/laser_acceleration/inputs_1d | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Examples/Physics_applications/laser_acceleration/inputs_1d b/Examples/Physics_applications/laser_acceleration/inputs_1d index 86b22e5450d..e143b5b16b8 100644 --- a/Examples/Physics_applications/laser_acceleration/inputs_1d +++ b/Examples/Physics_applications/laser_acceleration/inputs_1d @@ -77,6 +77,8 @@ warpx.reduced_diags_names = FP FP.type = FieldProbe FP.intervals = 10 FP.integrate = 0 -FP.probe_geometry = Point -FP.z_probe = 0 +FP.probe_geometry = Line +FP.z_probe = -56e-6 +FP.z1_probe = 12e-6 +FP.resolution = 100 FP.do_moving_window_FP = 1