Creating nuclear data using NJOY
Created by: paulromano
This pull request introduces a new capbility to generate an IncidentNeutron
or ThermalScattering
object using NJOY (which is now open source) by adding from_njoy
classmethods. These functionally work as though they were from_endf
because they accept the name of an ENDF file, but under the hood, NJOY is run to produce ACE files (at multiple temperatures if desired) and then from_ace
is used to instantiate the corresponding incident neutron or thermal scattering data. The new methods are also "smart" in that they will automatically add fission energy release data from the ENDF file as well as 0 K elastic scattering data (using the pointwise ENDF file generated during the NJOY run).
Implementation: there is a new openmc.data.njoy
interface which provides make_pendf
, make_ace
and make_ace_thermal
functions. All of these use a central run
function. The run
function has optional arguments njoy_exec
(to specify the location of the NJOY executable -- assumed to just be 'njoy' by default) and stdout
(if you want to see the progress of the NJOY run). Keyword arguments are passed through the series of calls from IncidentNeutron.from_njoy
to make_ace
to run
, so, e.g., you can call
u235 = openmc.data.IncidentNeutron.from_njoy('U235.endf', stdout=True)
Right now, reconstruction/broadening error tolerances are not configurable, but we can change that if need be.
With this functionality, it is now much easier for a user to generate an HDF5 library for use in OpenMC given a set of ENDF files.