Fission fragment evolution simulation (IFFY Sim)

The IFFY simulation is a Visual Basic program in a Microsoft Access database.  Its purpose is to track the evolution of fission products as they are born and decay.

IFFY Sim is retired.  It produced the Snapshot tables of cumulative yields, so its job is over.  It only hangs around here to be verified and validated.


The IFFY sim is a deterministic, aggregated model.  A deterministic model does not roll dice.  It is economical because it uses averages from the outset.  In this case, the average yields add up to two aggregate fission fragments that are composed of all possible nuclei.  Don’t worry what 0.001% of a Bromine atom looks like.  The math works out.

IFFY is a time-stepped model, as opposed to an event-driven model.  It uses an unusual exponential time-step.  The clock ticks double their span with each tick.  We take snapshots of the composition of the waste at 1, 2, 4, 8…16 seconds, out to a GigaSec.

This page covers some technical notes on simulations styles and limitations.


The IFFY sim has two separate models of nuclear processes.

  • The Decay process tracks each nuclide from its birth to whatever stability it can attain in 34 years (one GigaSec).
  • The Capture model represents the effect of living in an environment full of free neutrons.

Oddly, we barely model the fission process itself.  We explicitly model only one fission event for each of the 23 fuel/energy combinations.  This occurs halfway through the first second of reactor operation.  The Decay model has a one-shot version that “ages” the waste a further 0.5 seconds.  Then, we take the first Snapshot of the composition of the waste (Snap0).

Decay model


The deterministic nature of the simulation allows us to reuse data.  In this case, the second fission event looks just like the first, so we’ll use that again.  The cloned data represent the new activity in the last half of the current time-step.  We add this to the inventory after decaying the old inventory for the last half of the time-step.  Then the sim takes another Snapshot.

One Pass Processing

We process the 1322 nuclides in an order that ensures that all daughters inherit from all their parents without back-tracking.  The basic order is “heaviest-first”, which has two implementations.

  • Some types of radioactive decay cause neutron emission.  Because a neutron is freed, a nucleus with an atomic weight of 100 drops to the decay chain for nuclei of atomic weight 99.  Therefore, we process the heaviest decay chain (at atomic weight 172) first, and count down (to 65).
  • Within each decay chain, parent nuclei can only decay to lighter daughters.  In fact it is this excess mass of the parent that drives the decay process.  So, a heaviest-first approach works here as well.  The Rungs of the Energy Ladder analogy do not specifically represent mass, but that’s the way it works out.

The discussion HERE cover several special cases.  These cause adjustments to some Rung values.

Process Control

The Rung values order the Nuclides so that the code does not need to back-track to a nuclide already processed.   In “normal” database operations, the programmer does not control the order of processing.  (Database engines have optimization algorithms that make processing more efficient but also more opaque.)  An MS Access recordset allows precise control.  IFFY’s controlling recordset is a list of all 1322 nuclides, ordered by AtWt (descending) then by Rung (descending).

IFFY Sim uses a separate recordset to specify the fuel and neutron energy, both text fields.  This is simply a convenient way to loop the program with a double-text iterator.

These loops slow down processing because they avoid the optimization algorithm.  We don’t how much slower the sim runs because of them.  We produce IFFY’s 31 Snapshots in about ten hours on a Surface Pro 4.

Neutron Capture Model

One of the underlying assumptions in the IFFY sim is that there are always enough neutrons.  Other nuclear simulations focus on neutron economy, to keep the nuclear fire burning or breed new fuel.  Neutron absorbing fission fragments make these tasks harder, which is why they are called neutron poisons.

We process neutron capture with two simple database queries.  The first decrements the population of the isotope than captures the neutron, for instance 135-Xe.  The second increments the population of the new, plumper isotope, 136-Xe.  The plumper isotope may be unstable, so we calculate capture prior to decay.  This is an inevitable source of error, because these two processes are actually concurrent.  Computers can only do things sequentially.

Few neutron poisons evolve directly into other neutron poisons.  So, the order in which we process the neutron poisons seldom matters.  This allows us to use SQL queries, which are simpler and faster than using recordsets.

Half-life Equivalency

This concept needs vetting more than any other!

Neutron capture depends on the capture cross-sections of the isotopes.  Note that we say isotope rather than nuclide here.  There is no cross-section data for isomers, so we assume zero barns. We also assume a barn is a barn, and we use the cross section for fission of 235-U as the basis for comparison.

The core concept here is that an isotope subjected to a neutron flux “decays” just like an unstable isotope.  In each case there is a certain start mass that is reduced over time.  It does not matter that the cause of the degradation is external rather than internal.  After a characteristic period (assuming the neutron flux is steady), half of the original mass changes to something else: a daughter in the case of decay, or a plumper isotope in the case of neutron capture (or fission fragment when a fuel nucleus fissions).

Equivalency Calculation

We use as a pivot point 235-U under a bombardment of slow (aka thermal) neutrons.  Let us assume a real life reactor uses 4% enriched Uranium fuel.  After four years of operation it’s time to refuel because the fissile content is down to 1%.  The neutron flux has cut the population of 235-U in half twice – in four years.  So, the half-life equivalent (HLE) of 235-U at this level of flux is two years.  The cross-section for fission of 235-Ut (thermal) is 582.4.  Therefore, we contend that an isotope with a cross-section for capturing thermal neutrons of 582.4 * 2 = 1164.8 will have a “half-life” of one year (given the same flux).

This is the pivot point for the IFFY sim’s representation of neutron capture.  The HLE of 135-Xe, given its cross-section is 2.66 million barns, is 1164.8/2.66e+6 or 0.00043 years (about 3.8 hours).  A minimal poison (1.0 barns) has an HLE of 1164.8 years.

The HLE values (in seconds rather than years) are stored in the Absorbers table.  We use the same equation for decay and “plumping”.

Failed Fuel Model (preview)

We will also use the concept of half-life equivalency in the evolution of failed fuel.  A fuel atom that absorbs a neutron but fails to explode becomes plumper by one.  We discuss other aspects of failed fuel evolution, still in development, HERE.