Recipe - Recipe Definition (optional, may appear multiple times)

The most common resources being exchanged by Cyclus agents is a material which has both a composition and a mass. While the composition of a material object may be manipulated over time by the agents that transact it, it is often necessary for the user to define a specific recipe for a material. Each recipe section can be used to define a named composition that can then be referenced elsewhere, such as in the data for an archetype.

A recipe block has the following sections in the following order:

  • name (required once) - the unique name for this commodity

  • basis (required once) - an indication of whether the composition is based on the atom fractions or mass fractions; one of:

    • atom - atom fractions are given in the nuclide list
    • mass - mass fractions are given in the nuclude list
  • nuclide (required at least once) - a list of nuclides and their relative quantities, where each section includes:

    • id - identifies a particular nuclide either with its canonical integer ID in the form ZZAAAMMMM or one of a few other common forms. Here are some acceptable forms: 922350000, U-235, U235, Am242M. The canonical integer nuclide format is a general format that encodes the atomic number (Z), the mass number (A) and the energy state (M) with the formula (Z*1000 + A) * 10000 + M.
    • comp - a number indicating the quantity of this nuclide to that of other nuclides in the material. The quantities are normalized to the sum of all a composition’s constituents, so the user need not provide quantities normalized to any particular value.

Example

This example defines two material compositions. The first has the name commod_recipe, is defined using mass fractions, and contains a single nuclide of H-1. The second recipe is named natU_recipe, is defined using atom fractions, and contains two nuclides: 0.7% of the atoms are U-235 and 99.3% of the atoms are U-238.

XML:

<recipe>
  <name>proton_recipe</name>
  <basis>mass</basis>
  <nuclide>
    <id>010010000</id>
    <comp>1</comp>
  </nuclide>
</recipe>

<recipe>
  <name>natU_recipe</name>
  <basis>atom</basis>
  <nuclide>
    <id>922350000</id><comp>0.007</comp>
  </nuclide>
  <nuclide>
    <id>922380000</id><comp>0.993</comp>
  </nuclide>
</recipe>

JSON:

{
 "recipe": [
   {"name": "proton_recipe",
    "basis": "mass",
    "nuclide": {"id": "H1", "comp": 1}
   },
   {"name": "natU_recipe",
    "basis": "atom",
    "nuclide": [
       {"id": "U235", "comp": 0.007},
       {"id": "U238", "comp": 0.993}
       ]
    }
   ]
 }

Python:

{"recipe": [
   {"name": "proton_recipe",
    "basis": "mass",
    "nuclide": {"id": "H1", "comp": 1},
   },
   {"name": "natU_recipe",
    "basis": "atom",
    "nuclide": [
       {"id": "U235", "comp": 0.007},
       {"id": "U238", "comp": 0.993},
       ],
    },
   ],
 }

Grammar Definition

<element name="recipe">
  <element name="name"><text/></element>
  <element name="basis"><text/></element>
  <oneOrMore>
    <element name="nuclide">
      <element name="id"><data type="nonNegativeInteger"/></element>
      <element name="comp"><data type="double"/></element>
    </element>
  </oneOrMore>
</element>