OpenMC temperature dependent cross sections

Hi,

I am trying to couple OpenMC with a thermal hydraulic code. To do this I need to adjust the temperatures at which cross sections are read. My question has two parts

  1. Does the “temperature_method = interpolation” input actually interpolate the cross section data based on the input temperature and the nearest bounding temperatures with data? because in the user guide here it appears to say interpolation just chooses the closer temperature data available.
  2. Is it possible to utilize a thermal scattering library with multipole library data for cross section broadening? I have not found a way to run a case with a thermal scattering library and multipole data yet.
    Any help on this would be greatly appreciated. Thanks!

As the user’s manual indicates, the cross sections at the bounding temperatures are not actually interpolated between in the conventional sense. Rather, at each collision, the code will randomly choose data at one or the other temperature depending on how close the temperature of the material is. For example, if you have data at 300 K and 400 K and your material is actually at 390 K, this means that 90% of the time if will choose the cross sections at 400 K and the other 10% of the time it will choose 300 K.

It is indeed possible to utilize a thermal scattering library along with multipole data. The multipole data is only sufficient for representing resonance region cross sections, so the code still needs S(a,b) tables at thermal energies and probability tables in the unresolved range. For thermal and unresolved, your data will need a normal temperature grid. What you need to do is set the temperature method to “interpolation” but also indicate to use multipole data. This would look like:

settings = openmc.Settings()
settings.temperature = {
‘method’: ‘interpolation’,
‘multipole’: True
}

Thanks for the help Paul. A follow up question.

I have xs data at 600 K, 900 K, and 1200 K. If i try and run with a case with interpolation on, regardless of if the multipole setting is on, then i get the following results

  • for T <= 900 K, k-eff is approximately 1.12
  • for T > 900 K, k-eff is approximately 1.03
    There is a step jump when the temperature of fuel crosses the temperature for which the xs data is actually tabulated at. This is orders of magnitude larger than the difference in k-eff from changing the temperature from 901 K -> 1000 K, or 800 K-900 K. Any idea what is causing this large step change? Other than the specified temperatures for the fuel region the inputs for the cases are all the exact same.
    Thanks

It appears there was a bug that was introduced since the last release version that affected temperature interpolation. However, the bug has now been fixed in the ‘develop’ branch. Note that we recently incremented the version for our data library, so if you haven’t updated in a while, you will need to either regenerate your data library or download the latest library that is used for testing, which you can get at:
https://anl.box.com/shared/static/snrluuy79o2fffpvpng9bsuis5kl811d.xz

Best regards,
Paul