.. _sec-origen:

=============
ORIGEN Module
=============

.. include:: <isonum.txt>

The ORIGEN module drives depletion, decay, and activation calculations
as described in :numref:`origen-method`, including
the conversion of generated powers to fluxes described in
:numref:`origen-power-calc`, as well as alpha, beta, gamma, and neutron
source calculations described in :numref:`origen-decay-calc`.

.. _key-features-1:

Key Features
============

This section briefly highlights some key features in ORIGEN and
describes how they are used.

.. _origen-nuc-spec:

Nuclide Specification and ORIGEN Sub-libraries
----------------------------------------------

The nuclide identifiers in ORIGEN are more flexible than those in other
modules of SCALE and even within the ORIGEN family.
:numref:`table-origen-nuc-spec` shows the possible ways to
specify nuclides (and elements).

.. tabularcolumns:: |\Y{0.30}|\Y{0.40}|\Y{0.125}|\Y{0.125}|
.. table:: Nuclide / element specification in ORIGEN
  :name: table-origen-nuc-spec
  :class: longtable

  +-------------------------------+----------------------+----------------+------------+
  | **Identifier Form**           | **Comments**         | **Examples**   |            |
  |                               |                      +----------------+------------+
  |                               |                      | *nuclide*      | *input id* |
  +===============================+======================+================+============+
  | IZZZAAA                       | Standard numeric     | :sup:`235`\ U  |  92235     |
  |                               | identifier with one  +----------------+------------+ 
  |    I - *isomeric state*       | optional digit of    | :sup:`235m`\ U |  1092235   |
  |                               | isomeric state,      +----------------+------------+
  |    ZZZ - *atomic nummber*     | three digits of      |                |            |
  |                               | atomic number, three | :sup:`135`\ Xe |  54135     |
  |                               | digit of mass        +----------------+------------+
  |    AAA - *mass number*        | number; elements     | :sup:`1`\ H    |  1001      |
  |                               | have mass number of  +----------------+------------+
  |                               | 000.                 | :sup:`10`\ B   |  5010      |
  |                               |                      +----------------+------------+
  |                               |                      | Fe             |  54000     |
  +-------------------------------+----------------------+----------------+------------+
  | EAm                           | Standard symbolic    | :sup:`235`\ U  |  u235      |
  |                               | identifier with      +----------------+------------+
  |    E - *element symbol*       | element symbol       | :sup:`235m`\ U |  u235m     |
  |                               | followed by mass     +----------------+------------+
  |    A - *mass number*          | number, followed by  | :sup:`135`\ Xe |  xe135     |
  |                               | optional metastable  +----------------+------------+
  |    m - *metastable indicator* | indicator; can       | :sup:`1`\ H    |  h1        |
  |                               | include a dash       +----------------+------------+
  |                               | between E and A      | :sup:`10`\ B   |  b10       |
  |                               | (E-Am); case         +----------------+------------+
  |                               | insensitive.         | Fe             |  fe        |
  +-------------------------------+----------------------+----------------+------------+

One important aspect ORIGEN users must be aware of is that the ORIGEN
library (f33) being used dictates the set of nuclides available in a
calculation and that there may be more than one *version* of a nuclide
in a library. The duplicates arise in large part from the need to
analyze fission products separately. For example, a gadolinia-doped
uranium oxide fuel with burnup will have some :sup:`155`\ Gd from the
initial gadolinia loading and some :sup:`155`\ Gd generated as a fission
product. Although these fuels physically behave the same way, it is
sometimes important to be able to analyze them separately. These groups,
versions, or categories are referred to as sublibraries because in an
ORIGEN library, they appear almost like three separate, smaller ORIGEN
libraries. The three libraries are for

  1. naturally occurring, light nuclides, sometimes called "light
     elements" or "activation products,"

  2. actinides and their reaction and decay products, and

  3. fission products.

Called "sublibs" for short, they are identified by a number or
2-character specifier:

  1. light nuclides with "LT" or 1,

  2. actinides with "AC" or 2, and

  3. fission products with "FP" or 3.

The production of fission products from actinides (2/AC3/FP) is the only
type of transition in a typical ORIGEN library that spans sublibs. The
sublib is optional in a nuclide specification and is indicated in
parentheses after the identifier-IZZZAAA(S), EAm(S). If the sublib for a
nuclide/element is not provided, it is guessed in the following manner:

  1. If the nuclide is in fact an element, then it is placed in
     sublib=1/LT.

  2. If the atomic number Z\textlt 26, an *attempt* is made to place it in
     sublib=1/LT.

  3. Otherwise (Z\textgeq 26 or attempt fails), sublibs are searched in reverse
     order, from 3/FP, 2/AC, and then 1/LT.

The third rule, which is to search sublibs in reverse order, correctly
handles spent reactor fuel, a common and important scenario. The other
two conditions can be interpreted as exceptions. The first exception
correctly handles activation scenarios where it is most convenient to
specify the initial elemental constituents. The second exception handles
light nuclides that could not be real fission products, as fission
products have Z\textgeq 26 by definition. The byproducts :sup:`1`\ H,
:sup:`2`\ H, :sup:`3`\ H, :sup:`3`\ He, and :sup:`4`\ He actually exist
in all sublibs, but FP and AC byproducts have a reduced set of
transitions compared to the LT version, which has full decay and
activation chains. Thus when a user specifies one of the byproduct
nuclides as input, it is best to associate it to the LT version.

Physical Units in Calculations
------------------------------

A variety of units can be used in the input and specified for the output
of an ORIGEN calculation. The input allows for initial concentrations in

  1. grams,

  2. moles (or gram-atoms),

  3. number density in atoms/barn-cm, and

  4. curies.

Time may be expressed in seconds, minutes, hours, days, years, or a
user-defined unit. Irradiation may be expressed in terms of neutron flux
(n/cm\ :sup:`2`-s) or power (W). The allowed units for output include
those for input, as well as the following decay quantities:

  1. total decay heat power (W),

  2. gamma decay heat power (W),

  3. airborne toxicity (m\ :sup:`3`) required to dilute activities to the
     Radiation Concentration Guide (RCG) limit for air,

  4. ingestion toxicity (m\ :sup:`3`) required to dilute activities to the
     RCG limit for water, and

  5. alpha, beta, neutron, photon sources (particles/s or MeV/s).


:numref:`table-origen-units` summarizes the available units in
ORIGEN. During irradiation cases, the following can also be returned:

  1. absorption rates (absorptions/s),

  2. fission rates (fissions/s), and

  3. infinite neutron multiplication constant, k\ :math:`_{\infty}`.

.. |x| replace:: :math:`\times`

.. tabularcolumns:: |\Y{0.28}|\Y{0.45}|\Y{0.09}|\Y{0.09}|\Y{0.09}|
.. table:: Availalble physical units in ORIGEN
  :widths: 28 45 9 9 9
  :name: table-origen-units
  :align: center
  :class: longtable


  +-------------------+-----------------+-----------+----------------------------+
  | **Unit name**     | **Description** | **Input** | **Output**                 |
  |                   |                 |           +--------------+-------------+
  |                   |                 |           | **(irrad.)** | **(decay)** |
  +===================+=================+===========+==============+=============+
  | GRAMS             | Mass in grams   |    \*     |     \*       |    \*       |
  +-------------------+-----------------+-----------+--------------+-------------+
  | MOLES or          | Number in moles |    \*     |     \*       |    \*       |
  |                   | (or legcy       |           |              |             |
  | GRAM-ATOMS        | equivalent of   |           |              |             |
  |                   | gram-atoms)     |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+
  | ATOMS-PER-BARN-CM | Density in      |    \*     |     \*       |    \*       |
  |                   | atoms/barn-cm   |           |              |             |
  |                   | (10\ :sup:`-24` |           |              |             |
  |                   | cm/barn |x|     |           |              |             |
  |                   | density in      |           |              |             |
  |                   | atoms/          |           |              |             |
  |                   | cm\ :sup:`3`);  |           |              |             |
  |                   | requires        |           |              |             |
  |                   | volume input    |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+
  | CURIES            | Activity in     |    \*     |     \*       |     \*      |
  |                   | curies          |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+
  | BECQUERELS        | Activity in     |    \*     |     \*       |     \*      |
  |                   | becquerels      |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+
  | ATOMS_PPM         | Atom fractions  |           |     \*       |     \*      |
  |                   | x 10\ :sup:`6`  |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+
  | WEIGHT_PPM        | Weight fractions|           |     \*       |     \*      |
  |                   | x 10\ :sup:`6`  |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+
  | WATTS             | Total decay     |           |              |     \*      |
  |                   | heat in watts   |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+
  | G-WATTS           | Total decay heat|           |              |     \*      |
  |                   | from photons in |           |              |             |
  |                   | watts           |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+
  | M3_AIR            | Radiotoxicity   |           |              |     \*      |
  |                   | m\ :sup:`3` for |           |              |             |
  |                   | for inhalation  |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+
  | M3_WATER          | Radiotoxicity   |           |              |     \*      |
  |                   | in m\ :sup:`3`  |           |              |             |
  |                   | for ingestion   |           |              |             |
  +-------------------+-----------------+-----------+--------------+-------------+


Saving Results
--------------

ORIGEN can save any results (isotopics and source spectra) in a special
ORIGEN binary concentrations file (f71). The file is a simple sequence
of solutions, and new results are simply appended on to the end of an
existing file. Note that no matter how initial isotopics are entered or
what units are asked for in the output file, the ORIGEN f71 contains
**moles** (gram-atoms) of each isotope and an optional **volume** to
permit unit conversions to number density (atoms/barn-cm). Isotopics for
an ORIGEN calculation can be initialized from any position on this file
in an ORIGEN calculation. The f71 can also be read by OPUS to perform
various post-processing tasks.

