Minimal wmp simulation with minimal cross_section.xml

Hi all

Just trying to carry out a fixed source simulation using WMP Windowed Multipole Library and can’t quite get it working.

I get the error
ERROR: Could not find nuclide P31 in the nuclear data library.

So I’ve tried including a type neutron in the cross_sections.xml but that produces another error
ERROR: Nuclear data library does not contain cross sections for P31 at or near
400.000000 K.

So I don’t think that it is making use of the WMP cross section at this point.

I have used the settings.temperature = {‘multipole’: True}, registered the wmp h5 file and set the cell / material temperatures.

But I must have missed something to enable the use of WMP, any hints appreciated

cross_sections.xml (226 Bytes) ENDFB-7.1-NNDC_P31.h5 (393.8 KB) ENDFB-7.1-WMP_P31.h5 (297.7 KB) geometry.xml (217 Bytes) materials.xml (160 Bytes) settings.xml (392 Bytes) simulate.py (1.0 KB) .

I have a minimal cross_sections.xml, materials.xml, settings.xml and geometry.xml along with a python script attached to this post.

Hi @Shimwell,

Because of material temperature at 400 K at which data doesn’t exist in that case you have to define method for treating intermediate temperature.


settings.temperature = {'multipole': True, 'method': 'interpolation', 'range': (300.0, 600.0)}

Hope this will help!

Thanks @Pranto

I’ve tried this enlarged dictionary but unfortunately O still can’t get it to work.

I’ve also tried adding P31 type ‘neutron’ to the cross section.xml but that also didn’t quite work for me either

Attached is a screen shot showing the two attempts with the new settings.temperature

Hi @Shimwell

You have data at only one temperature and my guess it is 294 K. That’s why you see the above error. You can check it by

import openmc.data
d = openmc.data.IncidentNeutron.from_hdf5('P31.h5')
d.temperatures

I can confirm that the ENDFB-7.1-NNDC_P31.h5 has just one temperature at 294K but I thought the WMP h5 file brought in the extra temperatures.

Jumping in on this thread. The test case you set up is pretty useful. Diving in a little deeper it looks like OpenMC still checks for data at the right temperature on the import of the NNDC file before importing the WMP file (github). You can get around this by setting the temperature tolerance to a high value. Maybe try:

settings.temperature = {'multipole': False, 'tolerance':400}

Not sure if this is recommended procedure for all problems, but works fine if you know some of the limits of using WMP data

1 Like

Nice work around, I shall give it a go soon.

Also thanks for pointing out that line on the Github. I think that really gets to the root of the problem.

I wondering if a condition should be added to that line, perhaps something like if WMP cross section is used then don’t perform this temperature check.

1 Like

Ok that looks like it is simulating and working. Good to know that a non WMP cross section is needed to accompany the WMP cross section.

Thanks for your help Pranto and Isaac

To expand on the reasoning here – windowed multipole data only provides cross sections for the resolved resonance region. Temperature-dependent data is still needed for the unresolved resonance region and thermal region (for moderators), so even if you’re using WMP, the code needs to know how you intend to deal with data outside the resolved region. By setting a large tolerance, you’re telling OpenMC “use a single temperature for the URR and thermal regions”. Depending on your problem, that may or may not be acceptable.

1 Like