Check for zero fission cross section before sampling fission reaction #2600
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
As described in #2599, OpenMC runs into problems when a threshold fission reaction is present. Specifically, in the following lines:
openmc/src/physics.cpp
Lines 109 to 110 in 3f9cd0d
we assume that if a nuclide is fissionable, we can sample a fission reaction. Normally there is just a single fission reaction so the sampling step is trivial, but when you have first-chance, second-chance, etc. fission, it's necessary to pick one of them for the sake of producing fission neutrons. This happens with Pu244 in JEFF 3.3 which both has threshold fission where the fission cross section is 0 below a cutoff and has multiple fission reactions. In this case, for energies below the cutoff, OpenMC will abort with:
The fix here is to simply check if the total fission cross section is non-zero before calling
sample_fission
.Fixes #2599
Checklist
I have followed the style guidelines for Python source files (if applicable)I have made corresponding changes to the documentation (if applicable)I have added tests that prove my fix is effective or that my feature works (if applicable)Note that none of the data in the cross section library we use for testing has this condition, so I couldn't really add a test for it.