Use face adjacencies to enter element from implicit complement#215
Draft
pshriwise wants to merge 3 commits intoxdg-org:mainfrom
Draft
Use face adjacencies to enter element from implicit complement#215pshriwise wants to merge 3 commits intoxdg-org:mainfrom
pshriwise wants to merge 3 commits intoxdg-org:mainfrom
Conversation
…specific need that functionality is addressing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This contains a set of changes to allow the
XDG::sgementscall to use mesh adjacencies when finding an entering intersection into the volumetric mesh.XDG::segmentsis the primary call used to separate particle tracks for superimposed tally meshes in particle transport.Currently, a finite ray given to
segmentscan undergo a glancing intersection with a face when attempting to enter/re-enter the mesh. The query performed at the intersection location + a small amount can result in a failure to find an element in these cases, causing the method to return early as a result as it becomes unclear how to proceed in determining if the ray intersects any additional elements along it's length. This can prevent subsequent ray segments volumetric beyond this glancing intersection from being recorded.The updates here use a new
get_boundary_face_elementto enter the element adjacent to the face. Meshes and transport simulations that have previously raise the warning insegmentsregarding failure to find an element after an intersection no longer do in this scenario and tally results match other tracklength estimator schemes in OpenMC. Further testing is warranted, however -- particularly integrated testing in the repo itself. While a good amount of testing was done for superimposed meshes that partially covered the domain, I don't think the geometries were such that glancing intersections were likely. We can now improve on this in benchmark and integrated testing.The new
get_boundary_face_elementmethod is named as such because for MOAB meshes only these adjacencies are established in the direct access manager.Alternatives
When the
find_elementcall fails at the entering intersection location, fire another ray from the location +TINY_BITunder the assumption that the initial intersection discovered is a glancing intersection and repeat this process at the next intersection location should one be found closer than what distance remains for the finite ray. This option likely isn't as robust as entering an element via adjacencies nor is it as performant due to the (now) unecessaryfind_elementcall when entering a volumetric mesh element.TODO: