NJOY error when trying to create thermal scattering data in ACE format for graphite at T=900K

I am trying to use the njoy.make_ace_thermal method to create thermal scattering data in ACE format for graphite at 900K. I am sourcing my ENDF files from NNDC.

Here is my input

openmc.data.njoy.make_ace_thermal('endfb71_ace/neutrons/n-006_C_000.endf',
                                                             'endfb71_ace/thermal_scatt/tsl-graphite.endf',
                                                             temperatures=[900], 
                                                             stdout=True)

When running this command, I get the following output:

 njoy 2016.67  26May22                                       09/27/22 12:22:05
 *****************************************************************************

 reconr...                                                                0.0s

 broadr...                                                                0.1s

 thermr...                                                                0.1s

 wrote thermal data for temp = 9.0000E+02                                 2.6s

 thermr...                                                                2.6s

 ***error in calcem***desired temperature not found.
 
STOP 77

I did some digging and reconstructed the NJOY command file:

reconr / %%%%%%%%%%%%%%%%%%% Reconstruct XS for neutrons %%%%%%%%%%%%%%%%%%%%%%%
20 22
'ENDF/B-7.1 PENDF for   6-C -  0 '
600 2
0.001/ err
'ENDF/B-7.1:   6-C -  0 '/\n'Processed by NJOY'
0

broadr / %%%%%%%%%%%%%%%%%%%%%%% Doppler broaden XS %%%%%%%%%%%%%%%%%%%%%%%%%%%%
20 22 23
600 1 0 0 0. 0.001/ errthn
900
0

thermr / %%%%%%%%%%%%%%%% Add thermal scattering data (free gas) %%%%%%%%%%%%%%%
0 23 24
0 600 12 1 1 0 0 1 221 1
900
0.001 2.024
thermr / %%%%%%%%%%%%%%%% Add thermal scattering data (bound) %%%%%%%%%%%%%%%%%%
21 24 25
31 600 16 1 2 1 0 1 222 1
900
0.001 2.024

acer / %%%%%%%%%%%%%%%%%%%%%%%% Write out in ACE format %%%%%%%%%%%%%%%%%%%%%%%%
20 25 0 26 27
2 0 1 .01
'ENDF/B-7.1: graphite processed by NJOY'
600 900 'graph' 3 
6000 6012 6013 
222 64 223 0 1 2.024 2
stop

20 refers to n-006_C_000.endf, and 21 refers to tsl-graphite.endf. 600 refers to the material in n-006_C_000.endf.

According to the NJOY manual, this error is raised when the the temperature requested in THERMR is not found in the input PENDF tape. But according to the NJOY commands, we create PENDF tape 23 at a temperature of 900K, and 23 is the input PENDF to THERMR, so there shouldn’t be any problem.

Any idea what could be going on here? I’m not super familiar with NJOY.

Hey @oyardas2! The problem is that unlike incident neutron data, you cannot ask for thermal scattering data at just any old temperature — it has to be one of the temperatures listed on the ENDF thermal scattering evaluation. For the graphite evaluation in ENDF/B-VII.1, the available temperatures are as follows:

In [1]: import openmc

In [2]: graphite = openmc.data.ThermalScattering.from_endf('/opt/data/endf/endf-b-vii.1/thermal_scatt/tsl-graphite.endf')

In [3]: graphite.temperatures
Out[3]: 
['296K',
 '400K',
 '500K',
 '600K',
 '700K',
 '800K',
 '1000K',
 '1200K',
 '1600K',
 '2000K']

So, you can ask for 800 K or 1000 K, but not 900 K.

Thanks for the clarification Paul. That’s a bummer that NJOY can’t scale thermal scattering data. Is that just a limitation of our physics, or is that something that is mathematically possible to do but just outside of NJOYs capabilities?

I’d say mostly in the realm of “not mathematically possible”, although I guess it’s debatable. You would have to have some assumption about the temperature dependence of the phonon frequency spectrum. What is clear is that there is no clear analytical formula for Doppler broadening like there is for plain neutron cross sections.