Add corner checks for rectangular lattice crossings #3355
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
There's a rare bug in rectangular lattice crossings where the incorrect cell would be calculated when a particle crosses a corner in a rectangular lattice. This normally doesn't result in any lost particles in actual transport unless a very large lattice is used with many particle histories. This does result in failures when plotting lattice geometries with ray traced plots though, as the camera often views the geometry from an orientation in which rays intersect lattice corners.
This PR fixes this bug by adding a corner check in
RectLattice::distance(...)
to ensure that particles are moved to the correct lattice cell. I've tested this against the minimal working example provided by @gridley in #2445, which is a 2x2 lattice made of iron (blue) and air (green).Particles moving through the centre of the lattice from air -> air should not get attenuated, however the previous lattice offsets were calculated incorrectly and so those particles found their way into the iron cells erroneously (resulting in some attenuation):
Adding a corner check (this PR) to correctly move particles into adjacent cells fixes this issue:
I'm marking this as a draft for the moment until I have the time to add some tests for this fix.
Closes #2445
Checklist
I have followed the style guidelines for Python source files (if applicable)I have made corresponding changes to the documentation (if applicable)