.. _input-description-2:

Input Description
=================

ORIGEN uses the SCALE Object Notation (SON) language for its input,
although it can also read FIDO-based input for backwards compatibility
with SCALE 6.1 :cite:`ORIGEN-scale61`. The basic structure of an ORIGEN input is shown in
:numref:`fig-origen-input-overview`.


.. code-block:: scale
  :caption: ORIGEN input file overview
  :name: fig-origen-input-overview

   'SCALE comment
   =origen

   % ORIGEN comment %

   bounds{ … }
   solver{ … }
   options{ … }

   case(A){
       time=[31 365] % days
       …
   }

   case(B){
      …
   }
   …
   % more cases?

   end


The ORIGEN input is hierarchical, containing four levels, where level 0
is the "root" level, allowed between "=origen" and "end." The complete
set of keywords is shown in :numref:`table-origen-commands`,
with arrays denoted with "=[]" and blocks with "{}". Referring to the
overview in :numref:`fig-origen-input-overview`, at the root level, there is a
"solver" block for changing solver options, a "bounds" block for entering the
energy  boundaries for various particle emissions, and an "options" block for
altering the miscellaneous global options. These blocks may only appear once.
The remainder of the input is a sequence of "case" blocks (in the above examples
there are two cases with identifiers "A" and "B"), which each case is executed
in order, with each case possibly depending on one or more of the previous cases.

.. tabularcolumns:: |\Y{0.15}|\Y{0.2}|\Y{0.4}|\Y{0.25}|
.. table:: List of all available ORIGEN input commands
   :widths: auto
   :class: longtable
   :name: table-origen-commands
   :align: center

   +-----------------+----------------------+-----------------------+------------------+
   |  **Level 0**    | **Level 1**          | **Level 2**           | **Level 3**      |
   +=================+======================+=======================+==================+
   |  ``case{}``     | title                                                           |
   |                 +----------------------+------------------------------------------+
   |                 | time{}               | start                                    |
   |                 |                      |                                          |
   |                 |                      | t=[]                                     |
   |                 |                      |                                          |
   |                 |                      | units                                    |
   |                 |                      |                                          |
   |                 |                      | custom_name                              |
   |                 |                      |                                          |
   |                 |                      | custom_length                            |
   |                 +----------------------+------------------------------------------+
   |                 |                      | file                                     |
   |                 | lib{}                |                                          |
   |                 |                      | pos                                      |
   |                 +----------------------+------------------------------------------+
   |                 | flux=[]                                                         |
   |                 +-----------------------------------------------------------------+
   |                 | power=[]                                                        |
   |                 +----------------------+------------------------------------------+
   |                 | print{}              | cutoff_step                              |
   |                 |                      |                                          |
   |                 |                      | absfrac_step                             |
   |                 |                      |                                          |
   |                 |                      | absfrac_sublib                           |
   |                 |                      |                                          |
   |                 |                      | rel_cutoff                               |
   |                 |                      |                                          |
   |                 |                      | cutoffs                                  |
   |                 |                      |                                          |
   |                 |                      | fisrate                                  |
   |                 |                      |                                          |
   |                 |                      | kinf                                     |
   |                 |                      +-----------------------+------------------+
   |                 |                      | nuc{}                 | sublibs=[]       |
   |                 |                      |                       |                  |
   |                 |                      | ele{}                 | total            |
   |                 |                      |                       |                  |
   |                 |                      |                       | units=[]         |
   |                 |                      +-----------------------+------------------+
   |                 |                      | neutron{}             | summary          |
   |                 |                      |                       |                  |
   |                 |                      |                       | spectra          |
   |                 |                      |                       |                  |
   |                 |                      |                       | detailed         |
   |                 |                      +-----------------------+------------------+
   |                 |                      | gamma{}               | summary          |
   |                 |                      |                       |                  |
   |                 |                      |                       | spectra          |
   |                 |                      |                       |                  |
   |                 |                      |                       | principal_step   |
   |                 |                      |                       |                  |
   |                 |                      |                       | unbinned_warning |
   |                 |                      |                       |                  |
   |                 |                      |                       | principal_cutoff |
   |                 |                      +-----------------------+------------------+
   |                 |                      | alpha{}               | summary          |
   |                 |                      |                       |                  |
   |                 |                      |                       | spectra          |
   |                 |                      +-----------------------+------------------+
   |                 |                      | beta{}                | summary          |
   |                 |                      |                       |                  |
   |                 |                      |                       | spectra          |
   |                 |                      |                       |                  |
   |                 |                      |                       | principal_step   |
   |                 |                      |                       |                  |
   |                 |                      |                       | principal_cutoff |
   |                 +----------------------+-----------------------+------------------+
   |                 | mat{}                | iso=[]                                   |
   |                 |                      |                                          |
   |                 |                      | feed=[]                                  |
   |                 |                      |                                          |
   |                 |                      | units                                    |
   |                 |                      |                                          |
   |                 |                      | previous                                 |
   |                 |                      |                                          |
   |                 |                      | volume                                   |
   |                 |                      |                                          |
   |                 |                      | blend=[]                                 |
   |                 |                      +-----------------------+------------------+
   |                 |                      |                       | file             |
   |                 |                      | load{}                |                  |
   |                 |                      |                       | pos              |
   |                 +----------------------+-----------------------+------------------+
   |                 | save{}               | steps=[]                                 |
   |                 |                      |                                          |
   |                 |                      | file                                     |
   |                 |                      |                                          |
   |                 |                      | time_offset                              |
   |                 |                      |                                          |
   |                 |                      | time_units                               |
   |                 +----------------------+------------------------------------------+
   |                 | neutron{}            | alphan_medium                            |
   |                 |                      |                                          |
   |                 |                      | alphan_bins                              |
   |                 |                      |                                          |
   |                 |                      | alphan_cutoff                            |
   |                 |                      |                                          |
   |                 |                      | alphan_step                              |
   |                 +----------------------+------------------------------------------+
   |                 | gamma{}              | sublib                                   |
   |                 |                      |                                          |
   |                 |                      | adjust_for_missing                       |
   |                 |                      |                                          |
   |                 |                      | conserve_line_energy                     |
   |                 |                      |                                          |
   |                 |                      | split_near_boundary                      |
   |                 |                      |                                          |
   |                 |                      | continuum                                |
   |                 |                      |                                          |
   |                 |                      | immediate                                |
   |                 |                      |                                          |
   |                 |                      | brem_medium                              |
   |                 |                      |                                          |
   |                 |                      | spont                                    |
   |                 +----------------------+------------------------------------------+
   |                 | alpha{}                                                         |
   |                 +----------------------+------------------------------------------+
   |                 | beta{}               | sublib                                   |
   +-----------------+----------------------+-----------------------+------------------+
   |                 | nuclide{}            | type=NAMED_SET        | list             |
   | ``build_lib{}`` |                      |                       |                  |
   |                 +----------------------+-----------------------+------------------+
   |                 | decay{}              | coeff_update[]                           |
   |                 |                      |                                          |
   |                 |                      | allow_zero                               |
   |                 |                      +-----------------------+------------------+
   |                 |                      | type=ENDF_DECAY       | resource         |
   |                 |                      |                       |                  |
   |                 |                      +-----------------------+------------------+
   |                 |                      | type=ORIGEN_LIBRARY   | file             |
   |                 |                      |                       |                  |
   |                 +----------------------+-----------------------+------------------+
   |                 | neutron{}            | coeff_update[]                           |
   |                 |                      |                                          |
   |                 |                      | allow_zero                               |
   |                 |                      |                                          |
   |                 |                      | reaction_resource                        |
   |                 |                      |                                          |
   |                 |                      | fp_yield_resource                        |
   |                 |                      +-----------------------+------------------+
   |                 |                      | type=                 | spectrum{}       |
   |                 |                      | ENDF_ENERGY\_         |                  |
   |                 |                      | DEPENDENT             | xs_update{}      |
   |                 |                      |                       |                  |
   +-----------------+----------------------+-----------------------+------------------+
   |                 |                                                                 |
   |  ``bounds{}``   | alpha=[]                                                        |
   |                 |                                                                 |
   |                 | beta=[]                                                         |
   |                 |                                                                 |
   |                 | gamma=[]                                                        |
   |                 |                                                                 |
   |                 | neutron=[]                                                      |
   |                 |                                                                 |
   +-----------------+-----------------------------------------------------------------+
   |  ``solver{}``   | type                                                            |
   |                 +----------------------+------------------------------------------+
   |                 |                      | terms                                    |
   |                 |                      |                                          |
   |                 |                      | maxp                                     |
   |                 |                      |                                          |
   |                 |                      | abstol                                   |
   |                 |                      |                                          |
   |                 | opt{}                | reltol                                   |
   |                 |                      |                                          |
   |                 |                      | calc_type                                |
   |                 |                      |                                          |
   |                 |                      | order                                    |
   |                 |                      |                                          |
   |                 |                      | substeps                                 |
   +-----------------+----------------------+------------------------------------------+
   |                 |                                                                 |
   |  ``options{}``  | print_xs                                                        |
   |                 |                                                                 |
   |                 | digits                                                          |
   |                 |                                                                 |
   |                 | fixed_fission_energy                                            |
   |                 |                                                                 |
   +-----------------+-----------------------------------------------------------------+


