Static mesh refinement currently fails with particles; particles are communicated to incorrect fine blocks across refinement boundaries. This PR fixes that by changing the way we set the internal neighbor connectivity matrix in the swarm machinery. Instead of a bunch of hardcoded indexing specific to dimension and no refinement, I create test points for each halo neighbor block at the maximum possible refinement level, and test whether those points are contained by any neighbor blocks. Works for neighbor connectivity including across trees and across periodic boundaries.
PR Checklist
[x] Code passes cpplint
[ ] New features are documented.
[x] Adds a test for any bugs fixed. Adds tests for new features.
[x] Code is formatted
[x] Changes are summarized in CHANGELOG.md
[ ] Change is breaking (API, behavior, ...)
[ ] Change is additionally added to CHANGELOG.md in the breaking section
[ ] PR is marked as breaking
[ ] Short summary API changes at the top of the PR (plus optionally with an automated update/fix script)
[ ] CI has been triggered on Darwin for performance regression tests.
[x] Docs build
[x] (@lanl.gov employees) Update copyright on changed files
PR Summary
Static mesh refinement currently fails with particles; particles are communicated to incorrect fine blocks across refinement boundaries. This PR fixes that by changing the way we set the internal neighbor connectivity matrix in the swarm machinery. Instead of a bunch of hardcoded indexing specific to dimension and no refinement, I create test points for each halo neighbor block at the maximum possible refinement level, and test whether those points are contained by any neighbor blocks. Works for neighbor connectivity including across trees and across periodic boundaries.
PR Checklist