Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
c254885
+test_reflective_bcs: copy from psc_shock for now
JamesMcClung Mar 31, 2025
44fbb09
test_reflective_bcs: bounce particle off wall
JamesMcClung Mar 31, 2025
4865b06
test_reflective_bcs: add slight z velocity
JamesMcClung Apr 3, 2025
37901a3
test_reflective_bcs: bring back full shocks setup that fails
JamesMcClung Apr 3, 2025
f105198
test_reflective_bcs: assert err<threshold with gtest
JamesMcClung Apr 3, 2025
dab1b6b
test_reflective_bcs: cleanup
JamesMcClung Apr 3, 2025
951e0b8
test_reflective_bcs: simplify while still failing
JamesMcClung Apr 4, 2025
a1b6ed9
test_reflective_bcs: use just 1 particle
JamesMcClung Apr 11, 2025
523bf7c
fields_item, +add_ghosts: extract add_ghosts_reflecting_hi
JamesMcClung Apr 11, 2025
3b66b72
test_reflective_bcs: don't dump
JamesMcClung Apr 15, 2025
4b5a7a9
checks_impl: -MP template from ChecksCommon
JamesMcClung Apr 15, 2025
11cad3b
test_reflective_bcs: rename test1
JamesMcClung Apr 17, 2025
3d549bc
test_reflective_bcs: add unit tests that fail
JamesMcClung Apr 17, 2025
06c02f8
fields_item, add_ghosts_reflecting: mv lo
JamesMcClung Apr 17, 2025
f23e966
test_reflective_bcs: some magic numbers
JamesMcClung Apr 17, 2025
21f48bb
test_reflective_bcs: inline setup_params
JamesMcClung Apr 17, 2025
604003c
test_reflective_bcs: mv mpi init
JamesMcClung Apr 17, 2025
9639430
test_reflective_bcs: impl AddGhostsReflectingHighY
JamesMcClung Apr 17, 2025
55b5444
add_ghosts_reflecting: fix sign errors in y idx
JamesMcClung Apr 17, 2025
4b7f8c4
add_ghosts_reflecting: scan entire ghost region
JamesMcClung Apr 17, 2025
0737f05
test_reflective_bcs: impl AddGhostsReflectingHighZ
JamesMcClung Apr 17, 2025
546496e
add_ghosts_reflecting: also fix z
JamesMcClung Apr 17, 2025
94cd195
add_ghosts_reflecting: reorder iter
JamesMcClung Apr 17, 2025
4131f1f
add_ghosts_reflecting: generalize
JamesMcClung Apr 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions src/include/add_ghosts_reflecting.hxx
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#pragma once

#include "../kg/include/kg/Vec3.h"
#include "grid.hxx"

template <typename FE>
void add_ghosts_reflecting_lo(const Int3& ldims, FE& mres_gt, const Int3& ib,
int p, int d, int mb, int me)
{
int bx = ldims[0] == 1 ? 0 : 1;
if (d == 1) {
for (int iz = -1; iz < ldims[2] + 1; iz++) {
for (int ix = -bx; ix < ldims[0] + bx; ix++) {
int iy = 0;
{
for (int m = mb; m < me; m++) {
mres_gt(ix - ib[0], iy - ib[1], iz - ib[2], m, p) +=
mres_gt(ix - ib[0], iy - 1 - ib[1], iz - ib[2], m, p);
}
}
}
}
} else if (d == 2) {
for (int iy = 0 * -1; iy < ldims[1] + 0 * 1; iy++) {
for (int ix = -bx; ix < ldims[0] + bx; ix++) {
int iz = 0;
{
for (int m = mb; m < me; m++) {
mres_gt(ix - ib[0], iy - ib[1], iz - ib[2], m, p) +=
mres_gt(ix - ib[0], iy - ib[1], iz - 1 - ib[2], m, p);
}
}
}
}
} else {
assert(0);
}
}

template <typename FE>
void add_ghosts_reflecting_hi(const Int3& ldims, FE& mres_gt, const Int3& ib,
int p, int d, int mb, int me)
{
// FIXME only need to scan 1 cell into the ghost region for 1st-order moments

Int3 idx_end = ldims - ib;
Int3 idx_begin = ib;

idx_begin[d] = ldims[d] + ib[d];
idx_end[d] = ldims[d];

Int3 idx;

for (int m = mb; m < me; m++) {
for (idx[2] = idx_begin[2]; idx[2] < idx_end[2]; idx[2]++) {
for (idx[1] = idx_begin[1]; idx[1] < idx_end[1]; idx[1]++) {
for (idx[0] = idx_begin[0]; idx[0] < idx_end[0]; idx[0]++) {
Int3 idx_reflected = idx;
idx_reflected[d] = 2 * ldims[d] - idx[d] - 1;

auto val_reflected =
mres_gt(idx_reflected[0] - ib[0], idx_reflected[1] - ib[1],
idx_reflected[2] - ib[2], m, p);

mres_gt(idx[0] - ib[0], idx[1] - ib[1], idx[2] - ib[2], m, p) +=
val_reflected;
}
}
}
}
}
69 changes: 1 addition & 68 deletions src/include/fields_item.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "fields3d.hxx"
#include "particles.hxx"
#include "psc_fields_c.h"
#include "add_ghosts_reflecting.hxx"