The percent sign (\%) is the comment character *inside the ORIGEN
sequence,* between "=origen" and "end." The % is a very flexible comment
that may be placed almost anywhere in the input and continues until the
end of the line. Outside the ORIGEN sequence, the SCALE comment
character of a single quote ' at the beginning of a line must be used.
Arrays in SON begin with "[" and end with "]" and support the following
special shortcuts inherited from FIDO. Note that the interpolation
shortcuts (I and L) *insert* values between two specified values so that
there will be N+2 values in the final expanded array section.


.. tabularcolumns:: |\Y{0.2}|\Y{0.15}|\Y{0.65}|
.. table:: Array entry shortcuts
   :widths: 20 15 65
   :name: table-origen-array-shortcuts
   :align: center

   +------------------------+------------------+------------------------+
   | **Shortcut**           | **Format**       | **Examples**           |
   |                        |                  |                        |
   |                        |                  | *shortcutexpansion*    |
   +========================+==================+========================+
   | Repeat (**R**)         | *N*\ **R**\ *X*  | 3r1e141e14 1e14 1e14   |
   |                        |                  |                        |
   |                        |                  | 6r3 3 3 3 3 3 3        |
   +------------------------+------------------+------------------------+
   | Linear interpolation   | *N*\ **I** *X Y* | 3i 5 1 5 4 3 2 1       |
   | (**I**)                |                  |                        |
   |                        |                  | 9i 0.0 1.0 0.0 0.1 0.2 |
   |                        |                  | 0.3 0.4 0.5 0.6 0.7    |
   |                        |                  | 0.8 0.9 1.0            |
   +------------------------+------------------+------------------------+
   | Log interpolation      | *N*\ **L** *X Y* | 3l 1 5                 |
   | (**L**)                |                  |                        |
   |                        |                  | 5l 1e-9 1e-3 1e-9 1e-8 |
   |                        |                  | 1e-7 1e-6 1e-5 1e-4    |
   |                        |                  | 1e-3                   |
   +------------------------+------------------+------------------------+

As an alternative to manually creating an ORIGEN input file via a text
editor, the user may use the SCALE graphical user interface (GUI)
Fulcrum to create ORIGEN input files. Advantages to using Fulcrum
include syntax highlighting, autocomplete, immediate feedback when input
is incorrect, and one-click running of calculations.

Calculation Case (case)
-----------------------

A single ORIGEN sequence may contain an unlimited number of case blocks.
Each case block is processed in order and can represent either an
independent calculation or continuation of a previous case. The complete
contents of a single case block are shown in :numref:`table-origen-nuc-spec`.


.. code-block:: scale
  :caption: ORIGEN "case" overview
  :name: fig-origen-case-overview

   case(ID){
      title="my title"

       lib{ … }
       mat{ … }
       time{ … }
       flux{ … } % or power{ … }

       print{ … }
       save{ … }

       alpha{ … }
       beta{ … }
       gamma{ … }
       neutron{ … }
   }


The most important three components are the lib, mat, and
time/power/flux inputs:

  1. an ORIGEN library and the transition matrix data set on it to use
     (lib),

  2. initial amounts of nuclides (mat), and

  3. a power or flux history (time/power or time/flux).

