Building a Simple HDF5 Library#

Let’s say you want to build an HDF5 library based on the ENDF-B/VIII.0 evaluations. The first step is downloading the corresponding tapes from the IAEA database, I usually use as many processes as possible using the -j flag:

$ ndf install endfb8 -j 30

Most of the time requirement for downloading the libraries is in the overhead of making the HTTP requests rather than actually receiving data, so using multiple processes is very beneficial.

Once the installation is done, define what your library should look like in a YAML file:

# endfb8.yml
name: endfb8
summary: A library based on the ENDF-B/VIII.0 evaluations.
description: |
  This defines a library based on the ENDF-B/VIII.0 evaluations.
neutron:
  base: endfb8
  temperatures: 250 294 600 900 1200 2500
photon:
  base: endfb8
tsl:
  base: endfb8

Now run NDOmcer with:

$ ndo build endfb8.yml -j 30

You can then check that you can use the library correctly with OpenMC:

from ndmanager.API.openmc import set_nuclear_data
from reactor import model
set_nuclear_data("endfb8")
model.run()

This should not return any error.

I you’d like to add new temperatures after the library is already built, you can rerun NDOmcer with new value. Only temperature that do not already exist in the processed library with be built. The resulting file will then be merged into the library:

$ ndo build endfb8.yml -j 30 --temperatures 400