From 1af0b3b1e108cd40e7b88f034669a8d815e95794 Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 29 May 2025 10:57:42 -0400 Subject: [PATCH 1/9] push_particles_1vb: rename variables --- src/libpsc/psc_push_particles/inc_push.c | 11 +++++----- .../psc_push_particles/push_particles_1vb.hxx | 22 ++++++++++--------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/libpsc/psc_push_particles/inc_push.c b/src/libpsc/psc_push_particles/inc_push.c index c132b2496f..c8534904db 100644 --- a/src/libpsc/psc_push_particles/inc_push.c +++ b/src/libpsc/psc_push_particles/inc_push.c @@ -28,13 +28,14 @@ class PI // ---------------------------------------------------------------------- // find_idx_off_pos_1st_rel - void find_idx_off_pos_1st_rel(real_t xi[3], int lg[3], real_t og[3], - real_t pos[3], real_t shift) + void find_idx_off_pos_1st_rel(real_t final_pos[3], int final_index[3], + real_t final_offset[3], + real_t final_pos_normalized[3], real_t shift) { for (int d = 0; d < 3; d++) { - pos[d] = xi[d] * dxi_[d] + shift; - lg[d] = fint(pos[d]); - og[d] = pos[d] - lg[d]; + final_pos_normalized[d] = final_pos[d] * dxi_[d] + shift; + final_index[d] = fint(final_pos_normalized[d]); + final_offset[d] = final_pos_normalized[d] - final_index[d]; } } diff --git a/src/libpsc/psc_push_particles/push_particles_1vb.hxx b/src/libpsc/psc_push_particles/push_particles_1vb.hxx index d7bd8e604c..ffb6e65ff6 100644 --- a/src/libpsc/psc_push_particles/push_particles_1vb.hxx +++ b/src/libpsc/psc_push_particles/push_particles_1vb.hxx @@ -48,11 +48,11 @@ struct PushParticlesVb for (auto prt : prts) { Real3& x = prt.x(); - real_t xm[3]; + real_t initial_pos_normalized[3]; for (int d = 0; d < 3; d++) { - xm[d] = x[d] * dxi[d]; + initial_pos_normalized[d] = x[d] * dxi[d]; } - ip.set_coeffs(xm); + ip.set_coeffs(initial_pos_normalized); // FIELD INTERPOLATION Real3 E = {ip.ex(EM), ip.ey(EM), ip.ez(EM)}; @@ -66,9 +66,10 @@ struct PushParticlesVb auto v = advance.calc_v(prt.u()); advance.push_x(x, v); - int lf[3]; - real_t of[3], xp[3]; - pi.find_idx_off_pos_1st_rel(x, lf, of, xp, real_t(0.)); + int final_index[3]; + real_t final_offset[3], final_pos_normalized[3]; + pi.find_idx_off_pos_1st_rel(x, final_index, final_offset, + final_pos_normalized, real_t(0.)); // CURRENT DENSITY BETWEEN (n+.5)*dt and (n+1.5)*dt int lg[3]; @@ -81,7 +82,8 @@ struct PushParticlesVb if (!Dim::InvarZ::value) { lg[2] = ip.cz.g.l; } - current.calc_j(J, xm, xp, lf, lg, prt.qni_wni(), v); + current.calc_j(J, initial_pos_normalized, final_pos_normalized, + final_index, lg, prt.qni_wni(), v); } } } @@ -112,14 +114,14 @@ struct PushParticlesVb // field interpolation real_t* x = prt.x; - real_t xm[3]; + real_t initial_pos_normalized[3]; for (int d = 0; d < 3; d++) { - xm[d] = x[d] * dxi[d]; + initial_pos_normalized[d] = x[d] * dxi[d]; } // FIELD INTERPOLATION - ip.set_coeffs(xm); + ip.set_coeffs(initial_pos_normalized); // FIXME, we're not using EM instead flds_em real_t E[3] = {ip.ex(EM), ip.ey(EM), ip.ez(EM)}; real_t H[3] = {ip.hx(EM), ip.hy(EM), ip.hz(EM)}; From 4fecaf91c6fd89a3fae763692c8269c12853f286 Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 29 May 2025 10:58:04 -0400 Subject: [PATCH 2/9] inc_push: rm unused method --- src/libpsc/psc_push_particles/inc_push.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/libpsc/psc_push_particles/inc_push.c b/src/libpsc/psc_push_particles/inc_push.c index c8534904db..8cf536c7eb 100644 --- a/src/libpsc/psc_push_particles/inc_push.c +++ b/src/libpsc/psc_push_particles/inc_push.c @@ -13,18 +13,6 @@ class PI PI(const Grid_t& grid) : dxi_{Real3{1., 1., 1.} / Real3(grid.domain.dx)} {} - // ---------------------------------------------------------------------- - // find_idx_off_1st_rel - - void find_idx_off_1st_rel(real_t xi[3], int lg[3], real_t og[3], real_t shift) - { - for (int d = 0; d < 3; d++) { - real_t pos = xi[d] * dxi_[d] + shift; - lg[d] = fint(pos); - og[d] = pos - lg[d]; - } - } - // ---------------------------------------------------------------------- // find_idx_off_pos_1st_rel From 9cc2d156cb91d5f6f9896705580b91b1a47fab96 Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 29 May 2025 12:20:15 -0400 Subject: [PATCH 3/9] inc_push: take Real3 params --- src/libpsc/psc_push_particles/inc_push.c | 6 +++--- src/libpsc/psc_push_particles/push_particles_1vb.hxx | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libpsc/psc_push_particles/inc_push.c b/src/libpsc/psc_push_particles/inc_push.c index 8cf536c7eb..c1f2dbb9a3 100644 --- a/src/libpsc/psc_push_particles/inc_push.c +++ b/src/libpsc/psc_push_particles/inc_push.c @@ -16,9 +16,9 @@ class PI // ---------------------------------------------------------------------- // find_idx_off_pos_1st_rel - void find_idx_off_pos_1st_rel(real_t final_pos[3], int final_index[3], - real_t final_offset[3], - real_t final_pos_normalized[3], real_t shift) + void find_idx_off_pos_1st_rel(Real3 final_pos, Int3 final_index, + Real3 final_offset, Real3 final_pos_normalized, + real_t shift) { for (int d = 0; d < 3; d++) { final_pos_normalized[d] = final_pos[d] * dxi_[d] + shift; diff --git a/src/libpsc/psc_push_particles/push_particles_1vb.hxx b/src/libpsc/psc_push_particles/push_particles_1vb.hxx index ffb6e65ff6..2b215e2d73 100644 --- a/src/libpsc/psc_push_particles/push_particles_1vb.hxx +++ b/src/libpsc/psc_push_particles/push_particles_1vb.hxx @@ -48,7 +48,7 @@ struct PushParticlesVb for (auto prt : prts) { Real3& x = prt.x(); - real_t initial_pos_normalized[3]; + Real3 initial_pos_normalized; for (int d = 0; d < 3; d++) { initial_pos_normalized[d] = x[d] * dxi[d]; } @@ -66,8 +66,8 @@ struct PushParticlesVb auto v = advance.calc_v(prt.u()); advance.push_x(x, v); - int final_index[3]; - real_t final_offset[3], final_pos_normalized[3]; + Int3 final_index; + Real3 final_offset, final_pos_normalized; pi.find_idx_off_pos_1st_rel(x, final_index, final_offset, final_pos_normalized, real_t(0.)); From 380cc59d1363b23f6869a8093cab5c3a957e3d8e Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 29 May 2025 12:21:29 -0400 Subject: [PATCH 4/9] push_particles_1vb: use Real3 math --- src/libpsc/psc_push_particles/push_particles_1vb.hxx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/libpsc/psc_push_particles/push_particles_1vb.hxx b/src/libpsc/psc_push_particles/push_particles_1vb.hxx index 2b215e2d73..76dbb0de78 100644 --- a/src/libpsc/psc_push_particles/push_particles_1vb.hxx +++ b/src/libpsc/psc_push_particles/push_particles_1vb.hxx @@ -48,10 +48,7 @@ struct PushParticlesVb for (auto prt : prts) { Real3& x = prt.x(); - Real3 initial_pos_normalized; - for (int d = 0; d < 3; d++) { - initial_pos_normalized[d] = x[d] * dxi[d]; - } + Real3 initial_pos_normalized = x * dxi; ip.set_coeffs(initial_pos_normalized); // FIELD INTERPOLATION From 511f2a4057523737e85a56d6231baee3c9ca1ff5 Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 29 May 2025 12:27:23 -0400 Subject: [PATCH 5/9] inc_push: pass dxi as param --- src/libpsc/psc_push_particles/inc_push.c | 4 ++-- src/libpsc/psc_push_particles/push_particles_1vb.hxx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libpsc/psc_push_particles/inc_push.c b/src/libpsc/psc_push_particles/inc_push.c index c1f2dbb9a3..d78d5b4fbf 100644 --- a/src/libpsc/psc_push_particles/inc_push.c +++ b/src/libpsc/psc_push_particles/inc_push.c @@ -16,12 +16,12 @@ class PI // ---------------------------------------------------------------------- // find_idx_off_pos_1st_rel - void find_idx_off_pos_1st_rel(Real3 final_pos, Int3 final_index, + void find_idx_off_pos_1st_rel(Real3 final_pos, Real3 dxi, Int3 final_index, Real3 final_offset, Real3 final_pos_normalized, real_t shift) { for (int d = 0; d < 3; d++) { - final_pos_normalized[d] = final_pos[d] * dxi_[d] + shift; + final_pos_normalized[d] = final_pos[d] * dxi[d] + shift; final_index[d] = fint(final_pos_normalized[d]); final_offset[d] = final_pos_normalized[d] - final_index[d]; } diff --git a/src/libpsc/psc_push_particles/push_particles_1vb.hxx b/src/libpsc/psc_push_particles/push_particles_1vb.hxx index 76dbb0de78..76df57411f 100644 --- a/src/libpsc/psc_push_particles/push_particles_1vb.hxx +++ b/src/libpsc/psc_push_particles/push_particles_1vb.hxx @@ -65,7 +65,7 @@ struct PushParticlesVb Int3 final_index; Real3 final_offset, final_pos_normalized; - pi.find_idx_off_pos_1st_rel(x, final_index, final_offset, + pi.find_idx_off_pos_1st_rel(x, dxi, final_index, final_offset, final_pos_normalized, real_t(0.)); // CURRENT DENSITY BETWEEN (n+.5)*dt and (n+1.5)*dt From 8e2eb0838b9d85040f65a48963e58d229e4b3e75 Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 29 May 2025 12:29:32 -0400 Subject: [PATCH 6/9] inc_push: make standalone function --- src/libpsc/psc_push_particles/inc_push.c | 32 ++++++------------- .../psc_push_particles/push_particles_1vb.hxx | 5 ++- 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/src/libpsc/psc_push_particles/inc_push.c b/src/libpsc/psc_push_particles/inc_push.c index d78d5b4fbf..d4792714f6 100644 --- a/src/libpsc/psc_push_particles/inc_push.c +++ b/src/libpsc/psc_push_particles/inc_push.c @@ -5,28 +5,14 @@ #include "pushp.hxx" -template -class PI +template > +void find_idx_off_pos_1st_rel(Real3 final_pos, Real3 dxi, Int3 final_index, + Real3 final_offset, Real3 final_pos_normalized, + real_t shift) { -public: - using Real3 = Vec3; - - PI(const Grid_t& grid) : dxi_{Real3{1., 1., 1.} / Real3(grid.domain.dx)} {} - - // ---------------------------------------------------------------------- - // find_idx_off_pos_1st_rel - - void find_idx_off_pos_1st_rel(Real3 final_pos, Real3 dxi, Int3 final_index, - Real3 final_offset, Real3 final_pos_normalized, - real_t shift) - { - for (int d = 0; d < 3; d++) { - final_pos_normalized[d] = final_pos[d] * dxi[d] + shift; - final_index[d] = fint(final_pos_normalized[d]); - final_offset[d] = final_pos_normalized[d] - final_index[d]; - } + for (int d = 0; d < 3; d++) { + final_pos_normalized[d] = final_pos[d] * dxi[d] + shift; + final_index[d] = fint(final_pos_normalized[d]); + final_offset[d] = final_pos_normalized[d] - final_index[d]; } - -private: - Real3 dxi_; -}; +} diff --git a/src/libpsc/psc_push_particles/push_particles_1vb.hxx b/src/libpsc/psc_push_particles/push_particles_1vb.hxx index 76df57411f..2afdb37652 100644 --- a/src/libpsc/psc_push_particles/push_particles_1vb.hxx +++ b/src/libpsc/psc_push_particles/push_particles_1vb.hxx @@ -24,7 +24,6 @@ struct PushParticlesVb static void push_mprts(Mparticles& mprts, MfieldsState& mflds) { const auto& grid = mprts.grid(); - PI pi(grid); Real3 dxi = Real3{1., 1., 1.} / Real3(grid.domain.dx); real_t dq_kind[MAX_NR_KINDS]; auto& kinds = grid.kinds; @@ -65,8 +64,8 @@ struct PushParticlesVb Int3 final_index; Real3 final_offset, final_pos_normalized; - pi.find_idx_off_pos_1st_rel(x, dxi, final_index, final_offset, - final_pos_normalized, real_t(0.)); + find_idx_off_pos_1st_rel(x, dxi, final_index, final_offset, + final_pos_normalized, real_t(0.)); // CURRENT DENSITY BETWEEN (n+.5)*dt and (n+1.5)*dt int lg[3]; From b42f480245d57a61ac8117204d0c4cf3d4852241 Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 29 May 2025 12:53:35 -0400 Subject: [PATCH 7/9] push_particles_1vb: don't take ref to x --- src/libpsc/psc_push_particles/push_particles_1vb.hxx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/libpsc/psc_push_particles/push_particles_1vb.hxx b/src/libpsc/psc_push_particles/push_particles_1vb.hxx index 2afdb37652..d5e53ccf8c 100644 --- a/src/libpsc/psc_push_particles/push_particles_1vb.hxx +++ b/src/libpsc/psc_push_particles/push_particles_1vb.hxx @@ -45,9 +45,7 @@ struct PushParticlesVb flds.storage().view(_all, _all, _all, _s(JXI, JXI + 3)) = real_t(0); for (auto prt : prts) { - Real3& x = prt.x(); - - Real3 initial_pos_normalized = x * dxi; + Real3 initial_pos_normalized = prt.x() * dxi; ip.set_coeffs(initial_pos_normalized); // FIELD INTERPOLATION @@ -60,11 +58,11 @@ struct PushParticlesVb // x^(n+0.5), p^(n+1.0) -> x^(n+1.5), p^(n+1.0) auto v = advance.calc_v(prt.u()); - advance.push_x(x, v); + advance.push_x(prt.x(), v); Int3 final_index; Real3 final_offset, final_pos_normalized; - find_idx_off_pos_1st_rel(x, dxi, final_index, final_offset, + find_idx_off_pos_1st_rel(prt.x(), dxi, final_index, final_offset, final_pos_normalized, real_t(0.)); // CURRENT DENSITY BETWEEN (n+.5)*dt and (n+1.5)*dt From c89af64825074fe7133ab8700be59c5991188617 Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 29 May 2025 12:56:52 -0400 Subject: [PATCH 8/9] inc_push: drop unused final_offset param --- src/libpsc/psc_push_particles/inc_push.c | 6 ++---- src/libpsc/psc_push_particles/push_particles_1vb.hxx | 6 +++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/libpsc/psc_push_particles/inc_push.c b/src/libpsc/psc_push_particles/inc_push.c index d4792714f6..ca60d369f8 100644 --- a/src/libpsc/psc_push_particles/inc_push.c +++ b/src/libpsc/psc_push_particles/inc_push.c @@ -6,13 +6,11 @@ #include "pushp.hxx" template > -void find_idx_off_pos_1st_rel(Real3 final_pos, Real3 dxi, Int3 final_index, - Real3 final_offset, Real3 final_pos_normalized, - real_t shift) +void find_idx_pos_1st_rel(Real3 final_pos, Real3 dxi, Int3 final_index, + Real3 final_pos_normalized, real_t shift) { for (int d = 0; d < 3; d++) { final_pos_normalized[d] = final_pos[d] * dxi[d] + shift; final_index[d] = fint(final_pos_normalized[d]); - final_offset[d] = final_pos_normalized[d] - final_index[d]; } } diff --git a/src/libpsc/psc_push_particles/push_particles_1vb.hxx b/src/libpsc/psc_push_particles/push_particles_1vb.hxx index d5e53ccf8c..912ad48ad7 100644 --- a/src/libpsc/psc_push_particles/push_particles_1vb.hxx +++ b/src/libpsc/psc_push_particles/push_particles_1vb.hxx @@ -61,9 +61,9 @@ struct PushParticlesVb advance.push_x(prt.x(), v); Int3 final_index; - Real3 final_offset, final_pos_normalized; - find_idx_off_pos_1st_rel(prt.x(), dxi, final_index, final_offset, - final_pos_normalized, real_t(0.)); + Real3 final_pos_normalized; + find_idx_pos_1st_rel(prt.x(), dxi, final_index, final_pos_normalized, + real_t(0.)); // CURRENT DENSITY BETWEEN (n+.5)*dt and (n+1.5)*dt int lg[3]; From a0678c9f336b7f44061ab6dd060a3f292490a356 Mon Sep 17 00:00:00 2001 From: James McClung Date: Fri, 30 May 2025 11:03:26 -0400 Subject: [PATCH 9/9] inc_push: fix: pass by reference --- src/libpsc/psc_push_particles/inc_push.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libpsc/psc_push_particles/inc_push.c b/src/libpsc/psc_push_particles/inc_push.c index ca60d369f8..4ca68d6084 100644 --- a/src/libpsc/psc_push_particles/inc_push.c +++ b/src/libpsc/psc_push_particles/inc_push.c @@ -6,8 +6,8 @@ #include "pushp.hxx" template > -void find_idx_pos_1st_rel(Real3 final_pos, Real3 dxi, Int3 final_index, - Real3 final_pos_normalized, real_t shift) +void find_idx_pos_1st_rel(Real3 final_pos, Real3 dxi, Int3& final_index, + Real3& final_pos_normalized, real_t shift) { for (int d = 0; d < 3; d++) { final_pos_normalized[d] = final_pos[d] * dxi[d] + shift;