Elastic scattering of U238 can create secondary neutrons?

Hello group,

I printed tracks of a neutron probably triggering fission reactions. The screenshot below has the terminal output (verbosity 10) and the particle track h5 file. By comparing these output files, it seems the primary neutron (red box) experienced two elastic scattering at row 2 and 3 of the particle track file, and it continues to travel until row 5 (problem boundary reached).

However, it also seems that each of these “elastic scattering” reactions produces a secondary neutron (blue and green box, respectively), as the location of row 6 is identical to that of row 3, and the location of row 9 is the same as that of row 2. Are these actually elastic scattering? If so, how could secondary neutrons be produced? If not, say they are fission reactions basically, how can the incident neutron survive?

What’s more, when I looked at the source code of “sample_neutron_reaction(p)” and “sample_fission(nuclide, p)” in physics.cpp, I found that it seems no probabilistic sampling is done. I.e. whenever a neutron hits a fissionable nuclide within the fissionable energy range, a fission reaction will occur.

sample_neutron_reaction:

sample_fission:

According to my understanding, once a neutron hit a fissionable nuclide, whether a fission reaction occurs would be sampled probabilistically. Furthermore, if it is a fission reaction, the incident neutrons should be killed, but it’s none of the case in the screenshot above. Did I misunderstand anything? Could anyone help with me? Many thanks in advance.

Best,
Xinyan

Fission neutron production in OpenMC happens probabilistically rather than in an analog fashion, where fission is basically an absorption reaction that results in the original neutron being terminated. Instead, at each collision, we “bank” the expected number of fission neutrons produced per collision (look for the division by the total cross section in create_fission_sites) so that the average works out correctly. So, as with many things in a MC simulation, it is not microscopically correct for any given collision but produces the correct average behavior. Other MC codes operate in a similar manner too.

1 Like

Hi Paul,

Thank you for your explanation. It is very clear!

Xinyan