#include <mrc_profile.h>

Expand Down Expand Up @@ -53,74 +54,6 @@ private:
// ----------------------------------------------------------------------
// boundary stuff FIXME, should go elsewhere...

template <typename FE>
void add_ghosts_reflecting_lo(const Int3& ldims, FE& mres_gt, const Int3& ib,
int p, int d, int mb, int me)
{
int bx = ldims[0] == 1 ? 0 : 1;
if (d == 1) {
for (int iz = -1; iz < ldims[2] + 1; iz++) {
for (int ix = -bx; ix < ldims[0] + bx; ix++) {
int iy = 0;
{
for (int m = mb; m < me; m++) {
mres_gt(ix - ib[0], iy - ib[1], iz - ib[2], m, p) +=
mres_gt(ix - ib[0], iy - 1 - ib[1], iz - ib[2], m, p);
}
}
}
}
} else if (d == 2) {
for (int iy = 0 * -1; iy < ldims[1] + 0 * 1; iy++) {
for (int ix = -bx; ix < ldims[0] + bx; ix++) {
int iz = 0;
{
for (int m = mb; m < me; m++) {
mres_gt(ix - ib[0], iy - ib[1], iz - ib[2], m, p) +=
mres_gt(ix - ib[0], iy - ib[1], iz - 1 - ib[2], m, p);
}
}
}
}
} else {
assert(0);
}
}

template <typename FE>
void add_ghosts_reflecting_hi(const Int3& ldims, FE& mres_gt, const Int3& ib,
int p, int d, int mb, int me)
{
int bx = ldims[0] == 1 ? 0 : 1;
if (d == 1) {
for (int iz = -1; iz < ldims[2] + 1; iz++) {
for (int ix = -bx; ix < ldims[0] + bx; ix++) {
int iy = ldims[1] - 1;
{
for (int m = mb; m < me; m++) {
mres_gt(ix - ib[0], iy - ib[1], iz - ib[2], m, p) +=
mres_gt(ix - ib[0], iy - 1 + ib[1], iz - ib[2], m, p);
}
}
}
}
} else if (d == 2) {
for (int iy = 0 * -1; iy < ldims[1] + 0 * 1; iy++) {
for (int ix = -bx; ix < ldims[0] + bx; ix++) {
int iz = ldims[2] - 1;
{
for (int m = mb; m < me; m++) {
mres_gt(ix - ib[0], iy - ib[1], iz - ib[2], m, p) +=
mres_gt(ix - ib[0], iy - ib[1], iz + 1 - ib[2], m, p);
}
}
}
}
} else {
assert(0);
}
}

template <typename FE>
void add_ghosts_boundary(const Grid_t& grid, FE& mres_gt, const Int3& ib,
int p, int mb, int me)
Expand Down
5 changes: 2 additions & 3 deletions src/libpsc/psc_checks/checks_impl.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -209,11 +209,10 @@ struct checks_order_2nd
using Moment_rho_nc = Moment_rho_2nd_nc<S, D>;
};

template <typename MP, typename S, typename ITEM_RHO>
template <typename S, typename ITEM_RHO>
class ChecksCommon
{
public:
using Mparticles = MP;
using storage_type = S;
using item_rho_type = ITEM_RHO;

Expand All @@ -228,5 +227,5 @@ public:

template <typename MP, typename MF, typename ORDER, typename D>
using Checks_ =
ChecksCommon<MP, typename MF::Storage,
ChecksCommon<typename MF::Storage,
typename ORDER::template Moment_rho_nc<typename MF::Storage, D>>;
1 change: 1 addition & 0 deletions src/libpsc/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ add_psc_test(test_rng)
add_psc_test(test_mparticles_cuda)
add_psc_test(test_mparticles)
add_psc_test(test_output_particles)
add_psc_test(test_reflective_bcs)
add_psc_test(test_mfields)
add_psc_test(test_mfields_cuda)
add_psc_test(test_bnd)
Expand Down
Loading
Loading