How openmc deal with cross-sectional data

Hello!

   The upper limit of many elements' cross-sectional data in the 

ENDF_B-VII.0 is 20MeV. If some of the neutrons’ energy is exceeds
20MeV, how does OpenMC handle it during calculation? Is it directly
killing this particle? Where can I find the relevant instructions in
the OpenMC manual?

Thanks

Hello,

As you can see from a typical output from running openmc, you’ll get a message like this:

 Maximum neutron transport energy: 20000000 eV for N15

If a particle is sampled above the upper bound energy, a new energy is retried. So, the particles are not killed, it’s instead that the energy distribution will be truncated and re scaled to fall in the allowable range. You can see the relevant behavior in src/source.cpp. Do you think this should be specifically noted in the documentation?

1 Like

Thanks for taking the time to answer my question.Your help is greatly appreciated.

Openmc is not unable to handle energy above 20MeV, it has a global energy upper limit, which is achieved by traversing the energy upper limit of the nuclides involved in the simulation, taking its minimum value as the global energy upper limit, and then when the neutron energy is sampled, if this global upper limit is exceeded, the sampling is repeated until the neutron energy falls within the global upper limit. In other words, if there are two nuclides in a simulation, the energy of nuclide 1 is 150 MeV, and the energy of nuclide 2 is 30 MeV, then the maximum energy of neutrons in this simulation is 30 MeV, which is a conservative design to ensure that all nuclides can be supported by valid data.