The case identifier and case title string (shown as ID and title="my
title" in :numref:`fig-origen-case-overview`) are echoed in the output file
and can be a convenient way to differential cases. Both are optional, with the
ID defaulting to the case index, with "1" for the first case, "2" for
the second, etc. The "print" and "save" blocks represent two ways to
analyze the output from a calculation. The "print" block prints
tables directly to the output file, and the "save" block saves the
solution in a special ORIGEN binary concentration file (f71), e.g.,
for later post-processing. Finally, the "alpha," "beta," "gamma," and
"neutron" blocks control the emission source calculations for alpha,
beta, gamma, and neutron particles, respectively. The remaining
subsections will describe the input for each of these blocks.

Transition Matrix Specification (lib)
-------------------------------------

The transition matrix to use in a case is controlled by the "lib" shown
in :numref:`fig-origen-lib-overview`.

.. code-block:: scale
  :caption: ORIGEN "lib" overview
  :name: fig-origen-lib-overview

   lib{
       file="origen.f33"  % ORIGEN library filename
       pos=1              % data set position on library
   }


A "lib" **must** be present in the first case with a defined ORIGEN
library file. The default position is "pos=1". The "lib" may be omitted
in subsequent cases, and if so, the previous case's "lib" is used. The
position refers to the set of transition coefficients (transition matrix
**A**) to load. To load another position on the same library file, the
"lib" block with "pos=X" can be used to load position X. When ARP
generates an ORIGEN library, it will contain a set of transition
coefficients for each requested burnup. When COUPLE generates an ORIGEN
library, it will contain a single position. **For decay calculations,
file="end7dec" can be used to load a decay-only library.**


Material Specification (mat)
----------------------------

The initial isotopics for a case a controlled by the "mat" shown in
:numref:`fig-origen-mat-overview`. Note that the material specification
has a few different variants, with only one allowed to specify the material
in a given case.

.. code-block:: scale
  :caption: ORIGEN "mat" block overview
  :name: fig-origen-mat-overview

   % from iso
   mat{
       iso=[ u235=1.0 u238=9.0 ] %id(sublib)=amount
       units=GRAMS               %units in iso array
   }

   % from iso with number density input
   mat{
       iso=[ u235=1e-2 u238=1e-1 ] %id(sublib)=amount
       units=ATOMS-PER-BARN-CM     %units in iso array
       volume=200                  %cm^3
   }

   % from position on f71 file
   mat{
       load{ file="origen.f71" pos=11 }
   }

   % from previous case (previous=LAST is default)
   mat{
       previous=4 %step index from previous case
   }


In the first variant in :numref:`fig-origen-mat-overview`, the isotopic
distribution "iso" is used with "units." The "iso" array contains a sequence
of "id=amount" pairs, where "id" is a nuclide identifier in the format
described in :numref:`origen-nuc-spec`, and the units of the amount are given
by the "units" keyword, one of the unit names listed in the third column of
:numref:`table-origen-units`. Default units are MOLES.

In the second variant, the number density (ATOMS-PER-BARN-CM) is
specified which requires an additional specification of the "volume" in
cm\ :sup:`3`. Internally, the number density will be converted to MOLES
using that volume. For any type of units specified internally for
calculations, isotopics are always converted to MOLES and then
reconverted to the output units required.

In the third variant, the isotopics are loaded from a specific position
on the f71 file. Note that the position index starts at one (not zero)
and because the f71 is always appended to, it may contain multiple
materials, cases, timelines, etc. In the fourth and final variant, the
isotopics are loaded from *end* of step 4 from the previous case
("previous=4"). The index zero (e.g., "previous=0") corresponds to the
initial isotopics of the previous case. The keyword "LAST" may be used
to load the isotopics from the end of the last step, "previous=LAST".
This is the default behavior, used when a "mat" block is not
present.

There are two additional special material specifications shown
in :numref:`fig-origen-feed-blend`: (1) with a feed rate term,
:math:`\overrightarrow{S}(t)` in :eq:`eq-origen-trm-terms`, or (2) the blend
array. The feed specified is in the units specified *per second* and constant
for the entire case. It is possible to perform a calculation with feed but with
zero initial isotopics by specifying "iso=0". Feed can be negative,
however, the calculation becomes undefined and will abort when the
number of atoms of any nuclide becomes negative.

The blend array allows a fraction of each result from the previous cases
to be loaded. The identifier is the case name, or the *index* of the
case if a case name is not provided and the fraction is the atom
fraction. The step index for the isotopics can be specified in
parentheses. For example, B(2)=0.9 indicates that 90\% of the case(B)
isotopics should be taken at the end of step 2. The default step index
is the final step for the case. **Only one blend is allowed in an ORIGEN
input (between "=origen" and "end").** Multiple blends currently
requires saving isotopics to an f71 file and reloading in a subsequent
calculation.


.. code-block:: scale
  :caption: ORIGEN "feed" and "blend" arrays
  :name: fig-origen-feed-blend

   % with feed array
   mat{
       % units for iso and feed
       units=GRAMS

       % material is natural sodium
       iso=[na=1.0e6]
       % with feed array, set initial isotopics of zero
       %iso=0

       % continuous feed of U-235 at 1 kg/day
       % converted to grams/second
       feed=[u235=0.01157]
   }

   % with blend array (only one allowed in an input)
   case(A){ … }
   case(B){ … }
   case{
       …
       mat{
           % case ID(step index)=fraction of atoms
           blend[ A=0.1 B(2)=0.9 ]
       }
   }


Operating History (power, flux, time)
-------------------------------------

The operating history is specified using "time," "power," and "flux,"
with examples shown in :numref:`fig-origen-history-blocks`. For decay cases,
only the "time" array in units of days is required. For irradiation cases,
either "power" or "flux" may be provided. When flux is used, it is the
step-wise flux :math:`\Phi_{n}\ \left( \frac{n}{cm^{2}s} \right)`
appearing directly in the depletion equations of :eq:`eq-origen-trm-terms`.
When power is used, it is the total step-average power-- :math:`P_{n}\ (MW)`
--converted to step-wise average flux using :eq:`eq-origen-pc-flux`.
With irradiation cases using flux or power, the same number of entries must be
specified on the time and flux/power array. The start time corresponding to the
initial conditions is not included in the array of time values. Additionally,
the time specification allows time units (including a custom unit) and a start
time in which the block form of "time" must be used "time{…}."


.. code-block:: scale
   :caption: ORIGEN operating history blocks ("time," "flux," and "power").
   :name: fig-origen-history-blocks

   % simple decay case (two steps 0 unicode::U+2192 1 and 31 unicode::U+2192 65 days)
   time = [ 31 365 ]

   % flux irradiation (decay if flux=0)
   time = [ 31   365  396 ]
   flux = [ 2e14 1e14 0 ]

   % power irradiation (decay if power=0)
   time = [ 31 365 396 ]
   power= [ 50 45  0 ] %50 MW, 45 MW, then decay

   % changing units using time block
   time{
       t = [ 5 15 300 ]
       units = HOURS
       % available units:
       % SECONDS, MINUTES, HOURS, DAYS, YEARS, CUSTOM
   }

   % custom units
   time{
       t = [ 1 2 3 ]
       units = CUSTOM
       custom_name = "MONTH"
       custom_length = 2678400 %seconds per "MONTH"
   }

   % 10-step detailed power history
   time=[   5  10 20 100 300 400 405 500 800 1000]
   power=[ 20  41 43  42  37  33  16 14.5 28.5 26]


To illustrate some aspects of specifying a power history, refer to
:numref:`fig-origen-history-plot`, where the black line ("actual power") shows
a piecewise linear power history that is translated to a possible step-wise
constant power history shown by the red line ("step-wise constant power"), with
input shown in :numref:`fig-origen-history-blocks` labeled "10-step detailed
power history". The secondary (right) y-axis shows the step-wise flux,
calculated from the step-wise power via the predictor-corrector approach of
:eq:`eq-origen-pc-flux`. The dependence of the power-to-flux conversion on
the actual material composition is shown in the comparison of flux results
for an initial composition with 6% fissile :sup:`235`\ U (blue dotted line)
versus 2% fissile :sup:`235`\ U (purple dashed line). The flux at the beginning
of the irradiation is a factor of 3 higher with the 2% fissile case, due to
approximately a factor of 3 lower fissile content. With time, fissile
plutonium build-up closes the gap to a factor of 1.5.

.. _fig-origen-history-plot:
.. figure:: ../figs/ORIGEN/origen-power-flux.*

   Example of ORIGEN operating history and power-to-flux conversion.


.. code-block:: scale
   :caption: ORIGEN "start" time usage.
   :name: fig-origen-start-time

   % first case
   case{
       mat{ … }
       time=[ 1 10 25 50]
       flux=[ 4r1e14 ]
   }
   % continuation case (time zero is 50 days)
   case{
       time{
           units=YEARS
           %without start, times must continue > 50 days
           %t=[50/365.+0.1 50/365.+0.3 … ]
           %with start=0, times given assume start at zero
           start=0
           t=[0.1 0.3 0.9 2.7]
       }
   }


By default, subsequent cases that continue operations on a material,
continue the timeline of that material. Using "start=0" is convenient
when switching time unitsfrom irradiation in days to decay time in
years, for example. Otherwise, the final time must be converted to
years.

Printing Options (print)
------------------------

The "print" command is one of the most complex inputs, with options to
set printing cutoffs and control the concentrations returned, broken
down by nuclides and elements and emission sources for gamma, neutron,
alpha, and beta particles. Additionally, there are options to print
fission rates, absorption rates, and the ratio of fission rate to
absorption rate. Each case is allowed a print block.

Inventories by nuclide and element
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The options for printing nuclides and elements are shown in
:numref:`fig-origen-print-blocks`.  The print block allows the "nuc" block
and "ele" block for printing nuclide and element results, respectively.


.. code-block:: scale
   :name: fig-origen-print-blocks
   :caption: ORIGEN nuclide and element “print” blocks

   % print each nuclide (total across all sublibs) in grams
   print{
       nuc{ total=yes units=GRAMS }
   }

   % print each element (total across all sublibs)
   % in moles, grams, and curies with cutoffs of 1%
   print{
       ele{ total=yes units=[MOLES GRAMS CURIES] }
       cutoffs[ ALL=1.0 ]
   }

   % print decay heat and mass (by element)
   % of fission products and actinides only
   print{
       ele{ sublibs=[AC FP] units=[GRAMS WATTS] }
   }

   % change cutoff to absolute curies by element,
   % in step of interest (7), but print GRAMS
   print{
       cutoff_step = 7 % default -1 for average
       rel_cutoff = no % default is yes for cutoff in percent
       % only print above 1e-3 curies
       cutoffs[ CURIES=1e-3 ]   % default is 1e-6 percent
       nuc{
        total=yes
        units=GRAMS
       }
   }


Inside the "nuc" or "ele" blocks, there are three possible entries:

  -  a "sublibs" array (a list from LT, AC, FP, ALL),

  -  a "total" (yes or no), and

  -  a "units" array (see column 1 of :numref:`table-origen-units` for
     possible units).

The "total" is whether to sum over all "sublibs," i.e., if Gd-155 occurs
in both LT and FP sublibs, then the total will be the sum of the two. It
is possible to have "sublibs=[LT AC FP] total=yes," which results in
four output tables, one for each of the sublibs and one for the total.
The specification of "sublibs=ALL" is the same as "sublibs=[LT AC FP]."

Three parameters set the cutoff for printing a nuclide or element:

  -  "cutoff_step" sets the index on which to base the cutoff (default -1
     means use an average over all steps),

  -  "rel_cutoff" determines whether to treat the cutoff as a percent of
     the total (default/yes) or an absolute amount (no), and

  -  the "cutoffs" array allows one to specify the cutoff for each unit in
     :numref:`table-origen-units` as a sequence of "unit=cutoff" pairs.


.. _sect-origen-rad-emissions:

Radiological Emissions (alpha, beta, gamma, neutron)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The emission printing options are controlled by the "alpha," "beta,"
"gamma," and "neutron" emission blocks inside a "print" block (examples
shown in :numref:`fig-origen-rad-print-blocks`).


.. code-block:: scale
   :caption: ORIGEN emission “print” blocks.
   :name: fig-origen-rad-print-blocks

   print{
       % default neutron options
       neutron{
        summary=yes
        spectra=no
        detailed=no
       }

       % default gamma options
       gamma{
        summary=yes
        spectra=no
        principal_step=NONE  %step index to calculate
                             %(NONE to suppress)
        principal_cutoff=2   %principal emitter cutoff
                             %in percent
        unbinned_warning=no  %print warning
                             %when line not binned
       }

       % default alpha options
       alpha{
        summary=yes
        spectra=no
       }

       % default beta options
       beta{
        summary=yes
        spectra=no
        principal_step=NONE  %step index to calculate
                             %principal (NONE to suppress)
        principal_cutoff=2   %principal emitter cutoff
                             %in percent
       }
   } %end print

Neutron print options
"""""""""""""""""""""

The "neutron" print options are

  -  "summary" (yes/no) controls the printing of a source strength
     summary,

  -  "spectra" (yes/no) controls the printing of the spectra (energy
     group-wise), and

  -  "detailed" (yes/no) controls the printing of extra details about the
     neutron calculation.

   The "gamma" print options are

  -  "summary" (yes/no) controls the printing of a source strength summary
     and

  -  "spectra" (yes/no) controls the printing of the spectra (energy
     group-wise).

Gamma print options
"""""""""""""""""""

The gamma print allows a special output of the principal emitters in
each energy group, controlled by setting the "principal_step" keyword to
a specific step index in the case, with the "principal_cutoff" keyword
used to set the minimum percent of the total a nuclide must have to be
considered a principal emitter. For the gamma print there is a warning
that can be enabled with "unbinned_warning=yes" if some gamma lines fall
outside the user group structure and thus are not included.

Alpha print options
"""""""""""""""""""

The "alpha" print options are

  -  "summary" (yes/no) controls the printing of a source strength summary
     and

  -  "spectra" (yes/no) controls the printing of the spectra (energy
     group-wise).


Beta print options
""""""""""""""""""

The "beta" print options are

  -  "summary" (yes/no) controls the printing of a source strength summary
     and

  -  "spectra" (yes/no) controls the printing of the spectra (energy
     group-wise).

The beta print also allows a special output of the principal emitters by
setting the "principal_step" keyword to a specific step index in the
case, with the "principal_cutoff" keyword used to set the minimum
percent of the total a nuclide must have to be considered a principal
emitter.

The special printing options are shown in :numref:`fig-origen-special-print`.


.. code-block:: scale
   :caption: ORIGEN special "print" options
   :name: fig-origen-special-print

   % defaults special printing options
   print{
       absfrac_sublib = ALL %print absorption fractions for
                            %a specific sublib (LT,AC,FP)
                            %or ALL sublibs (DEFAULT)

       absfrac_step = 7  %if absfrac active, step to print
                         % default is last step

       fisrate = NONE    %print fission rates (default NONE)
                         %absolute (ABS) or relative (REL)

       kinf = no         %print fission/absorption (yes/no)
   }


Saving Results (save)
---------------------

Saving the results to an ORIGEN binary file (f71) is requested with the
"save" block, which specifies both the name of the file and the step
indices to save, as shown in :numref:`fig-origen-save-block`. The default
for the filename is "file=ft71f001" and default for the steps is the special
"steps=ALL" which saves all isotopics and spectra as a shortcut to having to
specify "steps=[0 1 2 3 … LAST]". The step index "0" corresponds to the
initial isotopics and the step index "LAST" may be used as a shortcut for
the last case index. There is a special rule for copying f71 files from
SCALE's temporary/working directory. If the file name "ft71f001" exists
in the directory when SCALE finishes, it is copied to the user's
"${OUTDIR}" as "${BASENAME}.f71", e.g. if my.inp produces "ft71f001" in
the temporary/working directory then it will be copied to the same
location as the main output file ("my.out") as "my.f71". Note that f71
files are always appended to by ORIGEN. To save with the defaults, the
shortcut "save=yes" is provided. The default is "save=no".

.. code-block:: scale
   :name: fig-origen-save-block
   :caption: ORIGEN "save" block.

   case{
       mat{ … }
       time=[ 1 10 100 1000 ] % 4 steps to 1000 days
       save{
             file="short.f71"   % file name
             steps=[0 2 4]      % save initial (0) and isotopics
                                    % end-of-step 2 (10 days)
                                    % end-of-step 4 (1000 days)
       }

       save{
             file="ft71f001"   % file name (DEFAULT)
             steps=ALL         % save ALL steps (DEFAULT)
       }
       save=yes              % equivalent to the above

       save{
             file="last.f71"   % file name
             steps=[LAST]      % save only last (LAST=4 here)
             time_offset=1000  % write time - time_offset
             time_units=DAYS   % units of time_offset
       }
   }


In order to change the time values written to the f71 file, use
"time_offset=T\ :sub:`0`\ " which will write the current cumulative time
minus T\ :sub:`0` to the file. The "time_offset" is convenient, for
example, when time *since discharge* is desired instead of the absolute,
cumulative time. The "time_units" entry specifies the units of the
"time_offset", with the same units available in the "time" block. The
default is "time_units=DAYS".

Decay Emission Calculations (alpha, beta, gamma, neutron)
---------------------------------------------------------

A decay emission calculation is initiated with the appropriate block
inside the calculation "case." The group structure for any emission
spectra result is determined by the energy bounds provided as described
in :numref:`origen-decay-calc`. Each type of emission calculation
is activated by the existence of a calculation block named "alpha", "beta",
"gamma", or "neutron" for those respective types of calculations.
Alternatively, to turn on an emission calculation with defaults, use
"alpha=yes", "beta=yes", "gamma=yes", or "neutron=yes" in a "case" block.

Neutron source calculation
^^^^^^^^^^^^^^^^^^^^^^^^^^

The neutron calculation (:numref:`origen-neutron-calc`) is activated by the
"neutron" calculation block. All neutron calculation options are to control the
:math:`\left(\alpha,n\right)` calculation.

Three :math:`\left(\alpha,n\right)` options can be indicated with the
"alphan_medium": a UO\ :sub:`2` fuel matrix (alphan_medium=UO2), a borosilicate
glass matrix (alphan_medium=BOROSILICATE), and the problem-dependent matrix
defined by the user input compositions (alphan_medium=CASE). The numeric
options 0, 1, and 2 are also valid for the UO2, BOROSILICATE, and CASE
options, respectively. Note that the UO\ :sub:`2` and borosilicate glass
matrix options assume that the neutron source nuclides reside in these
respective matrices, *regardless of the actual composition of the
material in the problem.*

For oxide fuels, a significant neutron source can be produced from
:sup:`17`\ O :math:`\left(\alpha,n\right)` and :sup:`18`\ O
:math:`\left(\alpha,n\right)` reactions in the oxygen compounds of the fuel.
For this reason, the UO\ :sub:`2` matrix option (enabled by alphan_medium=UO2)
is provided with natural isotopic distribution of :sup:`17`\ O and :sup:`18`\ O.
This includes the impact of oxygen isotopes on the neutron source without having
to include oxygen in the initial composition.

Another common use case is fuel storage in a borosilicate glass matrix
(enabled by ``alphan_medium=BOROSILICATE``), listed in
:numref:`table-origen-borosilicate-comp` from :cite:`ORIGEN-pemabi1986`.
Elements with atomic number less than 17 have :math:`\left(\alpha,n\right)`
yields.

.. tabularcolumns:: |\Y{0.2}|\Y{0.2}|\Y{0.2}|\Y{0.2}|
.. table:: Elemental composition used in the borosilicate glass option.
  :name: table-origen-borosilicate-comp
  :align: center

  +-------------+----------------+------------+------------+
  | **Atomic**  | **Element**    | **Wt %**   | **Atom %** |
  | **number**  | **symbol**     |            |            |
  +=============+================+============+============+
  |  3          | Li             |  2.18      | 6.296      |
  +-------------+----------------+------------+------------+
  |  5          | B              |  2.11      | 3.913      |
  +-------------+----------------+------------+------------+
  |  8          | O              | 46.4       | 58.138     |
  +-------------+----------------+------------+------------+
  |  9          | F              | 0.061      | 0.0644     |
  +-------------+----------------+------------+------------+
  | 11          | Na             | 7.65       | 6.671      |
  +-------------+----------------+------------+------------+
  | 12          | Mg             | 0.49       | 0.404      |
  +-------------+----------------+------------+------------+
  | 13          | Al             | 2.18       | 1.620      |
  +-------------+----------------+------------+------------+
  | 14          | Si             | 25.4       | 18.130     |
  +-------------+----------------+------------+------------+
  | 17          | Cl             | 0.049      | 0.0277     |
  +-------------+----------------+------------+------------+
  | 20          | Ca             | 1.08       | 0.540      |
  +-------------+----------------+------------+------------+
  | 25          | Mn             | 1.83       | 0.668      |
  +-------------+----------------+------------+------------+
  | 26          | Fe             | 8.61       | 3.091      |
  +-------------+----------------+------------+------------+
  | 28          | Ni             | 0.70       | 0.239      |
  +-------------+----------------+------------+------------+
  | 40          | Zr             | 0.88       | 0.193      |
  +-------------+----------------+------------+------------+
  | 82          | Pb             | 0.049      | 0.0047     |
  +-------------+----------------+------------+------------+
  | **Total**                    | 99.669     | 100.000    |
  +------------------------------+------------+------------+

In the last most rigorous option, the :math:`\left(\alpha,n\right)` neutron
source and spectra are calculated using the source, target, and constituents
determined using the material compositions in the problem *at a particular
time,* dictated by "alphan_step" in the "neutron" print options. For spent
fuel neutron source calculations, there are a large number of potential
source, target, and constituent nuclides in the :math:`\left(\alpha,n\right)`
calculation and in order to remove low-importance nuclides from the calculation,
the "alphan_step" and "alphan_cutoff" parameters are used. Only those nuclides
with an :math:`\alpha`-decay activity exceeding the product of "alphan_cutoff"
times the total :math:`\alpha` activity are included as source nuclides in the
:math:`\left(\alpha,n\right)` neutron calculation. Additionally, only those
nuclides with a constituent or target atom fraction less than
"alphan_cutoff" are included unless the concentration is greater than 1 ppm,
in which case it will be retained regardless of the cutoff. The "blend" array
is particularly useful for creating a problem-dependent medium composed of
fuel and another material.

.. code-block:: scale
   :caption: ORIGEN "neutron" calculation block
   :name: fig-origen-neutron-block

   case{
       …
       neutron{
             alphan_medium=CASE %0/UO2 for UO2
                                    %1/BOROSILICATE
                                    %  for Borosilicate glass
                                    %2/CASE for case-specific (DEFAULT)
             alphan_bins=200    %use 200 bins for
                                    %alpha slowing down calculation
             alphan_cutoff=0.0  %cutoff for alpha,n calculation
             alphan_step=LAST   %step index in this case
       }
       %alternatively, to enable neutron calculation with defaults
       %neutron=yes
   }


Gamma source calculation
^^^^^^^^^^^^^^^^^^^^^^^^

The gamma (photon) calculation described in :numref:`origen-gamma-calc`
is activated with the "gamma" block, as shown in
:numref:`fig-origen-gamma-block`. The gamma block includes a host of options
where the default should be appropriate in most cases.

  -  The "sublib" option (default "ALL") affects the sublibraries included
     in the gamma emission calculation. The "immediate" option (default
     "yes") includes immediate gamma and x-rays.

  -  The "spont" option (default "yes") includes photons emitted during
     spontaneous fission and :math:`\left(\alpha,n\right)`.

  -  The "continuum" option (default "yes") enables mapping of continuum
     data stored artificially as lines to a continuum across the
     user-defined energy bins.

The following options may need to be modified in some scenarios.

  -  The "brem_medium" option (default "UO2") includes the photons emitted
     by beta particles as they slow down in a medium (Bremsstrahlung) in
     the gamma calculation. A problem-dependent medium is not available
     for "brem." The only options are "NONE," "H2O" (for Bremsstrahlung in
     water) and "UO2" (for uranium dioxide).

  -  The "conserve_line_energy" option (default "no") modifies the
     intensity of each gamma line within a group to conserve energy
     according to *I\ g = I\ a E\ a/E\ g*, where *I\ a* is the original
     line intensity, *E\ a* the original line energy and *E\ g* is the
     group energy (simple midpoint energy). Note that this option modifies
     intensities and thus results in number of particles not being
     conserved.

  -  The "adjust_for_missing" option (default "no") accounts for the
     scenario where a nuclide has a known gamma decay mode with known
     recoverable energy release, but the spectral data do not exist in the
     available emission resource. If "adjust_for_missing=yes," the *entire
     spectrum* is scaled up to include the missing energy. If the missing
     energy is more than 1% of the total, a warning is printed.

  -  The "split_near_boundary" option (default "no") enables a splitting
     of a line when it appears very close to a bin boundary. If
     "split=yes" and a photon line is within 3% of an interior energy
     boundary, then the intensity is split equally between the adjacent
     groups.

.. code-block:: scale
   :caption: ORIGEN "gamma" calculation block
   :name: fig-origen-gamma-block

   case{
       …
       gamma{
            sublib=ALL      %LT, FP, or AC - single sublib
                            %ALL - all sub-libraries
            brem_medium=UO2 %assume Bremsstrahlung in UO2
            continuum=yes   %expand continuum data stored as
                            %lines into proper continuua
            immediate=yes   %load lines for immediate gamma/x-rays
            spont=yes       %include photons from
                            %spontaneous fission
                            %and alpha,n reactions

            conserve_line_energy=no %conserve line energy instead
                                    %of line intensity
            adjust_for_missing=no   %adjust photon intensity
                                    %for energy of missing spectra
            split_near_boundary=no  %lines within 3% of a
                                    %group boundary are split
                                    %into two bins
       }
       %alternatively, to enable gamma calculation with defaults
       %gamma=yes
   }

Alpha and beta source calculation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The alpha calculation (:numref:`origen-alpha-calc`) has no options
and the beta calculation (:numref:`origen-beta-calc`) only has a
single option to choose the nuclide sublibraries included (see
:numref:`fig-origen-alpha-beta-blocks`). Note that the alpha and beta
calculations determine *sources* and do not include any slowing down physics
for charged particles.


.. code-block:: scale
   :caption: ORIGEN "alpha" and "beta" calculation blocks.
   :name: fig-origen-alpha-beta-blocks

   case{
       …
       alpha{
           %no options
       }
       %alternatively, to enable alpha calculation with defaults
       %alpha=yes

       beta{
          sublib=ALL  %LT, FP, or AC - single sublib
                      %ALL - all sub-libraries
       }
       %alternatively, to enable beta calculation with defaults
       %beta=yes
   }


Processing Options (processing)
-------------------------------

The processing options are contained inside the "processing" block
(inside a "case") and have two ways to modify the isotopics vector: the
"removal" block and the "retained" array (see
::numref::`fig-origen-processing-block`). Both operate on *elements* instead
of nuclides.

  -  Each "removal" block specifies a list of elements and a rate of
     continuous removal in units *(1/s)*. This removal is an artificial
     increase of the decay constant, from :eq:`eq-origen-trm-terms`, and it can
     be used to model any continuous system of removal, such as filtration.
     Note that more than one removal block may be specified.

  -  The "retained" array specifies a list of elements and the mole/atom
     fraction to be retained at the start of this case. **Note that all
     unspecified elements become zero.**

.. code-block:: scale
   :caption: ORIGEN "processing" block
   :name: fig-origen-processing-block

   case{
       …
       processing{
           %rate is in 1/s
           removal{ rate=1e-2 ele=[H Xe Ar] }
           removal{ rate=1e-7 ele=[U Pu] }
           %id=frac
           retained=[ u=1.0 pu=0.5 ]
       }
   }


Bounds Block
------------

The "bounds" block appears outside all cases and is valid for the entire
input, dictating the energy bins (i.e., groups) for emission spectra and
source calculations (see :numref:`fig-origen-bounds-block`). The array
shortcuts-"L" for logarithmically spaced intervals and "I" for
linearly-spaced intervals-can be particularly useful for specifying the
bounds (see :numref:`table-origen-array-shortcuts`). The energy bounds are
in units *(eV)* and can be given in increasing or decreasing order with the
output convention of  decreasing order. Additionally, neutron and gamma energy
bounds can be read  from a standard SCALE cross section library file by
specifying the path to the file instead of the array bounds.


.. code-block:: scale
   :caption: ORIGEN "bounds" block.
   :name: fig-origen-bounds-block

   =origen
   bounds{
       neutron=[1e6 1e3 1] %2-group with 1MeV, 1keV, 1eV
       gamma=[100L 1.0e7 1.0e-5] %101 logarithmically spaced bins
       alpha=[1e6 2e7] %high-energy bin between 1 and 20 MeV
       beta=[22I 1 100] %23 linear bins between 1 and 100 eV
       %read neutron bounds from SCALE multi-group library file
       %neutron="scale.rev04.xn252v7.1"
   }
   case{ … }
   end


Solver Block
------------

The solver block controls high-level solver options, the most important
of which is the actual solver kernel used, either the default MATREX
(:numref:`origen-matrex`, :numref:`fig-origen-solver-block-matrex`) or
CRAM (:numref:`origen-cram`, :numref:`fig-origen-solver-block-cram`).

.. code-block:: scale
   :caption: ORIGEN "solver" block for MATREX
   :name: fig-origen-solver-block-matrex

   =origen
   solver{
       type=MATREX    %(DEFAULT)
       opt{
           terms=21   %number of expansion terms (DEFAULT)
           maxp=100   %maximum number of short-lived precursors
                      % for a long-lived nuclide (DEFAULT)
           substeps=1 %number of time step divisions (DEFAULT)
       }
   }
   case{ … }
   end

.. code-block:: scale
   :caption: ORIGEN "solver" block for CRAM
   :name: fig-origen-solver-block-cram

   =origen
   solver{
       type=CRAM
       opt{
           order=16   %order of the method (DEFAULT)
           substeps=1 %number time step divisions (DEFAULT)
       }
   }
   case{ … }
   end


The MATREX kernel contains two parameters that are generally sufficient
with the default values. The minimum number of "terms" is
:math:`n_{terms} =21`, which overrides the heuristic in
:eq:`eq-origen-solver-nterms`. Experience indicates that high flux levels
(e.g., greater than 10\ :sup:`16` n/cm\ :sup:`2`-s) may require more terms.
The second parameter, "maxp," is generally sufficient, describing the amount
of storage available for the short-lived precursors of a long-lived isotope.

The CRAM kernel has a single parameter that impacts the numerical error:
the "order." Both the CRAM and MATREX solver include the "substeps"
parameter that adds substeps to each user-defined time step. Testing the
same input with a different number of substeps (e.g., "substeps=1,"
"substeps=2," "substeps=4") can be a simple way to check that the time
grid is sufficient.

Options Block
-------------

The "options" block contains miscellaneous global options that apply to
all cases, as shown in :numref:`fig-origen-options-block`. The "print_xs"
option enables output of the transition matrix **A** used in each case, the
"digits" option enables high-precision output when set to 6, and the
"fixed_fission_energy" allows 200 MeV per fission to be used everywhere
instead of the nuclide-dependent energy release being used by default.

.. code-block:: scale
   :name: fig-origen-options-block
   :caption: ORIGEN "options" block

   =origen
   options{
       print_xs=no             %print cross sections
       digits=4                %digits=6 is high-precision
       fixed_fission_energy=no %set to yes to use 200 MeV/fission
   }
   case{…}
   end


.. _sec-origen.build_lib:

Library Building Block ``build_lib``
------------------------------------

This block allows one to create an ORIGEN library within an ORIGEN input. The
basic usage is to create a library, "A.f33" in the example below, and then
use this library in a calculation.

.. code-block:: scale

    =origen
    build_lib("A.f33"){
      ...
    }
    case{
      lib{ file="A.f33" pos=1 }
      ...
    }
    end

The ``build_lib`` block is composed of three main sub-blocks:

- ``nuclide{ ... }``: nuclides to consider,

- ``decay{ ... }``: decay data data to use, and

- ``neutron{ ... }``: incident neutron data to use.


These blocks are designed to be extensible and will gain additional capabilities
in future versions. Note that the ``obiwan`` command-line utility
(see :numref:`sec-obiwan`) is useful in the ``view`` mode to understand the
contents of your library file.

.. note::

   Previously, this was the purpose of the :ref:`COUPLE <sec-module.couple>`
   module, which is deprecated as of SCALE 6.3.



Nuclide Block ``build_lib/nuclide``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The ``build_lib/nuclide`` block contains the information on which nuclides
to consider in the final library. One can read data from any source for any
nuclide, and this will be echoed in the output file; however, only the nuclides
defined here will be allowed in the final ORIGEN library. The default and
only options for the ``nuclide`` block are ``type=NAME_SET`` with the
nuclide set ``complete_v6.2``, which is defined as the set of 2237 nuclides
(including sub-libraries) used in SCALE v6.2.

.. code-block:: scale

    =origen
    build_lib("A.f33"){
      nuclide{
        type=NAMED_SET
        list="complete_v6.2"
      }
      ...
    }
    ...
    end

.. note::

   The entire ``build_lib/nuclide`` block will default to the above for
   SCALE 6.3.


Decay Data Block ``build_lib/decay``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The ``build_lib/decay`` block contains the fundamental decay data with which
to build the library. With this block, there are currently two options:

- ``type=ORIGEN_LIBRARY``, which loads decay data from an existing ORIGEN
  library specified with the ``file=`` input.

- ``type=ENDF_DECAY`, which loads decay data from any supported decay resource
  using the ``resource=`` input---both ORIGEN card-image formats (legacy) and
  ENDF-formatted data.

Creating a basic ORIGEN decay library is now trivial.

.. code-block:: scale

    =origen

    build_lib("my_decay.f33") {
      nuclide {
        type=NAMED_SET
        list="complete_v6.2"
      }
      decay {
        type=ENDF_DECAY
        resource="${DATA}/origen_data/origen.rev03.decay.data"
      }
    }

    end

.. note::

   All ORIGEN inputs that expect paths (e.g., ``resource``) now expand SCALE
   environment variables such as ``${DATA}`` and ``${INPDIR}``, which can
   be very convenient as it avoids having to use ``=shell`` to copy needed
   files to the working directory.

Updating specific decay coefficients
""""""""""""""""""""""""""""""""""""

One final input is available in the ``decay`` block, ``coeff_update``, which
allows one to specify specific decay channels and yields to update.

The specific format is

.. code-block:: scale

    coeff_update[
      parent "channel(yield)" value
      ...
    ]

where

- ``parent`` is the parent nuclide id or name,

- ``channel`` is the numeric identifier for the decay channel,

- ``yield`` (optional) is the isomeric state of the daughter (e.g., 0 or 1), and

- ``value`` is the actual value for the decay constant or yield.


As an example, the following input changes the alpha decay data for :sup:`238`\ U,
after it loads the nominal data from the decay resource.

.. code-block:: scale

    =origen

    build_lib("end7dec.f33") {
      nuclide {
        type=NAMED_SET
        list="complete_v6.2"
      }
      decay {
        type=ENDF_DECAY
        resource="${DATA}/origen_data/origen.rev03.decay.data"
        coeff_update [
            u238  "5"        1e-12   % alpha decay (5) in 1/s
            u238  "5(0)"     0.9000  % alpha decay (5) yield to residual in ground (0)
            u238  "5(1)"     0.1000  % alpha decay (5) yield to residual in 1st meta (1)
        ]
      }
    }

    end

The decay channel identifiers are shown in the following table.


.. tabularcolumns:: |L|R|
.. table:: Decay channel identifiers.
  :name: tab-origen.decay_channel_ids
  :align: center

  +-------------+----------------------+
  | Channel     | Decay                |
  | Identifier  | Mode                 |
  +=============+======================+
  |  1          | Gamma                |
  +-------------+----------------------+
  |  2          | Beta Minus           |
  +-------------+----------------------+
  |  3          | Beta Plus            |
  +-------------+----------------------+
  |  4          | Isomeric Transition  |
  +-------------+----------------------+
  |  5          | Alpha                |
  +-------------+----------------------+
  |  6          | Neutron              |
  +-------------+----------------------+
  |  7          | Spontaneous Fission  |
  +-------------+----------------------+
  |  8          | Proton               |
  +-------------+----------------------+
  |  9          | Unknown              |
  +-------------+----------------------+


Note that a decay channel can be composed of multiple, chained modes. For
example, a :math:`2\beta_- + n` decay channel would have identifier ``226``.

Notes on Spontaneous Fission
""""""""""""""""""""""""""""

Spontaneous fission has been historically accounted for in ORIGEN in an
unexpected way. The spontaneous fission mode is included in the overall
decay constant but the individual fission product yields are not modeled
by default. With the ``coeff_update`` block it is possible to add
spontaneous fission, but one must be careful: no matter what the input
is, the yields will be renormalized to sum to 2.0, as in a physically meaningful
fissioning system. For this reason, it may be beneficial to introduce a
fake target for most spontaneous fissions if one's interest
is just in modeling a few key fission products.

With spontaneous fission, the "yield" identifier is the target fission product
nuclide identifier in IZZZAAA format.

For example, consider this fake spontaneous fission data which uses
:sup:`12`\ C as a fake target nuclide.

.. code-block:: scale

    =origen

    build_lib("end7dec.f33") {
      nuclide {
        type=NAMED_SET
        list="complete_v6.2"
      }
      decay {
        type=ENDF_DECAY
        resource="${DATA}/origen_data/origen.rev03.decay.data"
        coeff_update [
            cf252 "7(6012)"  1.80000 % spontaneous fission (7) to fake target C-12 because yields must normalize to 2.0
            cf252 "7(54135)" 0.1600  % 8% of FPs are Xe135
            cf252 "7(53135)" 0.0400  % 2% of FPs are  I135
        ]
      }
    }


Neutron Data Block ``build_lib/neutron``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The ``build_lib/neutron`` block contains the fundamental incident neutron
data on which to build the library. With this block, there is currently only
a single option, ``type=ENDF_ENERGY_DEPENDENT``, which allows the following
inputs.

- ``reaction_resource``, a path to the reaction resource to load, sometimes
  referred to as a "JEFF" library because the current data originates from
  JEFF/3.0-A.

- ``fp_yield_resource``, a path to the fission product yield resource,
  which may be an ORIGEN card-image format (legacy) or ENDF-formatted data.

With these resources loaded, one must add a flux spectrum to determine
energy-integrated values for all reactions and fission product yields.

For example, the following input creates a complete library (decay and
neutron data) using the 56-group reaction resource with a constant flux
spectrum, 1.0 for all groups.

.. code-block:: scale

    =origen

    build_lib("B.f33") {

      nuclide {
        type=NAMED_SET
        list="complete_v6.2"
      }

      decay {
        type=ENDF_DECAY
        resource="${DATA}/origen_data/origen.rev03.decay.data"
      }

      neutron(1) {
        type=ENDF_ENERGY_DEPENDENT
        reaction_resource="${DATA}/origen.rev01.jeff56g"
        fp_yield_resource="${DATA}/origen_data/origen.rev05.yield.data"

        spectrum {
          type=MULTIGROUP
          flux=[56R 1.0]
        }

      }
    }

    end

The ``spectrum`` block currently has two types.

- ``type=MULTIGROUP`` to provide a ``flux`` in the same group structure as
  the reaction resource. Future versions will have additional flexibility
  to provide the flux spectrum in any group structure.

- ``type=AMPX_LIBRARY`` to provide the spectrum from an AMPX library, which
  requires both ``file`` and ``mixture`` inputs, which specify the AMPX
  library file and the mixture number, respectively.

The following input is an example of loading a spectrum directly from an
AMPX multigroup library.

.. code-block:: scale

    =origen

    build_lib("B.f33") {

      nuclide {
        type=NAMED_SET
        list="complete_v6.2"
      }

      decay {
        type=ENDF_DECAY
        resource="${DATA}/origen_data/origen.rev03.decay.data"
      }

      neutron(1) {
        type=ENDF_ENERGY_DEPENDENT
        reaction_resource="${DATA}/origen.rev01.jeff56g"
        fp_yield_resource="${DATA}/origen_data/origen.rev05.yield.data"

        spectrum {
          type=AMPX_LIBRARY
          file="sysin.microWorkLib_0.f44"
          mixture=1
        }
      }
    }

    end

Note that this assumes that ``sysin.microWorkLib_0.f44`` exists in the temporary
working directory and contains mixture 1 data.

The ``neutron/spectrum`` is all that is needed to collapse to one-group reactions
and interpolate fission product yields. However, this will neglect important cross
section self-shielding effects. In general, self-shielding
is very important for thermal systems and where there is a significant amount of
a strong resonance absorber which will depress the flux spectrum and implicitly
reduce the cross section in that energy range. This is the main purpose of the
``xs_update`` block which allows one to read multi-group cross sections from
a file, collapse those with the flux spectrum from the ``spectrum`` block, and
use those preferentially over any "unshielded" data from the reaction resource.

In the following input, the AMPX library is used in both the spectrum and
cross section update. Note the ``spectrum`` and ``xs_update`` blocks are
identical for the ``AMPX_LIBRARY`` type.

.. code-block:: scale

    =origen

    build_lib("B.f33") {

      nuclide {
        type=NAMED_SET
        list="complete_v6.2"
      }

      decay {
        type=ENDF_DECAY
        resource="${DATA}/origen_data/origen.rev03.decay.data"
      }

      neutron(1) {
        type=ENDF_ENERGY_DEPENDENT
        reaction_resource="${DATA}/origen.rev01.jeff56g"
        fp_yield_resource="${DATA}/origen_data/origen.rev05.yield.data"

        spectrum {
          type=AMPX_LIBRARY
          file="sysin.microWorkLib_0.f44"
          mixture=1
        }
        xs_update {
          type=AMPX_LIBRARY
          file="sysin.microWorkLib_0.f44"
          mixture=1
        }
      }
    }

    end

The final optional component of the neutron block is the ``coeff_update``
list, which can directly set the values of transition coefficients both in
terms of cross section channels and daughter yields.

The specific format is

.. code-block:: scale

    coeff_update[
      parent "channel(yield)" value
      ...
    ]

where

- ``parent`` is the parent nuclide id or name,

- ``channel`` is the numeric identifier for the reaction channel, commonly called
  "MT" numbers (see :numref:`sec-data.mt` for details),

- ``yield`` (optional) is the isomeric state of the daughter (e.g., 0 or 1) or the
  actual nuclide identifier in the case of fission (channel=18), and

- ``value`` is the actual value for the one-group reaction cross section
  or yield.

For example, consider this code excerpt which modifies the fraction of :sup:`241`\ Am
:math:`(n,\gamma)` which results in :sup:`242m`\ Am and :sup:`242`\ Am. Note that an appropriate
energy-integrated value was determined from the reaction resource and the
flux spectrum, and this update overwrites that value.

.. code-block:: scale

    =origen

    build_lib("B.f33") {

      ...

      neutron(1) {
        ...
        coeff_update[
          am241 "102(1)" 0.7 % 70% of n,gamma go to Am-242m
          am241 "102(0)" 0.3 % 30% of n,gamma go to Am-242
        ]

      }
    }

    end

.. note::

   Yields are always renormalized to sum to 1.0 as a final step before creating the
   ORIGEN library, except for fission (channel=18), which is renormalized to
   sum to 2.0. In the above example, if you provided only one yield (e.g.,
   the 0.70 to :sup:`242m`\ Am), then the final yields will be renormalized to sum to 1.0,
   and your final yield will not be 0.70.

Data Cutoffs
^^^^^^^^^^^^

The legacy COUPLE library building (see :numref:`sec-module.couple`) included
an internal cutoff for decay constants of approximately 2.0E-26 and for cross
sections of approximately 1e-20 barns. It makes sense to have cutoffs from the
perspective of computational efficiency; however, one issue with cutoffs is that as the system
evolves, there may be reactions below the cutoff (and not included)
that then should be included. Although we could allow for this flexibility
eventually, the ability to change the nuclides and transitions considered
during a depletion calculation is not allowed, and it must be fixed from the
beginning. For this reason, ``allow_zero`` options exist in both the decay
and neutron blocks to change this legacy cutoff to zero.

See example :numref:`fig-couple-rxn-lib` for details.


.. _sec-origen.sens:

Sensitivity Calculation Block ``sens``
--------------------------------------

Sensitivity calculations in ORIGEN allow one to determine the change in a
particular nuclide or group of nuclides to all nuclear data involved in
the calculation. The implementation here follows that
of :cite:`ORIGEN-williams_perturbation_1986` for the specific case where
perturbations in data do not alter the neutron energy spectrum.

Consider the following complete case, which irradiates 1 gram of :sup:`238`\ U
using the ``transition.def`` ORIGEN library file. This is a useful library
to use for testing but has assumed a uniform flux spectrum and thus will not be
accurate for any real scenario.

.. code-block:: scale

    =origen
    solver{
      type=cram
    }

    case(A){
      lib{ file="transition.def" }
      mat{ iso=[ u238=1.0 ] units=GRAMS }
      time=[ 20I 3 1000]
      flux=[ 22R 1e14 ]
      save=yes
    }

    sens{
      case=A
      response{ iso=[pu239=1.0] type=NUCLIDE step=LAST }
      threshold=1e-4

      dp_verify{
        nrank=3
        nrank_pert=1.001
      }
    }

    end

The components of the ``sens`` input are as follows.

- ``case``: the name of the case to consider the forward calculation. Note that
  the default name for the first case is "1", second case is "2", etc.

- ``response``: a block that defines the type  of response (only ``type=NUCLIDE``
  is currently supported).

  - ``iso``: the realization vector for the nuclide response
    given in the same format as the ``iso`` array in the ``mat`` block.

  - ``step``: the step index at which the relative change in the response will
    be analyzed.

- ``threshold``: the minimum sensitivity coefficient to print in the output
  file.

- ``dp_verify``: a block that defines "direct perturbation" cases to verify
  the sensitivities. Direct perturbations can point out useful issues with
  time steps too large for the forward/adjoint calculations or a response
  that is particularly difficult to integrate (e.g., rapidly changing amount
  over a time step). Even though the forward and adjoint solutions will be
  accurate on the time steps, the integration of the forward solution multiplied
  by the adjoint over all steps assumes a simple trapezoid rule and could be
  inaccurate.

  - ``nrank`` number of direct perturbations to perform per category of
    sensitivity (currently 6) for each sensitivity coefficient which
    exceeds the ``threshold``.

  - ``nrank_pert`` perturbation factor to assume for the direct perturbation
    verification. For example, "1.01" would indicate to multiply the data of interest
    by 1.01 (i.e., increase by 1%).


Sensitivity output tables
^^^^^^^^^^^^^^^^^^^^^^^^^

The main output of the sensitivity calculation is sent to the .out file and
is shown below.

.. code-block:: none

    --------------------------------------------------------------------------
    Sensitivity Calculation Summary (#1/1)
    --------------------------------------------------------------------------

    Forward calculation case                           = A
    Target step (from case)                            = 22
    Corresponding target time (seconds)                = 86400000.000000
    Sensitivity coefficient report threshold           = 0.000100
    Response type                                      = nuclide
    Number of direct perturbation checks per group     = 3
    Direct perturbation factor (multiplier)            = 1.001000
    Adjoint concentration file                         = adjoint.sens1-adj.f71

    ----------------------------------------------------------------------
    Total Decay Loss Sensitivity
    ----------------------------------------------------------------------
    -------------------------------------------------------------------------------------
    | Nuclide ID | Adjoint Sens. Coeff. | Direct Sens. Coeff. | Direct F71 File         |
    -------------------------------------------------------------------------------------
    |      93239 |          7.83906e-02 |         1.10034e-03 |  adjoint.sens1-dps1.f71 |
    |      94241 |          4.77040e-04 |         4.77023e-04 |  adjoint.sens1-dps2.f71 |
    |      96242 |          2.49246e-04 |         2.51713e-04 |  adjoint.sens1-dps3.f71 |
    -------------------------------------------------------------------------------------

    ----------------------------------------------------------------------
    Decay Loss Sensitivity
    ----------------------------------------------------------------------
    --------------------------------------------------------------------------------------------------------
    | Nuclide ID |    Decay Mode   | Adjoint Sens. Coeff. | Direct Sens. Coeff. | Direct F71 File          |
    --------------------------------------------------------------------------------------------------------
    |      93239 |           beta- |          7.83906e-02 |         1.10034e-03 |   adjoint.sens1-dps4.f71 |
    |      94241 |           beta- |          4.77029e-04 |         4.77013e-04 |   adjoint.sens1-dps5.f71 |
    |      96242 |           alpha |          2.49246e-04 |         2.51713e-04 |   adjoint.sens1-dps6.f71 |
    --------------------------------------------------------------------------------------------------------

    ----------------------------------------------------------------------
    Decay Yield Sensitivity
    ----------------------------------------------------------------------
    No sensitivities exceed the threshold.

    ----------------------------------------------------------------------
    Total Reaction Loss Sensitivity
    ----------------------------------------------------------------------
    -------------------------------------------------------------------------------------
    | Nuclide ID | Adjoint Sens. Coeff. | Direct Sens. Coeff. | Direct F71 File         |
    -------------------------------------------------------------------------------------
    |      94239 |         -9.92411e-01 |        -9.89541e-01 |  adjoint.sens1-dps7.f71 |
    |      92238 |          6.58620e-01 |         7.32985e-01 |  adjoint.sens1-dps8.f71 |
    |      93239 |         -1.80910e-03 |        -1.95421e-03 |  adjoint.sens1-dps9.f71 |
    |      94238 |          4.60255e-04 |                   - |                       - |
    |      95241 |          2.95686e-04 |                   - |                       - |
    |      94241 |         -2.14775e-04 |                   - |                       - |
    -------------------------------------------------------------------------------------

    ----------------------------------------------------------------------
    Reaction Loss Sensitivity
    ----------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------
    | Nuclide ID |     Reaction    | Adjoint Sens. Coeff. | Direct Sens. Coeff. | Direct F71 File         |
    -------------------------------------------------------------------------------------------------------
    |      92238 |         n,gamma |          6.59038e-01 |         7.33404e-01 | adjoint.sens1-dps10.f71 |
    |      94239 |         fission |         -6.55423e-01 |        -6.53213e-01 | adjoint.sens1-dps11.f71 |
    |      94239 |         n,gamma |         -3.37762e-01 |        -3.36715e-01 | adjoint.sens1-dps12.f71 |
    |      93239 |         n,gamma |         -1.80585e-03 |                   - |                       - |
    |      94238 |         n,gamma |          4.63905e-04 |                   - |                       - |
    |      92238 |         fission |         -3.71955e-04 |                   - |                       - |
    |      95241 |         n,gamma |          2.96838e-04 |                   - |                       - |
    |      94241 |         fission |         -1.57067e-04 |                   - |                       - |
    -------------------------------------------------------------------------------------------------------

    ----------------------------------------------------------------------
    Reaction Yield Sensitivity
    ----------------------------------------------------------------------
    No sensitivities exceed the threshold.


The six groups of sensitivities are as follows.

1. Total decay loss sensitivity -- the relative change in response per change
   in a nuclide's total decay constant.

2. Decay loss sensitivity -- the relative change in response per change in
   specific decay channels (e.g., :math:`\alpha`-decay).

3. Decay yield sensitivity -- the relative change in response per change in
   a decay yield---for example, the fraction of :math:`\gamma`-decays that result in
   the ground state daughter versus a metastable daughter.

4. Total reaction loss sensitivity -- the relative change in response per change
   in a nuclide's total loss cross section.

5. Reaction loss sensitivity -- the relative change in response per change in
   specific reaction channels (e.g. :math:`(n,\gamma)`).

6. Reaction yield sensitivity -- the relative change in response per change in
   a reaction yield, (e.g., fission product yields).

Note that for each group, three direct perturbation calculations are performed
because ``nrank=3``. Thus, if an ORIGEN forward calculation only takes a second,
and the adjoint calculation takes approximately the same, in this case there
are 12 additional forward calculations performed. If there were any yield
sensitivities, the number could be as high as 18. For this reason, small
``nrank`` is recommended.

According to the sensitivity output, the dominant sensitivities are related
to reactions on :sup:`238`\ U and :sup:`239`\ Pu, which makes sense. The reaction loss
sensitivity table shows eight reactions that exceeded the sensitivity coefficient
threshold of ``1e-4``. It is interesting to note that some comparisons of the
adjoint sensitivity versus the direct sensitivity are very close, whereas the
:sup:`238`\ U  :math:`(n,\gamma)` has an adjoint sensitivity of 0.66 and a direct of
0.73. This gap may decrease if the time steps for the forward calculations
in case "A" are reduced; however, it may also simply be a non-linearity.

The adjoint solution utilized here is first-order perturbation theory, whereas
the direct perturbation may capture additional orders of variation if the
perturbation applied (``nrank_pert``) is "large." In this particular case,
reducing the perturbation factor to 1.0001 had no effect, but adding an
additional 20 time steps resulted in a closer adjoint value of 0.70 compared
to an unchanged direct value of 0.73.


Sensitivity output files
^^^^^^^^^^^^^^^^^^^^^^^^

A number of f71 files are produced as a result of the sensitivity calculation.

- ``${BASENAME}-sens<i>-adj.f71`` contains the adjoint solution for the ``<i>``-th
  sensitivity calculation.

- ``${BASENAME}-sens<i>-dps<k>.f71`` contains the ``<k>``-th direct perturbation
  solution for the ``<i>``-th sensitivity calculation. Note the "Direct F71 File"
  column in the table indicates which one corresponds to which perturbation.