The ndo Command#
The NDOmcer module provides the ndo command to manage your HDF5 OpenMC
processed nuclear data files.
There are two ways of obtaining nuclear data in the HDF5 format for use with
OpenMC: downloading from the official OpenMC website and build your own library
using OpenMC’s python API.
All data is stored in a directory defined by the NDMANAGER_HDF5
environment variable, which you can set in your .bashrc file or equivalent.
Listing Installed and Installable libraries#
The ndo list shows the OpenMC nuclear data libraries installed on your system as well
the official libraries that you can download from the OpenMC website:
$ ndo list
---------------------------------------------- Installable Libraries ----------------------------------------------
official/endfb71 ENDF-B/VII.1 [✓]: Official OpenMC library based on ENDF-B/VII.1
official/endfb8 ENDF-B/VIII.0 [ ]: Official OpenMC library based on ENDF-B/VIII.0
official/jeff33 JEFF-3.3 [ ]: Official OpenMC library based on JEFF-3.3
lanl/endfb70 ENDF-B/VII.0 [✓]: ENDF-B/VII.0 based library converted from ACE files distributed with MCNP5/6
lanl/endfb71 ENDF-B/VII.1 [✓]: ENDF-B/VII.1 based library converted from ACE files distributed with MCNP5/6
lanl/endfb8 ENDF-B.VIII.0 [ ]: ENDF-B/VIII.0 based library converted from ACE files distributed by Los Alamos
National lab (LANL)
------------------------------------------------ Custom Libraries -------------------------------------------------
cendl32 A library based on the CENDL-3.2 evaluations.
Here, you can see that I have installed three official libraries, and that I personnaly built an additionnal one based on CENDL-3.2.
Installing Official Libraries#
The ndo install lets you download and install libraries from OpenMC’s official website:
$ ndo install lanl/endfb8
This will download the library archive, extract it, and move the files to NDManager’s database.
Removing a Library#
If a library takes too much space on you disk you can simply remove it:
$ ndo remove lanl/endfb8
Building Your Own Library#
The main purpose of the NDOmcer module is to build nuclear data libraries in the HDF5 format
for use in OpenMC.
To do this the ndo build command should be provided the path to a YAML file containing
a structured description of the target library’s content.
A valid ndo input file should contain the following information:
A
summaryelement giving a short description of the libraryA
descriptionelement giving a more verbose description of the libraryA
nameelement that will be used to refer to the built libraryA
neutronelement with the following sub-elementsThe
baseelement should refer to an ENDF6 library installed with NDFetcher, this is the main source of the ENDF6 tapes for your libraryThe
temperatureelement lists the temperatures for Doppler broadeningThe
omitelement lists the nuclide present in the ENDF6 library that you want to discardThe
addelement tells NDOmcer to use ENDF6 tapes from a library different that the base one. It contains keys named after the desired library, with a list of the desired nuclides
A
photonelement with the following sub-elementsThe
baseelement should refer to an ENDF6 library installed with NDFetcher, this is the main source of the ENDF6 tapes for your libraryThe
omitelement lists the atoms present in the ENDF6 library that you want to discardThe
addelement tells NDOmcer to use ENDF6 tapes from a library different that the base one. It contains keys named after the desired library, with a list of the desired atoms
A
tslelement with the following sub-elementsThe
baseelement should refer to an ENDF6 library installed with NDFetcher, this is the main source of the ENDF6 tapes for your libraryThe
omitelement lists the TSL files present in the ENDF6 library that you want to discard, TSL files should be refered with their explicit names in the NDFetcher databaseThe
addelement tells NDOmcer to use ENDF6 tapes from a library different that the base one. It contains element named after the desired libraries. These elements contain element named after NDFetcher-installed TSL tapes. These elements contain the name of the nuclide to use to build the TSL fileThe
temperatureselement contains the temperature at which to build the files. It contains element named after the desired file. These elements contain the list of temperatures to build (Available temperatures depend on the TSL tape’s content)
Here is a sample of what an ndo file to build a JEFF-3.3 based library looks like:
summary: A library based on the JEFF-3.3 evaluations.
description: |
This defines a library based on the JEFF-3.3 evaluations for
neutron cross-sections and thermal scattering laws, and on
ENDF-B/VIII.0 for gamma photoatomic reactions and atomic
relaxation.
Some evaluations from other libraries are used instead
or in addition to JEFF-3.3 evaluations:
C0: JEFF-3.3 contains C0 and C13 isotopes of carbon. Since
using C0 can cause some issues running the same problem
with multiple libraries, I prefer to remove them and
use ENDF-B/VIII.0 carbon instead. Normally you would also
build TSL libraries using C0, I substitute it for C12.
C12: See C0
C13: See C0. The C13 evaluation of JEFF-3.3 is faulty anyway.
Ta180: OpenMC wrongly defines natural Ta as containing Ta180
instead of Ta180M because ENDF-B/VIII.0 has no Ta180M
evaluation. Since JEFF-3.3 has no Ta180, materials
containing Ta will crash simulations.
O17: The O17 evaluation of JEFF-3.3 is faulty. I use the ENDF-B/VIII.0
evaluation instead.
name: jeff33
neutron:
base: jeff33
temperatures: 250 294 600 900 1200 2500
omit: C0
add:
endfb8: Ta180 C12 C13 O17
photon:
base: endfb8
tsl:
base: jeff33
add:
jeff33:
tsl_0031_Graphite.endf6: C12
Once you input file is done, you can execute the build command.
You can allocate multiple processes to the build using the -j flag:
$ ndo build jeff33.yml -j 40
You can remove the existing library using ndo remove or provide the --clean to
ndo build overwrite it.
You can override the list of neutron temperatures using the --temperatures flag following by a
list of temperatures.
$ ndo build jeff33.yml --clean --temperatures 600 -j 40
If the library name already exists and you just want to add new temperature to the build, you can rerun the build command with new temperature and these build be simply added to the existing files.
Dealing With Negative KERMA Values#
The NDOmcer provides a last command that fills a very specific purpose: fixing the issues of negative kerma (MT=301 reactions) for many isotopes in some evaluations. These negative kermas can cause unphysical results if you are trying to tally heating in a material than contains them.
The ndo sn301 (as in “substitute negative values for MT=301”) takes a target library name that will be modified, and a list of source libraries from which MT=301 values will be taken.
These sources libraries will be searched one by one util a suitable MT=301 value is found.
If none is found, the kerma will be set to zero.
Typical use:
$ ndo sn301 --target jeff33 --sources endfb8 jendl5 cendl32 tendl23
Not providing any source library will simply set the faulty cross-sections to zero.