5. Processing GNDS files

The processProtare script (in fudge/bin/processProtare.py) is the main driver for processing nuclear data evaluations. This script can be used to reconstruct resonances (if necessary), heat reaction cross sections to various temperatures, generate group-averaged cross sections and transfer matrices, and generate average product energy and momentum deposition data.

The name processProtare includes the short-hand ‘ProTarE’, which stands for “Projectile, Target and Evaluation”. Each GNDS reactionSuite contains this combination: an evaluation of all reactions involving a combination of projectile and target.

Processed data generated during processProtare are stored internally in Fudge data structures, and once processing is complete the resulting file is written back out as a GNDS/XML file.

5.1. Options for processing

processProtare supports many command-line options. Perhaps the most useful is the ‘-h’ or ‘–help’ option:

>python processProtare.py -h
usage: processProtare.py [-h] [--tag TAG] [-o OUTPUT] [--writeConvertedUnits]
                         [--energyUnit ENERGYUNIT] [-t TEMPERATURES]
                         [--temperatureUnit TEMPERATUREUNIT] [--bdfls BDFLS]
                         [--fluxID FLUXID] [-g GID]
                         [--legendreMax LEGENDREMAX] [-mg] [-mc] [-up]
                         [--reconstruct {all,crossSection,angular}]
                         [--threads THREADS] [-v]
                         [--reconAccuracy RECONACCURACY]
                         [--prefixMultiGroup PREFIXMULTIGROUP]
                         [--prefixMonteCarlo PREFIXMONTECARLO]
                         [--prefixUpscatter PREFIXUPSCATTER]
                         [--prefixHeated PREFIXHEATED] [--prefixAep PREFIXAEP]
                         [--prefixEval PREFIXEVAL] [--prefixRecon PREFIXRECON]
                         gnds

Processes all data in a GNDS file.

positional arguments:
  gnds                   gnds file to process

optional arguments:
  -h, --help            show this help message and exit
  ...

5.2. Sample usage

processProtare takes a GNDS file as input. It also currently requires a LLNL-specific file called ‘bdfls’, which contains a database of group boundaries and fluxes.

After translating an ENDF file into GNDS, you can do simple processing by:

> python processProtare.py GNDS_file_name.xml --bdfls <path_to_fudge>/fudge/legacy/endl/bdfls

This performs basic processing: Doppler-broadens cross sections to 300 K (2.586e-8 MeV/k) and computes average energy and momentum deposited into reaction products. It writes a new processed file with the extension “.proc.xml” (i.e., if the original file was named n-001_H_001.xml, this will output n-001_H_001.proc.xml). This processing adds two new ‘style’ elements to the GNDS file: heated corresponding to the Doppler broadening, and averageProductData corresponding to the energy/momentum calculations.

Below are some examples of more advanced processing options.

Heating cross sections to multiple temperatures:

> python processProtare.py GNDS_file_name.xml --bdfls <path_to_fudge>/fudge/legacy/endl/bdfls -t 300 -t 600 -t 900
        --temperatureUnit K

Using eV instead of the default MeV for energies:

> python processProtare.py GNDS_file_name.xml --bdfls <path_to_fudge>/fudge/legacy/endl/bdfls --energyUnit eV

Heating to two temperatures and generating cumulative distribution functions (CDFs) for faster sampling in Monte Carlo transport codes:

> python processProtare.py GNDS_file_name.xml --bdfls <path_to_fudge>/fudge/legacy/endl/bdfls -t 300 -t 600
        --temperatureUnit K --energyUnit eV -mc

Generating multi-group cross sections and transfer matrices (requires that Merced be compiled):

> python processProtare.py GNDS_file_name.xml --bdfls <path_to_fudge>/fudge/legacy/endl/bdfls -t 300 -t 600
        --temperatureUnit K --energyUnit eV -mg

By default, processProtare uses LLNL’s 230-group energy boundaries for neutrons, 41 groups for photons and 64 groups for light charged particles. Other groups may be selected using the -g option. For example, to select LLNL’s 87-group structure (gid 4) for neutrons:

> python processProtare.py GNDS_file_name.xml --bdfls <path_to_fudge>/fudge/legacy/endl/bdfls -t 300 -t 600
        --temperatureUnit K --energyUnit eV -mg -g n=LLNL_gid_4

Group boundaries are currently defined inside the bdfls file, although we plan to update that to a more user-friendly format soon.

5.3. To-do list

processProtare is not yet complete. Some functionality yet to be implemented:

  • thermal upscattering corrections for elastic transfer matrices
  • processing thermal neutron scattering data including S(alpha,beta)
  • generating probability tables from unresolved resonance parameters
  • reconstructing detailed angular distributions from resonance parameters
  • processing covariances
  • and likely other features