From ede9b016e853744c9e27bfae9bf6458118ba8574 Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 12:39:20 -0400 Subject: [PATCH 01/15] test_reflective_bcs_integration: +IntegrationZ (fails) --- .../tests/test_reflective_bcs_integration.cxx | 98 ++++++++++++++++++- 1 file changed, 93 insertions(+), 5 deletions(-) diff --git a/src/libpsc/tests/test_reflective_bcs_integration.cxx b/src/libpsc/tests/test_reflective_bcs_integration.cxx index 1dd70e6d2..9abd58997 100644 --- a/src/libpsc/tests/test_reflective_bcs_integration.cxx +++ b/src/libpsc/tests/test_reflective_bcs_integration.cxx @@ -49,11 +49,11 @@ Grid_t* setupGrid() {0, 0, 0}, // location of lower corner {1, 1, 1}}; // n patches - auto bc = - psc::grid::BC{{BND_FLD_PERIODIC, BND_FLD_CONDUCTING_WALL, BND_FLD_PERIODIC}, - {BND_FLD_PERIODIC, BND_FLD_CONDUCTING_WALL, BND_FLD_PERIODIC}, - {BND_PRT_PERIODIC, BND_PRT_REFLECTING, BND_PRT_PERIODIC}, - {BND_PRT_PERIODIC, BND_PRT_REFLECTING, BND_PRT_PERIODIC}}; + auto bc = psc::grid::BC{ + {BND_FLD_PERIODIC, BND_FLD_CONDUCTING_WALL, BND_FLD_CONDUCTING_WALL}, + {BND_FLD_PERIODIC, BND_FLD_CONDUCTING_WALL, BND_FLD_CONDUCTING_WALL}, + {BND_PRT_PERIODIC, BND_PRT_REFLECTING, BND_PRT_REFLECTING}, + {BND_PRT_PERIODIC, BND_PRT_REFLECTING, BND_PRT_REFLECTING}}; auto kinds = Grid_t::Kinds(NR_KINDS); kinds[KIND_ELECTRON] = {-1.0, 1.0, "e"}; @@ -171,6 +171,94 @@ TEST(ReflectiveBcsTest, Integration) ASSERT_LT(prts[1].u()[1], 0.0); } +TEST(ReflectiveBcsTest, IntegrationZ) +{ + // ---------------------------------------------------------------------- + // setup + + psc_params.nmax = 100; + psc_params.stats_every = 1; + psc_params.cfl = .75; + + auto grid_ptr = setupGrid(); + auto& grid = *grid_ptr; + MfieldsState mflds{grid}; + Mparticles mprts{grid}; + + ChecksParams checks_params{}; + checks_params.continuity.check_interval = 1; + checks_params.gauss.check_interval = 1; + Checks checks{grid, MPI_COMM_WORLD, checks_params}; + + Balance balance{.1}; + Collision collision{grid, 0, 0.1}; + Marder marder(grid, 0.9, 3, false); + + OutputFields outf{grid, {}}; + OutputParticles outp{grid, {}}; + DiagEnergies oute{grid.comm(), 0}; + auto diagnostics = makeDiagnosticsDefault(outf, outp, oute); + + auto psc = + makePscIntegrator(psc_params, *grid_ptr, mflds, mprts, balance, + collision, checks, marder, diagnostics); + + // ---------------------------------------------------------------------- + // set up initial conditions + + EXPECT_EQ(grid.n_patches(), 1); + int p = 0; + + { + auto injector = mprts.injector(); + auto inj = injector[p]; + double vz = 100; // fast enough to escape electric attraction + double z_center = grid.domain.length[2] / 2.0; + // inject 2 particles at same location to satisfy Gauss' law at t=0 + inj({{0, 5, z_center}, {0, 0, -vz}, 1, 0}); // electron + inj({{0, 5, z_center}, {0, 0, vz}, 1, 1}); // positron + } + + // ---------------------------------------------------------------------- + // run the simulation + + auto accessor = mprts.accessor(); + auto prts = accessor[p]; + + ASSERT_EQ(prts.size(), 2); + ASSERT_LT(prts[0].u()[2], 0.0); + ASSERT_GT(prts[1].u()[2], 0.0); + + ASSERT_EQ(prts[0].m(), 1.0); + ASSERT_EQ(prts[1].m(), 1.0); + + ASSERT_EQ(prts[0].q(), -1.0); + ASSERT_EQ(prts[1].q(), 1.0); + + bool about_to_reflect = false; + bool reflected = false; + + for (; grid.timestep_ < psc_params.nmax; grid.timestep_++) { + psc.step(); + EXPECT_LT(checks.continuity.last_max_err, checks.continuity.err_threshold); + EXPECT_LT(checks.gauss.last_max_err, checks.gauss.err_threshold); + + if (prts[0].u()[2] > 0.0) { + reflected = about_to_reflect; + break; + } + + about_to_reflect = + prts[0].x()[2] < grid.domain.dx[2] / 2.0 && prts[0].u()[2] < 0.0; + } + + ASSERT_TRUE(reflected) << "timestep " << grid.timestep_; + + ASSERT_EQ(prts.size(), 2); + ASSERT_GT(prts[0].u()[2], 0.0); + ASSERT_LT(prts[1].u()[2], 0.0); +} + // ====================================================================== // main From a59b46db11c7a116d059b252e650c22d2f43814a Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 13:28:25 -0400 Subject: [PATCH 02/15] test_reflective_bcs_integration: specify Y --- src/libpsc/tests/test_reflective_bcs_integration.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libpsc/tests/test_reflective_bcs_integration.cxx b/src/libpsc/tests/test_reflective_bcs_integration.cxx index 9abd58997..8e816eb8d 100644 --- a/src/libpsc/tests/test_reflective_bcs_integration.cxx +++ b/src/libpsc/tests/test_reflective_bcs_integration.cxx @@ -83,7 +83,7 @@ Grid_t* setupGrid() // ====================================================================== // Integration test (pun not intended) -TEST(ReflectiveBcsTest, Integration) +TEST(ReflectiveBcsTest, IntegrationY) { // ---------------------------------------------------------------------- // setup From 089612ced4b2864d6ce49713f9e94affc3c15a07 Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 14:56:18 -0400 Subject: [PATCH 03/15] test_reflective_bcs_integration: mv start pos --- src/libpsc/tests/test_reflective_bcs_integration.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libpsc/tests/test_reflective_bcs_integration.cxx b/src/libpsc/tests/test_reflective_bcs_integration.cxx index 8e816eb8d..ad83cc881 100644 --- a/src/libpsc/tests/test_reflective_bcs_integration.cxx +++ b/src/libpsc/tests/test_reflective_bcs_integration.cxx @@ -125,10 +125,10 @@ TEST(ReflectiveBcsTest, IntegrationY) auto injector = mprts.injector(); auto inj = injector[p]; double vy = 100; // fast enough to escape electric attraction - double y_center = grid.domain.length[1] / 2.0; + double y_quarter = grid.domain.length[1] / 4.0; // inject 2 particles at same location to satisfy Gauss' law at t=0 - inj({{0, y_center, 5}, {0, -vy, 0}, 1, 0}); // electron - inj({{0, y_center, 5}, {0, vy, 0}, 1, 1}); // positron + inj({{0, y_quarter, 5}, {0, -vy, 0}, 1, 0}); // electron + inj({{0, y_quarter, 5}, {0, vy, 0}, 1, 1}); // positron } // ---------------------------------------------------------------------- @@ -213,10 +213,10 @@ TEST(ReflectiveBcsTest, IntegrationZ) auto injector = mprts.injector(); auto inj = injector[p]; double vz = 100; // fast enough to escape electric attraction - double z_center = grid.domain.length[2] / 2.0; + double z_quarter = grid.domain.length[2] / 4.0; // inject 2 particles at same location to satisfy Gauss' law at t=0 - inj({{0, 5, z_center}, {0, 0, -vz}, 1, 0}); // electron - inj({{0, 5, z_center}, {0, 0, vz}, 1, 1}); // positron + inj({{0, 5, z_quarter}, {0, 0, -vz}, 1, 0}); // electron + inj({{0, 5, z_quarter}, {0, 0, vz}, 1, 1}); // positron } // ---------------------------------------------------------------------- From 736c7f89c4e4c12a46f6a83000ca4c5334ab7a09 Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 15:04:31 -0400 Subject: [PATCH 04/15] test_reflective_bcs_integration: stricter detect --- src/libpsc/tests/test_reflective_bcs_integration.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libpsc/tests/test_reflective_bcs_integration.cxx b/src/libpsc/tests/test_reflective_bcs_integration.cxx index ad83cc881..9f0a26c8d 100644 --- a/src/libpsc/tests/test_reflective_bcs_integration.cxx +++ b/src/libpsc/tests/test_reflective_bcs_integration.cxx @@ -155,7 +155,7 @@ TEST(ReflectiveBcsTest, IntegrationY) EXPECT_LT(checks.continuity.last_max_err, checks.continuity.err_threshold); EXPECT_LT(checks.gauss.last_max_err, checks.gauss.err_threshold); - if (prts[0].u()[1] > 0.0) { + if (prts[0].x()[1] < grid.domain.dx[1] && prts[0].u()[1] > 0.0) { reflected = about_to_reflect; break; } @@ -243,7 +243,7 @@ TEST(ReflectiveBcsTest, IntegrationZ) EXPECT_LT(checks.continuity.last_max_err, checks.continuity.err_threshold); EXPECT_LT(checks.gauss.last_max_err, checks.gauss.err_threshold); - if (prts[0].u()[2] > 0.0) { + if (prts[0].x()[2] < grid.domain.dx[2] && prts[0].u()[2] > 0.0) { reflected = about_to_reflect; break; } From a3041666f2d90c85986248564c877b80cbf3d3b9 Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 15:10:23 -0400 Subject: [PATCH 05/15] test_reflective_bcs_integration: shorter nmax --- src/libpsc/tests/test_reflective_bcs_integration.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libpsc/tests/test_reflective_bcs_integration.cxx b/src/libpsc/tests/test_reflective_bcs_integration.cxx index 9f0a26c8d..4f48c238f 100644 --- a/src/libpsc/tests/test_reflective_bcs_integration.cxx +++ b/src/libpsc/tests/test_reflective_bcs_integration.cxx @@ -88,7 +88,7 @@ TEST(ReflectiveBcsTest, IntegrationY) // ---------------------------------------------------------------------- // setup - psc_params.nmax = 100; + psc_params.nmax = 20; psc_params.stats_every = 1; psc_params.cfl = .75; @@ -176,7 +176,7 @@ TEST(ReflectiveBcsTest, IntegrationZ) // ---------------------------------------------------------------------- // setup - psc_params.nmax = 100; + psc_params.nmax = 20; psc_params.stats_every = 1; psc_params.cfl = .75; From 8a6e04ab70f152c2606ba14f70ff053be28b8e5f Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 15:15:08 -0400 Subject: [PATCH 06/15] test_reflective_bcs_integration: asserts --- src/libpsc/tests/test_reflective_bcs_integration.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libpsc/tests/test_reflective_bcs_integration.cxx b/src/libpsc/tests/test_reflective_bcs_integration.cxx index 4f48c238f..e58eda3eb 100644 --- a/src/libpsc/tests/test_reflective_bcs_integration.cxx +++ b/src/libpsc/tests/test_reflective_bcs_integration.cxx @@ -152,8 +152,8 @@ TEST(ReflectiveBcsTest, IntegrationY) for (; grid.timestep_ < psc_params.nmax; grid.timestep_++) { psc.step(); - EXPECT_LT(checks.continuity.last_max_err, checks.continuity.err_threshold); - EXPECT_LT(checks.gauss.last_max_err, checks.gauss.err_threshold); + ASSERT_LT(checks.continuity.last_max_err, checks.continuity.err_threshold); + ASSERT_LT(checks.gauss.last_max_err, checks.gauss.err_threshold); if (prts[0].x()[1] < grid.domain.dx[1] && prts[0].u()[1] > 0.0) { reflected = about_to_reflect; @@ -240,8 +240,8 @@ TEST(ReflectiveBcsTest, IntegrationZ) for (; grid.timestep_ < psc_params.nmax; grid.timestep_++) { psc.step(); - EXPECT_LT(checks.continuity.last_max_err, checks.continuity.err_threshold); - EXPECT_LT(checks.gauss.last_max_err, checks.gauss.err_threshold); + ASSERT_LT(checks.continuity.last_max_err, checks.continuity.err_threshold); + ASSERT_LT(checks.gauss.last_max_err, checks.gauss.err_threshold); if (prts[0].x()[2] < grid.domain.dx[2] && prts[0].u()[2] > 0.0) { reflected = about_to_reflect; From 226b55644b9e009927fcf343b38ee385eb23a017 Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 15:35:55 -0400 Subject: [PATCH 07/15] test_reflective_bcs_integration: drop old assert --- src/libpsc/tests/test_reflective_bcs_integration.cxx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/libpsc/tests/test_reflective_bcs_integration.cxx b/src/libpsc/tests/test_reflective_bcs_integration.cxx index e58eda3eb..765c92ed6 100644 --- a/src/libpsc/tests/test_reflective_bcs_integration.cxx +++ b/src/libpsc/tests/test_reflective_bcs_integration.cxx @@ -168,7 +168,6 @@ TEST(ReflectiveBcsTest, IntegrationY) ASSERT_EQ(prts.size(), 2); ASSERT_GT(prts[0].u()[1], 0.0); - ASSERT_LT(prts[1].u()[1], 0.0); } TEST(ReflectiveBcsTest, IntegrationZ) @@ -256,7 +255,6 @@ TEST(ReflectiveBcsTest, IntegrationZ) ASSERT_EQ(prts.size(), 2); ASSERT_GT(prts[0].u()[2], 0.0); - ASSERT_LT(prts[1].u()[2], 0.0); } // ====================================================================== From 823079e61ee50902af037361cfa0e16038bb45ad Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 16:06:04 -0400 Subject: [PATCH 08/15] test_reflective_bcs_integration: fix detect --- src/libpsc/tests/test_reflective_bcs_integration.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libpsc/tests/test_reflective_bcs_integration.cxx b/src/libpsc/tests/test_reflective_bcs_integration.cxx index 765c92ed6..44d4901d0 100644 --- a/src/libpsc/tests/test_reflective_bcs_integration.cxx +++ b/src/libpsc/tests/test_reflective_bcs_integration.cxx @@ -151,6 +151,9 @@ TEST(ReflectiveBcsTest, IntegrationY) bool reflected = false; for (; grid.timestep_ < psc_params.nmax; grid.timestep_++) { + about_to_reflect = + prts[0].x()[1] < grid.domain.dx[1] && prts[0].u()[1] < 0.0; + psc.step(); ASSERT_LT(checks.continuity.last_max_err, checks.continuity.err_threshold); ASSERT_LT(checks.gauss.last_max_err, checks.gauss.err_threshold); @@ -159,9 +162,6 @@ TEST(ReflectiveBcsTest, IntegrationY) reflected = about_to_reflect; break; } - - about_to_reflect = - prts[0].x()[1] < grid.domain.dx[1] / 2.0 && prts[0].u()[1] < 0.0; } ASSERT_TRUE(reflected) << "timestep " << grid.timestep_; @@ -238,6 +238,9 @@ TEST(ReflectiveBcsTest, IntegrationZ) bool reflected = false; for (; grid.timestep_ < psc_params.nmax; grid.timestep_++) { + about_to_reflect = + prts[0].x()[2] < grid.domain.dx[2] && prts[0].u()[2] < 0.0; + psc.step(); ASSERT_LT(checks.continuity.last_max_err, checks.continuity.err_threshold); ASSERT_LT(checks.gauss.last_max_err, checks.gauss.err_threshold); @@ -246,9 +249,6 @@ TEST(ReflectiveBcsTest, IntegrationZ) reflected = about_to_reflect; break; } - - about_to_reflect = - prts[0].x()[2] < grid.domain.dx[2] / 2.0 && prts[0].u()[2] < 0.0; } ASSERT_TRUE(reflected) << "timestep " << grid.timestep_; From 20be7b997ecfb26e616a065e85b96a84c8e103ac Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 15:27:56 -0400 Subject: [PATCH 09/15] psc_bnd_fields_impl: change xbnds --- .../psc_bnd_fields/psc_bnd_fields_impl.hxx | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx index 85e49486e..f912def4a 100644 --- a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx +++ b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx @@ -190,7 +190,8 @@ struct BndFields_ : BndFieldsBase } #endif for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { + for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); + ix++) { F(EX, ix, iy, 0) = 0.; F(EX, ix, iy, -1) = F(EX, ix, iy, 1); F(EZ, ix, iy, -1) = -F(EZ, ix, iy, 0); @@ -199,7 +200,8 @@ struct BndFields_ : BndFieldsBase } for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { + for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); + ix++) { F(EY, ix, iy, 0) = 0.; F(EY, ix, iy, -1) = F(EY, ix, iy, 1); } @@ -261,7 +263,8 @@ struct BndFields_ : BndFieldsBase } #endif for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { + for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); + ix++) { F(EX, ix, iy, mz) = 0.; F(EX, ix, iy, mz + 1) = F(EX, ix, iy, mz - 1); F(EZ, ix, iy, mz) = -F(EZ, ix, iy, mz - 1); @@ -270,7 +273,8 @@ struct BndFields_ : BndFieldsBase } for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { + for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); + ix++) { F(EY, ix, iy, mz) = 0.; F(EY, ix, iy, mz + 1) = F(EY, ix, iy, mz - 1); } @@ -327,14 +331,16 @@ struct BndFields_ : BndFieldsBase } #endif for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { + for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); + ix++) { F(HZ, ix, iy, -1) = F(HZ, ix, iy, 1); F(HX, ix, iy, -1) = -F(HX, ix, iy, 0); F(HX, ix, iy, -2) = -F(HX, ix, iy, 1); } } for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { + for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); + ix++) { F(HY, ix, iy, -1) = -F(HY, ix, iy, 0); F(HY, ix, iy, -2) = -F(HY, ix, iy, 1); } @@ -394,14 +400,16 @@ struct BndFields_ : BndFieldsBase } #endif for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { + for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); + ix++) { F(HZ, ix, iy, mz + 1) = F(HZ, ix, iy, mz - 1); F(HX, ix, iy, mz) = -F(HX, ix, iy, mz - 1); F(HX, ix, iy, mz + 1) = -F(HX, ix, iy, mz - 2); } } for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { + for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); + ix++) { F(HY, ix, iy, mz) = -F(HY, ix, iy, mz - 1); F(HY, ix, iy, mz + 1) = -F(HY, ix, iy, mz - 2); } From 96409829f6de6c812848c7650c59a22fdfb2aefd Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 16:33:28 -0400 Subject: [PATCH 10/15] psc_bnd_fields_impl: fix conducting j --- src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx index f912def4a..ac8d3dc88 100644 --- a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx +++ b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx @@ -443,7 +443,7 @@ struct BndFields_ : BndFieldsBase for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { - F(JZI, ix, iy, 0) -= F(JZI, ix, iy, -1); + F(JZI, ix, iy, 1) -= F(JZI, ix, iy, -2); F(JZI, ix, iy, 0) -= F(JZI, ix, iy, -1); F(JZI, ix, iy, -1) = 0.; F(JXI, ix, iy, 1) += F(JXI, ix, iy, -1); From 671c96784735950809b44dd50359db2dca459811 Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 16:10:38 -0400 Subject: [PATCH 11/15] psc_bnd_fields_impl: change a bound --- src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx index ac8d3dc88..5c01e1f44 100644 --- a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx +++ b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx @@ -304,7 +304,7 @@ struct BndFields_ : BndFieldsBase } } #endif - for (int iz = -1; iz < ldims[2] + 1; iz++) { + for (int iz = -1; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { F(HY, ix, -1, iz) = F(HY, ix, 1, iz); From e0f1bb7fed8c61e9be56066b131a5c1aae2cdb37 Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 16:41:19 -0400 Subject: [PATCH 12/15] psc_bnd_fields_impl: combine/reorder loops --- .../psc_bnd_fields/psc_bnd_fields_impl.hxx | 94 ++++++++----------- 1 file changed, 37 insertions(+), 57 deletions(-) diff --git a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx index 5c01e1f44..fda8be9bb 100644 --- a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx +++ b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx @@ -163,14 +163,10 @@ struct BndFields_ : BndFieldsBase F(EX, ix, 0, iz) = 0.; F(EX, ix, -1, iz) = F(EX, ix, 1, iz); F(EX, ix, -2, iz) = F(EX, ix, 2, iz); + F(EY, ix, -1, iz) = -F(EY, ix, 0, iz); F(EY, ix, -2, iz) = -F(EY, ix, 1, iz); - } - } - for (int iz = -2; iz < ldims[2] + 2; iz++) { - for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); - ix++) { F(EZ, ix, 0, iz) = 0.; F(EZ, ix, -1, iz) = F(EZ, ix, 1, iz); F(EZ, ix, -2, iz) = F(EZ, ix, 2, iz); @@ -194,16 +190,12 @@ struct BndFields_ : BndFieldsBase ix++) { F(EX, ix, iy, 0) = 0.; F(EX, ix, iy, -1) = F(EX, ix, iy, 1); - F(EZ, ix, iy, -1) = -F(EZ, ix, iy, 0); - F(EZ, ix, iy, -2) = -F(EZ, ix, iy, 1); - } - } - for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); - ix++) { F(EY, ix, iy, 0) = 0.; F(EY, ix, iy, -1) = F(EY, ix, iy, 1); + + F(EZ, ix, iy, -1) = -F(EZ, ix, iy, 0); + F(EZ, ix, iy, -2) = -F(EZ, ix, iy, 1); } } } else { @@ -237,13 +229,9 @@ struct BndFields_ : BndFieldsBase ix++) { F(EX, ix, my, iz) = 0.; F(EX, ix, my + 1, iz) = F(EX, ix, my - 1, iz); + F(EY, ix, my, iz) = -F(EY, ix, my - 1, iz); - } - } - for (int iz = -2; iz < ldims[2] + 2; iz++) { - for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); - ix++) { F(EZ, ix, my, iz) = 0.; F(EZ, ix, my + 1, iz) = F(EZ, ix, my - 1, iz); } @@ -267,16 +255,12 @@ struct BndFields_ : BndFieldsBase ix++) { F(EX, ix, iy, mz) = 0.; F(EX, ix, iy, mz + 1) = F(EX, ix, iy, mz - 1); - F(EZ, ix, iy, mz) = -F(EZ, ix, iy, mz - 1); - F(EZ, ix, iy, mz + 1) = -F(EZ, ix, iy, mz - 2); - } - } - for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); - ix++) { F(EY, ix, iy, mz) = 0.; F(EY, ix, iy, mz + 1) = F(EY, ix, iy, mz - 1); + + F(EZ, ix, iy, mz) = -F(EZ, ix, iy, mz - 1); + F(EZ, ix, iy, mz + 1) = -F(EZ, ix, iy, mz - 2); } } } else { @@ -307,13 +291,10 @@ struct BndFields_ : BndFieldsBase for (int iz = -1; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { - F(HY, ix, -1, iz) = F(HY, ix, 1, iz); F(HX, ix, -1, iz) = -F(HX, ix, 0, iz); - } - } - for (int iz = -1; iz < ldims[2] + 2; iz++) { - for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); - ix++) { + + F(HY, ix, -1, iz) = F(HY, ix, 1, iz); + F(HZ, ix, -1, iz) = -F(HZ, ix, 0, iz); } } @@ -333,16 +314,13 @@ struct BndFields_ : BndFieldsBase for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { - F(HZ, ix, iy, -1) = F(HZ, ix, iy, 1); F(HX, ix, iy, -1) = -F(HX, ix, iy, 0); F(HX, ix, iy, -2) = -F(HX, ix, iy, 1); - } - } - for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); - ix++) { + F(HY, ix, iy, -1) = -F(HY, ix, iy, 0); F(HY, ix, iy, -2) = -F(HY, ix, iy, 1); + + F(HZ, ix, iy, -1) = F(HZ, ix, iy, 1); } } } else { @@ -374,14 +352,11 @@ struct BndFields_ : BndFieldsBase for (int iz = -2; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { - F(HY, ix, my + 1, iz) = F(HY, ix, my - 1, iz); F(HX, ix, my, iz) = -F(HX, ix, my - 1, iz); F(HX, ix, my + 1, iz) = -F(HX, ix, my - 2, iz); - } - } - for (int iz = -2; iz < ldims[2] + 2; iz++) { - for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); - ix++) { + + F(HY, ix, my + 1, iz) = F(HY, ix, my - 1, iz); + F(HZ, ix, my, iz) = -F(HZ, ix, my - 1, iz); F(HZ, ix, my + 1, iz) = -F(HZ, ix, my - 2, iz); } @@ -402,16 +377,13 @@ struct BndFields_ : BndFieldsBase for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { - F(HZ, ix, iy, mz + 1) = F(HZ, ix, iy, mz - 1); F(HX, ix, iy, mz) = -F(HX, ix, iy, mz - 1); F(HX, ix, iy, mz + 1) = -F(HX, ix, iy, mz - 2); - } - } - for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); - ix++) { + F(HY, ix, iy, mz) = -F(HY, ix, iy, mz - 1); F(HY, ix, iy, mz + 1) = -F(HY, ix, iy, mz - 2); + + F(HZ, ix, iy, mz + 1) = F(HZ, ix, iy, mz - 1); } } } else { @@ -429,12 +401,14 @@ struct BndFields_ : BndFieldsBase for (int iz = -2; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { + F(JXI, ix, 1, iz) += F(JXI, ix, -1, iz); + F(JXI, ix, -1, iz) = 0.; + F(JYI, ix, 1, iz) -= F(JYI, ix, -2, iz); F(JYI, ix, 0, iz) -= F(JYI, ix, -1, iz); F(JYI, ix, -1, iz) = 0.; F(JYI, ix, -2, iz) = 0.; - F(JXI, ix, 1, iz) += F(JXI, ix, -1, iz); - F(JXI, ix, -1, iz) = 0.; + F(JZI, ix, 1, iz) += F(JZI, ix, -1, iz); F(JZI, ix, -1, iz) = 0.; } @@ -443,13 +417,15 @@ struct BndFields_ : BndFieldsBase for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { - F(JZI, ix, iy, 1) -= F(JZI, ix, iy, -2); - F(JZI, ix, iy, 0) -= F(JZI, ix, iy, -1); - F(JZI, ix, iy, -1) = 0.; F(JXI, ix, iy, 1) += F(JXI, ix, iy, -1); F(JXI, ix, iy, -1) = 0.; + F(JYI, ix, iy, 1) += F(JYI, ix, iy, -1); F(JYI, ix, iy, -1) = 0.; + + F(JZI, ix, iy, 1) -= F(JZI, ix, iy, -2); + F(JZI, ix, iy, 0) -= F(JZI, ix, iy, -1); + F(JZI, ix, iy, -1) = 0.; } } } else { @@ -468,12 +444,14 @@ struct BndFields_ : BndFieldsBase for (int iz = -2; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { + F(JXI, ix, my - 1, iz) += F(JXI, ix, my + 1, iz); + F(JXI, ix, my + 1, iz) = 0.; + F(JYI, ix, my - 2, iz) -= F(JYI, ix, my + 1, iz); F(JYI, ix, my - 1, iz) -= F(JYI, ix, my, iz); F(JYI, ix, my, iz) = 0.; F(JYI, ix, my + 1, iz) = 0.; - F(JXI, ix, my - 1, iz) += F(JXI, ix, my + 1, iz); - F(JXI, ix, my + 1, iz) = 0.; + F(JZI, ix, my - 1, iz) += F(JZI, ix, my + 1, iz); F(JZI, ix, my + 1, iz) = 0.; } @@ -483,12 +461,14 @@ struct BndFields_ : BndFieldsBase for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { - F(JZI, ix, iy, mz - 1) -= F(JZI, ix, iy, mz); - F(JZI, ix, iy, mz) = 0.; F(JXI, ix, iy, mz - 1) += F(JXI, ix, iy, mz + 1); F(JXI, ix, iy, mz + 1) = 0.; + F(JYI, ix, iy, mz - 1) += F(JYI, ix, iy, mz + 1); F(JYI, ix, iy, mz + 1) = 0.; + + F(JZI, ix, iy, mz - 1) -= F(JZI, ix, iy, mz); + F(JZI, ix, iy, mz) = 0.; } } } else { From 97133ec79c9a8b4225d024e55f9da012e7b50522 Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 16:56:55 -0400 Subject: [PATCH 13/15] psc_bnd_fields_impl: consistently do 1 ghost cell --- .../psc_bnd_fields/psc_bnd_fields_impl.hxx | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx index fda8be9bb..b8ee7318a 100644 --- a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx +++ b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx @@ -162,14 +162,11 @@ struct BndFields_ : BndFieldsBase ix++) { F(EX, ix, 0, iz) = 0.; F(EX, ix, -1, iz) = F(EX, ix, 1, iz); - F(EX, ix, -2, iz) = F(EX, ix, 2, iz); F(EY, ix, -1, iz) = -F(EY, ix, 0, iz); - F(EY, ix, -2, iz) = -F(EY, ix, 1, iz); F(EZ, ix, 0, iz) = 0.; F(EZ, ix, -1, iz) = F(EZ, ix, 1, iz); - F(EZ, ix, -2, iz) = F(EZ, ix, 2, iz); } } } else if (d == 2) { @@ -195,7 +192,6 @@ struct BndFields_ : BndFieldsBase F(EY, ix, iy, -1) = F(EY, ix, iy, 1); F(EZ, ix, iy, -1) = -F(EZ, ix, iy, 0); - F(EZ, ix, iy, -2) = -F(EZ, ix, iy, 1); } } } else { @@ -260,7 +256,6 @@ struct BndFields_ : BndFieldsBase F(EY, ix, iy, mz + 1) = F(EY, ix, iy, mz - 1); F(EZ, ix, iy, mz) = -F(EZ, ix, iy, mz - 1); - F(EZ, ix, iy, mz + 1) = -F(EZ, ix, iy, mz - 2); } } } else { @@ -315,10 +310,8 @@ struct BndFields_ : BndFieldsBase for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { F(HX, ix, iy, -1) = -F(HX, ix, iy, 0); - F(HX, ix, iy, -2) = -F(HX, ix, iy, 1); F(HY, ix, iy, -1) = -F(HY, ix, iy, 0); - F(HY, ix, iy, -2) = -F(HY, ix, iy, 1); F(HZ, ix, iy, -1) = F(HZ, ix, iy, 1); } @@ -353,12 +346,10 @@ struct BndFields_ : BndFieldsBase for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { F(HX, ix, my, iz) = -F(HX, ix, my - 1, iz); - F(HX, ix, my + 1, iz) = -F(HX, ix, my - 2, iz); F(HY, ix, my + 1, iz) = F(HY, ix, my - 1, iz); F(HZ, ix, my, iz) = -F(HZ, ix, my - 1, iz); - F(HZ, ix, my + 1, iz) = -F(HZ, ix, my - 2, iz); } } } else if (d == 2) { @@ -378,10 +369,8 @@ struct BndFields_ : BndFieldsBase for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { F(HX, ix, iy, mz) = -F(HX, ix, iy, mz - 1); - F(HX, ix, iy, mz + 1) = -F(HX, ix, iy, mz - 2); F(HY, ix, iy, mz) = -F(HY, ix, iy, mz - 1); - F(HY, ix, iy, mz + 1) = -F(HY, ix, iy, mz - 2); F(HZ, ix, iy, mz + 1) = F(HZ, ix, iy, mz - 1); } @@ -404,10 +393,8 @@ struct BndFields_ : BndFieldsBase F(JXI, ix, 1, iz) += F(JXI, ix, -1, iz); F(JXI, ix, -1, iz) = 0.; - F(JYI, ix, 1, iz) -= F(JYI, ix, -2, iz); F(JYI, ix, 0, iz) -= F(JYI, ix, -1, iz); F(JYI, ix, -1, iz) = 0.; - F(JYI, ix, -2, iz) = 0.; F(JZI, ix, 1, iz) += F(JZI, ix, -1, iz); F(JZI, ix, -1, iz) = 0.; @@ -423,7 +410,6 @@ struct BndFields_ : BndFieldsBase F(JYI, ix, iy, 1) += F(JYI, ix, iy, -1); F(JYI, ix, iy, -1) = 0.; - F(JZI, ix, iy, 1) -= F(JZI, ix, iy, -2); F(JZI, ix, iy, 0) -= F(JZI, ix, iy, -1); F(JZI, ix, iy, -1) = 0.; } @@ -447,10 +433,8 @@ struct BndFields_ : BndFieldsBase F(JXI, ix, my - 1, iz) += F(JXI, ix, my + 1, iz); F(JXI, ix, my + 1, iz) = 0.; - F(JYI, ix, my - 2, iz) -= F(JYI, ix, my + 1, iz); F(JYI, ix, my - 1, iz) -= F(JYI, ix, my, iz); F(JYI, ix, my, iz) = 0.; - F(JYI, ix, my + 1, iz) = 0.; F(JZI, ix, my - 1, iz) += F(JZI, ix, my + 1, iz); F(JZI, ix, my + 1, iz) = 0.; From f5765b8ad9bae3365e87637ed2ce24b17d27a54a Mon Sep 17 00:00:00 2001 From: James McClung Date: Mon, 20 Oct 2025 16:20:08 -0400 Subject: [PATCH 14/15] psc_bnd_fields_impl: rm if debugs --- .../psc_bnd_fields/psc_bnd_fields_impl.hxx | 98 ------------------- 1 file changed, 98 deletions(-) diff --git a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx index b8ee7318a..acf638610 100644 --- a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx +++ b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx @@ -143,19 +143,6 @@ struct BndFields_ : BndFieldsBase Int3 ib = mflds.ib(), im = mflds.im(); if (d == 1) { -#ifdef DEBUG - for (int iz = -2; iz < ldims[2] + 2; iz++) { - for (int ix = MAX(-2, F.ib_[0]); - ix < MIN(ldims[0] + 2, F.ib_[0] + F.im_[0]); ix++) { - fields_t_set_nan(&F(EX, ix, -1, iz)); - fields_t_set_nan(&F(EX, ix, -2, iz)); - fields_t_set_nan(&F(EY, ix, -1, iz)); - fields_t_set_nan(&F(EY, ix, -2, iz)); - fields_t_set_nan(&F(EZ, ix, -1, iz)); - fields_t_set_nan(&F(EZ, ix, -2, iz)); - } - } -#endif for (int iz = -2; iz < ldims[2] + 2; iz++) { // FIXME, needs to be for other dir, too, and it's ugly for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); @@ -170,18 +157,6 @@ struct BndFields_ : BndFieldsBase } } } else if (d == 2) { -#ifdef DEBUG - for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { - fields_t_set_nan(&F(EX, ix, iy, -1)); - fields_t_set_nan(&F(EX, ix, iy, -2)); - fields_t_set_nan(&F(EY, ix, iy, -1)); - fields_t_set_nan(&F(EY, ix, iy, -2)); - fields_t_set_nan(&F(EZ, ix, iy, -1)); - fields_t_set_nan(&F(EZ, ix, iy, -2)); - } - } -#endif for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -207,19 +182,6 @@ struct BndFields_ : BndFieldsBase if (d == 1) { int my _mrc_unused = ldims[1]; -#ifdef DEBUG - for (int iz = -2; iz < ldims[2] + 2; iz++) { - for (int ix = MAX(-2, F.ib_[0]); - ix < MIN(ldims[0] + 2, F.ib_[0] + F.im_[0]); ix++) { - fields_t_set_nan(&F(EX, ix, my, iz)); - fields_t_set_nan(&F(EX, ix, my + 1, iz)); - fields_t_set_nan(&F(EY, ix, my, iz)); - fields_t_set_nan(&F(EY, ix, my + 1, iz)); - fields_t_set_nan(&F(EZ, ix, my, iz)); - fields_t_set_nan(&F(EZ, ix, my + 1, iz)); - } - } -#endif for (int iz = -2; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -234,18 +196,6 @@ struct BndFields_ : BndFieldsBase } } else if (d == 2) { int mz = ldims[2]; -#ifdef DEBUG - for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { - fields_t_set_nan(&F(EX, ix, iy, mz)); - fields_t_set_nan(&F(EX, ix, iy, mz + 1)); - fields_t_set_nan(&F(EY, ix, iy, mz)); - fields_t_set_nan(&F(EY, ix, iy, mz + 1)); - fields_t_set_nan(&F(EZ, ix, iy, mz)); - fields_t_set_nan(&F(EZ, ix, iy, mz + 1)); - } - } -#endif for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -270,19 +220,6 @@ struct BndFields_ : BndFieldsBase Int3 ib = mflds.ib(), im = mflds.im(); if (d == 1) { -#ifdef DEBUG - for (int iz = -2; iz < ldims[2] + 2; iz++) { - for (int ix = MAX(-2, F.ib_[0]); - ix < MIN(ldims[0] + 2, F.ib_[0] + F.im_[0]); ix++) { - fields_t_set_nan(&F(HX, ix, -1, iz)); - fields_t_set_nan(&F(HX, ix, -2, iz)); - fields_t_set_nan(&F(HY, ix, -1, iz)); - fields_t_set_nan(&F(HY, ix, -2, iz)); - fields_t_set_nan(&F(HZ, ix, -1, iz)); - fields_t_set_nan(&F(HZ, ix, -2, iz)); - } - } -#endif for (int iz = -1; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -294,18 +231,6 @@ struct BndFields_ : BndFieldsBase } } } else if (d == 2) { -#ifdef DEBUG - for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { - fields_t_set_nan(&F(HX, ix, iy, -1)); - fields_t_set_nan(&F(HX, ix, iy, -2)); - fields_t_set_nan(&F(HY, ix, iy, -1)); - fields_t_set_nan(&F(HY, ix, iy, -2)); - fields_t_set_nan(&F(HZ, ix, iy, -1)); - fields_t_set_nan(&F(HZ, ix, iy, -2)); - } - } -#endif for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -330,18 +255,6 @@ struct BndFields_ : BndFieldsBase if (d == 1) { int my _mrc_unused = ldims[1]; -#ifdef DEBUG - for (int iz = -2; iz < ldims[2] + 2; iz++) { - for (int ix = MAX(-2, F.ib_[0]); - ix < MIN(ldims[0] + 2, F.ib_[0] + F.im_[0]); ix++) { - fields_t_set_nan(&F(HX, ix, my, iz)); - fields_t_set_nan(&F(HX, ix, my + 1, iz)); - fields_t_set_nan(&F(HY, ix, my + 1, iz)); - fields_t_set_nan(&F(HZ, ix, my, iz)); - fields_t_set_nan(&F(HZ, ix, my + 1, iz)); - } - } -#endif for (int iz = -2; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -354,17 +267,6 @@ struct BndFields_ : BndFieldsBase } } else if (d == 2) { int mz = ldims[2]; -#ifdef DEBUG - for (int iy = -2; iy < ldims[1] + 2; iy++) { - for (int ix = -2; ix < ldims[0] + 2; ix++) { - fields_t_set_nan(&F(HX, ix, iy, mz)); - fields_t_set_nan(&F(HX, ix, iy, mz + 1)); - fields_t_set_nan(&F(HY, ix, iy, mz)); - fields_t_set_nan(&F(HY, ix, iy, mz + 1)); - fields_t_set_nan(&F(HZ, ix, iy, mz + 1)); - } - } -#endif for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { From 2027ac31e754208909a9098afce63271128bb063 Mon Sep 17 00:00:00 2001 From: James McClung Date: Fri, 24 Oct 2025 14:25:31 -0400 Subject: [PATCH 15/15] psc_bnd_fields_impl: restore if debugs This reverts commit f5765b8ad9bae3365e87637ed2ce24b17d27a54a. --- .../psc_bnd_fields/psc_bnd_fields_impl.hxx | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx index acf638610..b8ee7318a 100644 --- a/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx +++ b/src/libpsc/psc_bnd_fields/psc_bnd_fields_impl.hxx @@ -143,6 +143,19 @@ struct BndFields_ : BndFieldsBase Int3 ib = mflds.ib(), im = mflds.im(); if (d == 1) { +#ifdef DEBUG + for (int iz = -2; iz < ldims[2] + 2; iz++) { + for (int ix = MAX(-2, F.ib_[0]); + ix < MIN(ldims[0] + 2, F.ib_[0] + F.im_[0]); ix++) { + fields_t_set_nan(&F(EX, ix, -1, iz)); + fields_t_set_nan(&F(EX, ix, -2, iz)); + fields_t_set_nan(&F(EY, ix, -1, iz)); + fields_t_set_nan(&F(EY, ix, -2, iz)); + fields_t_set_nan(&F(EZ, ix, -1, iz)); + fields_t_set_nan(&F(EZ, ix, -2, iz)); + } + } +#endif for (int iz = -2; iz < ldims[2] + 2; iz++) { // FIXME, needs to be for other dir, too, and it's ugly for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); @@ -157,6 +170,18 @@ struct BndFields_ : BndFieldsBase } } } else if (d == 2) { +#ifdef DEBUG + for (int iy = -2; iy < ldims[1] + 2; iy++) { + for (int ix = -2; ix < ldims[0] + 2; ix++) { + fields_t_set_nan(&F(EX, ix, iy, -1)); + fields_t_set_nan(&F(EX, ix, iy, -2)); + fields_t_set_nan(&F(EY, ix, iy, -1)); + fields_t_set_nan(&F(EY, ix, iy, -2)); + fields_t_set_nan(&F(EZ, ix, iy, -1)); + fields_t_set_nan(&F(EZ, ix, iy, -2)); + } + } +#endif for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -182,6 +207,19 @@ struct BndFields_ : BndFieldsBase if (d == 1) { int my _mrc_unused = ldims[1]; +#ifdef DEBUG + for (int iz = -2; iz < ldims[2] + 2; iz++) { + for (int ix = MAX(-2, F.ib_[0]); + ix < MIN(ldims[0] + 2, F.ib_[0] + F.im_[0]); ix++) { + fields_t_set_nan(&F(EX, ix, my, iz)); + fields_t_set_nan(&F(EX, ix, my + 1, iz)); + fields_t_set_nan(&F(EY, ix, my, iz)); + fields_t_set_nan(&F(EY, ix, my + 1, iz)); + fields_t_set_nan(&F(EZ, ix, my, iz)); + fields_t_set_nan(&F(EZ, ix, my + 1, iz)); + } + } +#endif for (int iz = -2; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -196,6 +234,18 @@ struct BndFields_ : BndFieldsBase } } else if (d == 2) { int mz = ldims[2]; +#ifdef DEBUG + for (int iy = -2; iy < ldims[1] + 2; iy++) { + for (int ix = -2; ix < ldims[0] + 2; ix++) { + fields_t_set_nan(&F(EX, ix, iy, mz)); + fields_t_set_nan(&F(EX, ix, iy, mz + 1)); + fields_t_set_nan(&F(EY, ix, iy, mz)); + fields_t_set_nan(&F(EY, ix, iy, mz + 1)); + fields_t_set_nan(&F(EZ, ix, iy, mz)); + fields_t_set_nan(&F(EZ, ix, iy, mz + 1)); + } + } +#endif for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -220,6 +270,19 @@ struct BndFields_ : BndFieldsBase Int3 ib = mflds.ib(), im = mflds.im(); if (d == 1) { +#ifdef DEBUG + for (int iz = -2; iz < ldims[2] + 2; iz++) { + for (int ix = MAX(-2, F.ib_[0]); + ix < MIN(ldims[0] + 2, F.ib_[0] + F.im_[0]); ix++) { + fields_t_set_nan(&F(HX, ix, -1, iz)); + fields_t_set_nan(&F(HX, ix, -2, iz)); + fields_t_set_nan(&F(HY, ix, -1, iz)); + fields_t_set_nan(&F(HY, ix, -2, iz)); + fields_t_set_nan(&F(HZ, ix, -1, iz)); + fields_t_set_nan(&F(HZ, ix, -2, iz)); + } + } +#endif for (int iz = -1; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -231,6 +294,18 @@ struct BndFields_ : BndFieldsBase } } } else if (d == 2) { +#ifdef DEBUG + for (int iy = -2; iy < ldims[1] + 2; iy++) { + for (int ix = -2; ix < ldims[0] + 2; ix++) { + fields_t_set_nan(&F(HX, ix, iy, -1)); + fields_t_set_nan(&F(HX, ix, iy, -2)); + fields_t_set_nan(&F(HY, ix, iy, -1)); + fields_t_set_nan(&F(HY, ix, iy, -2)); + fields_t_set_nan(&F(HZ, ix, iy, -1)); + fields_t_set_nan(&F(HZ, ix, iy, -2)); + } + } +#endif for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -255,6 +330,18 @@ struct BndFields_ : BndFieldsBase if (d == 1) { int my _mrc_unused = ldims[1]; +#ifdef DEBUG + for (int iz = -2; iz < ldims[2] + 2; iz++) { + for (int ix = MAX(-2, F.ib_[0]); + ix < MIN(ldims[0] + 2, F.ib_[0] + F.im_[0]); ix++) { + fields_t_set_nan(&F(HX, ix, my, iz)); + fields_t_set_nan(&F(HX, ix, my + 1, iz)); + fields_t_set_nan(&F(HY, ix, my + 1, iz)); + fields_t_set_nan(&F(HZ, ix, my, iz)); + fields_t_set_nan(&F(HZ, ix, my + 1, iz)); + } + } +#endif for (int iz = -2; iz < ldims[2] + 2; iz++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) { @@ -267,6 +354,17 @@ struct BndFields_ : BndFieldsBase } } else if (d == 2) { int mz = ldims[2]; +#ifdef DEBUG + for (int iy = -2; iy < ldims[1] + 2; iy++) { + for (int ix = -2; ix < ldims[0] + 2; ix++) { + fields_t_set_nan(&F(HX, ix, iy, mz)); + fields_t_set_nan(&F(HX, ix, iy, mz + 1)); + fields_t_set_nan(&F(HY, ix, iy, mz)); + fields_t_set_nan(&F(HY, ix, iy, mz + 1)); + fields_t_set_nan(&F(HZ, ix, iy, mz + 1)); + } + } +#endif for (int iy = -2; iy < ldims[1] + 2; iy++) { for (int ix = MAX(-2, ib[0]); ix < MIN(ldims[0] + 2, ib[0] + im[0]); ix++) {