# Decay chain
<!-- MICROSIMGEN:BEGIN v1.7 — generated by g08_place_microsims.py; three.js first (§15); do not hand-edit inside -->
## Microsims — p5.js
### Decay chain (p5.js)
<div class="microsim-player">
<iframe src="https://editor.p5js.org/sciencenibber/full/cS_SZr-RA" width="100%" height="480" frameborder="0" loading="lazy" sandbox="allow-scripts allow-same-origin" title="Decay chain — p5.js microsim"></iframe>
</div>
*A 400-nucleus lattice steps stochastically through the chain A → B → C → D, fading through colours as the four populations stack over time.*
**Open in the editor:** [▶ fork this sketch](https://editor.p5js.org/sciencenibber/sketches/cS_SZr-RA) · library `p5js`
### Related microsims
Live sims on neighbouring articles — 3 of them inside this article's own Wikipedia link tree:
- [[Beta_decay]] *(in tree)*
- [[Half-life]] *(in tree)*
- [[Thorium]] *(in tree)*
- [[Atomic_mass]]
- [[Plutonium]]
*Sim hosted off-article; the article owns the reference, not the runtime (WIKI_RULES §10.4). Placed by `g08_place_microsims.py`.*
<!-- g09-shelf-note -->
> **Also on this page:** 1 further p5.js sketch already published for this article live further down. Per WIKI_RULES §5 a collision promotes rather than forks — they are one shelf, not rivals; this block is the §10.4 *current best* reference.
<!-- MICROSIMGEN:END -->
## Microsim
### Live player
<div class="microsim-player">
<iframe src="https://editor.p5js.org/sciencenibber/full/dRi1gJpsi" width="100%" height="620" frameborder="0" sandbox="allow-scripts allow-same-origin"></iframe>
</div>
<div class="microsim-fallback">
<img src="Microsims/thumbs/Decay_chain.png" alt="Decay_chain microsim poster" style="width:100%;border:1px solid #4445;border-radius:6px;">
<p><em>Live microsim (desktop) · <a href="https://editor.p5js.org/sciencenibber/sketches/dRi1gJpsi">open sketch in the p5.js editor</a></em></p>
</div>
**Editor URL:** https://editor.p5js.org/sciencenibber/sketches/dRi1gJpsi
**Description (100 words):**
A 720x520 sketch laying out the four-species linear decay chain A to B to C to D. Two hundred atoms seed species A and cascade through the chain via a Monte-Carlo per-frame test, p = 1 - exp(-lambda dt). The reader drives three sliders for the half-lives tau_A, tau_B, tau_C. Each particle is colored by its current species and flashes a yellow helium-nucleus halo whenever an alpha decay fires, with a running He-4 counter recording the total emitted. The right panel overlays the analytic Bateman solutions on the live counts, while a secular-equilibrium flag lights up when the three activities equalize. Click any arrow label to toggle alpha vs beta.
```js
// =====================================================================
// Decay_chain.js -- Wikitube microsim
// Article: Decay_chain en.wikitube.io/wiki/Decay_chain
// Room: Helium Pattern: E (decay clocks, chained
// Bateman series -- P5_JS_EDITOR §5
// line 314, the canonical reskin for
// Decay_chain / Uranium-238 / Thorium-232)
// ---------------------------------------------------------------------
// Idea: four nuclide species A -> B -> C -> D in series, each with its
// own half-life and decay mode. The reader sets the three half-lives
// (tau_A, tau_B, tau_C) and watches a population of 200 atoms cascade
// through the chain. Each particle is colored by its current species;
// on every frame each atom rolls against its species' per-frame decay
// probability, p = 1 - exp(-ln(2) * dt / tau), and on a hit it advances
// to the next species (or vanishes if it was already D).
//
// Two species in the U-238 / Th-232 / Sr-90 chains are alpha emitters;
// in this sketch, A and C decay by alpha (each emit a He-4 nucleus),
// while B decays by beta-minus (mass number preserved, no helium).
// A small yellow halo and an incremented "He-4 emitted" counter
// records every alpha event -- the explicit Helium-room hook for the
// article: every He-4 atom on Earth came out of a chain like this one.
//
// Right panel overlays the analytic Bateman solutions:
//
// dN_i / dt = lambda_{i-1} * N_{i-1} - lambda_i * N_i
//
// with lambda_i = ln(2) / tau_i. For the 4-species linear chain with
// N_A(0) = N0, the closed-form solutions are:
//
// N_A(t) = N0 * exp(-lambda_A t)
// N_B(t) = N0 * lambda_A / (lambda_B - lambda_A)
// * (exp(-lambda_A t) - exp(-lambda_B t))
//
// and so on for N_C and N_D. We draw the analytic curves as thin
// outlines and the live Monte-Carlo counts as filled dots so the
// reader can see the stochastic series tracking the deterministic
// prediction.
//
// When tau_A >> tau_B and tau_A >> tau_C, the chain enters
// *secular equilibrium*: activity A_i = lambda_i N_i becomes equal
// for every species above the stable end-point. The right-side
// readout flags secular equilibrium when the ratio of activities is
// within 5 percent of unity.
//
// Decay modes per species (pedagogical defaults; click an arrow to
// toggle alpha <-> beta on that step):
//
// A --alpha--> B (He-4 emitted)
// B --beta---> C (no helium)
// C --alpha--> D (He-4 emitted)
// D = stable
//
// Visual layout (720 x 520 canvas):
// * top-left: HUD title + en.wikitube.io/wiki/Decay_chain subtitle
// * top-center: chain diagram A -alpha-> B -beta-> C -alpha-> D
// (click an arrow label to toggle alpha / beta)
// * left box: 400 x 320 particle field, atoms drift gently,
// colored by current species. Brief yellow halo on
// any alpha emission.
// * right panel: Bateman curves N_i(t) for all four species,
// analytic outline + live Monte-Carlo overlay
// * bottom row: three sliders tau_A, tau_B, tau_C (in sim seconds);
// "reset" button; running counter of He-4 nuclei
// emitted so far
// * bottom-right: canonical equation dN/dt = lambda*N (ASCII)
//
// Conventions (Wikitube Betterfire Standard v0):
// * single ARTICLE constant at the top, single quotes
// * p5.disableFriendlyErrors = true to keep the editor console clean
// * non-ASCII (Greek lambda, arrows, subscripts) lives in COMMENTS
// only; every text() string literal is ASCII so the editor
// preview pipeline does not mangle the HUD typography
// * Nuclear-room palette from P5_JS_EDITOR section 5 line 326
// * dt = min(deltaTime / 1000, 0.05) and per-frame probability uses
// the exponential form 1 - exp(-lambda * dt), not lambda * dt
// =====================================================================
const ARTICLE = 'Decay_chain';
const TITLE = ARTICLE.replace(/_/g, ' ');
p5.disableFriendlyErrors = true;
// ----- Nuclear room palette (P5_JS_EDITOR section 5, line 326) -------
const BG = [8, 16, 28];
const FG = 240;
const DIM = [240, 240, 240, 140];
const STRUCT = [120, 130, 150]; // axes, frames, scratch
const NEUTRON = [240, 240, 255]; // bright readouts
const ALPHA_C = [220, 110, 60]; // alpha emission flash
const HE4_HALO = [255, 220, 80, 180]; // helium nucleus marker
// Per-species colors (A warm -> D stable green, a heat-to-stable ramp)
const COL_A = [255, 90, 80]; // species A
const COL_B = [255, 170, 70]; // species B
const COL_C = [120, 200, 240]; // species C
const COL_D = [ 80, 200, 140]; // species D (stable)
const COLS = [COL_A, COL_B, COL_C, COL_D];
const SPECIES_NAMES = ['A', 'B', 'C', 'D'];
// ----- Layout constants ---------------------------------------------
const W = 720;
const H = 520;
// Particle field on the left
const BOX_X = 20, BOX_Y = 90, BOX_W = 380, BOX_H = 280;
// Right-side Bateman plot
const PLOT_X = 420, PLOT_Y = 90, PLOT_W = 280, PLOT_H = 280;
// Chain-diagram strip across the top, below HUD
const CHAIN_Y = 56;
// Equation text used by BF4 (must contain at least one '=' in text())
const HUD_EQUATION_TEXT = 'dN_i/dt = lambda_{i-1}*N_{i-1} - lambda_i*N_i';
// ----- Simulation parameters ----------------------------------------
const N0 = 200; // initial population of species A
const LN2 = Math.log(2);
// Sliders (sim-seconds, linear scale for legibility)
let tauA_slider, tauB_slider, tauC_slider, resetBtn;
// Particles: { species: 0..3, x, y, vx, vy, halo: 0..1 }
let particles = [];
// Decay mode per arrow: 'alpha' or 'beta'
let modes = ['alpha', 'beta', 'alpha'];
// Counters
let he4Emitted = 0;
let simTime = 0;
let history = []; // array of { t, na, nb, nc, nd }
// Arrow click hit-rects (computed in drawChainStrip)
let arrowRects = [];
// =====================================================================
// setup
// =====================================================================
function setup() {
createCanvas(W, H);
pixelDensity(2);
textFont('system-ui');
textAlign(LEFT, TOP);
// Controls row at the bottom -- evenly spaced, fixed positions
// (P5_JS_EDITOR §2 -- never floating defaults)
const Y_CTL = H - 80;
tauA_slider = createSlider(1, 30, 4, 0.1).position(20, Y_CTL).size(150);
tauB_slider = createSlider(1, 30, 10, 0.1).position(20, Y_CTL + 30).size(150);
tauC_slider = createSlider(1, 30, 20, 0.1).position(20, Y_CTL + 60).size(150);
resetBtn = createButton('reset').position(195, Y_CTL + 30);
resetBtn.mousePressed(reset);
reset();
}
// =====================================================================
// reset -- seed the particle field with N0 atoms of species A
// =====================================================================
function reset() {
particles = [];
for (let k = 0; k < N0; k++) {
particles.push({
species: 0,
x: random(BOX_X + 10, BOX_X + BOX_W - 10),
y: random(BOX_Y + 10, BOX_Y + BOX_H - 10),
vx: random(-0.4, 0.4),
vy: random(-0.4, 0.4),
halo: 0
});
}
he4Emitted = 0;
simTime = 0;
history = [];
}
// =====================================================================
// draw
// =====================================================================
function draw() {
background(BG[0], BG[1], BG[2]);
// Read sliders once into named locals (P5_JS_EDITOR §5 line 328)
const tau = [tauA_slider.value(), tauB_slider.value(), tauC_slider.value()];
const lam = tau.map(t => LN2 / t);
// Bounded time step -- P5_JS_EDITOR §5 line 326 standard
const dt = Math.min(deltaTime / 1000, 0.05);
simTime += dt;
// ---------- advance physics ---------------------------------------
stepParticles(lam, dt);
// ---------- log species counts for the strip-chart ----------------
const counts = [0, 0, 0, 0];
for (const p of particles) counts[p.species]++;
history.push({ t: simTime, n: counts.slice() });
if (history.length > 600) history.shift();
// ---------- draw -------------------------------------------------
drawChainStrip();
drawParticleBox();
drawBatemanPlot(lam, counts);
drawControlsLabels(tau);
drawHud();
}
// =====================================================================
// stepParticles -- per-frame Monte-Carlo decay
// =====================================================================
function stepParticles(lam, dt) {
for (const p of particles) {
// gentle drift inside the box (kinetic-theory feel, not the topic)
p.x += p.vx;
p.y += p.vy;
if (p.x < BOX_X + 5 || p.x > BOX_X + BOX_W - 5) p.vx *= -1;
if (p.y < BOX_Y + 5 || p.y > BOX_Y + BOX_H - 5) p.vy *= -1;
// small thermal kick
p.vx += random(-0.02, 0.02);
p.vy += random(-0.02, 0.02);
p.vx = constrain(p.vx, -0.8, 0.8);
p.vy = constrain(p.vy, -0.8, 0.8);
// halo decays exponentially
p.halo *= Math.exp(-3 * dt);
// species D is stable -- never decays
if (p.species >= 3) continue;
// per-frame probability: p = 1 - exp(-lambda * dt)
// (P5_JS_EDITOR §5 line 466 -- never the linear form)
const pDecay = 1 - Math.exp(-lam[p.species] * dt);
if (random() < pDecay) {
// emit He-4 nucleus on alpha decay
if (modes[p.species] === 'alpha') {
he4Emitted++;
p.halo = 1.0;
}
p.species++;
}
}
}
// =====================================================================
// drawChainStrip -- A -alpha-> B -beta-> C -alpha-> D, top of canvas
// =====================================================================
function drawChainStrip() {
arrowRects = [];
const stripY = CHAIN_Y;
const cx = [70, 230, 390, 550, 690]; // species and arrow x positions
// species labels
for (let i = 0; i < 4; i++) {
const xs = (i === 0) ? cx[0]
: (i === 1) ? cx[1]
: (i === 2) ? cx[2] : cx[3];
noStroke();
fill(COLS[i][0], COLS[i][1], COLS[i][2]);
circle(xs, stripY, 14);
fill(FG);
textSize(14);
textAlign(CENTER, CENTER);
text(SPECIES_NAMES[i], xs, stripY);
}
// arrows A->B (between cx[0] and cx[1]), B->C, C->D
textAlign(CENTER, CENTER);
textSize(11);
for (let i = 0; i < 3; i++) {
const x0 = ([cx[0], cx[1], cx[2]])[i] + 12;
const x1 = ([cx[1], cx[2], cx[3]])[i] - 12;
const yA = stripY;
stroke(STRUCT[0], STRUCT[1], STRUCT[2]);
strokeWeight(1.5);
line(x0, yA, x1, yA);
// arrowhead
noStroke();
fill(STRUCT[0], STRUCT[1], STRUCT[2]);
triangle(x1, yA, x1 - 6, yA - 4, x1 - 6, yA + 4);
// mode label, clickable
const mx = (x0 + x1) / 2;
const my = yA - 16;
const label = modes[i];
const isAlpha = (label === 'alpha');
fill(isAlpha ? ALPHA_C : COL_B);
rectMode(CENTER);
noStroke();
rect(mx, my, 44, 16, 4);
fill(0);
textSize(11);
text(label, mx, my);
rectMode(CORNER);
arrowRects.push({ x: mx - 22, y: my - 8, w: 44, h: 16, idx: i });
}
// "click an arrow to toggle alpha / beta" subtitle, dimmed
noStroke();
fill(DIM[0], DIM[1], DIM[2], DIM[3]);
textAlign(LEFT, TOP);
textSize(10);
text('click an arrow label to toggle alpha / beta', 18, CHAIN_Y + 18);
}
// =====================================================================
// drawParticleBox -- left panel, color-coded atoms with alpha halos
// =====================================================================
function drawParticleBox() {
noFill();
stroke(STRUCT[0], STRUCT[1], STRUCT[2]);
strokeWeight(1);
rect(BOX_X, BOX_Y, BOX_W, BOX_H);
// label
noStroke();
fill(DIM[0], DIM[1], DIM[2], 180);
textAlign(LEFT, TOP);
textSize(11);
text('particle field (N0 = ' + N0 + ' atoms)', BOX_X + 6, BOX_Y - 14);
// particles
for (const p of particles) {
// halo first
if (p.halo > 0.02) {
noStroke();
fill(HE4_HALO[0], HE4_HALO[1], HE4_HALO[2], 180 * p.halo);
circle(p.x, p.y, 14 * p.halo + 6);
}
noStroke();
const c = COLS[p.species];
fill(c[0], c[1], c[2], 220);
circle(p.x, p.y, p.species === 3 ? 4 : 6);
}
// He-4 counter at bottom-left of the box, in HE4_HALO yellow
noStroke();
fill(HE4_HALO[0], HE4_HALO[1], HE4_HALO[2]);
textSize(13);
textAlign(LEFT, BOTTOM);
text('He-4 emitted: ' + he4Emitted, BOX_X + 8, BOX_Y + BOX_H - 6);
// Total alpha events vs. theoretical expectation, ASCII only
fill(DIM[0], DIM[1], DIM[2], 180);
textSize(10);
textAlign(RIGHT, BOTTOM);
text('alpha decays count helium nuclei', BOX_X + BOX_W - 8, BOX_Y + BOX_H - 6);
}
// =====================================================================
// drawBatemanPlot -- right panel, analytic + Monte-Carlo curves
// =====================================================================
function drawBatemanPlot(lam, counts) {
// frame
noFill();
stroke(STRUCT[0], STRUCT[1], STRUCT[2]);
strokeWeight(1);
rect(PLOT_X, PLOT_Y, PLOT_W, PLOT_H);
// axes labels
noStroke();
fill(DIM[0], DIM[1], DIM[2], 180);
textAlign(LEFT, TOP);
textSize(11);
text('Bateman N_i(t) solid = live count, thin = analytic', PLOT_X + 4, PLOT_Y - 14);
textAlign(RIGHT, BOTTOM);
text('time (sim sec)', PLOT_X + PLOT_W - 4, PLOT_Y + PLOT_H + 14);
// x-axis range -- show 5 * tau_C so the chain visibly empties
const tMax = Math.max(simTime + 0.5, 5 * tauC_slider.value());
// ---- analytic curves -----------------------------------------
const steps = 120;
for (let s = 0; s < 4; s++) {
stroke(COLS[s][0], COLS[s][1], COLS[s][2], 180);
strokeWeight(1);
noFill();
beginShape();
for (let i = 0; i <= steps; i++) {
const t = (i / steps) * tMax;
const n = batemanN(s, t, lam);
const px = PLOT_X + (i / steps) * PLOT_W;
const py = PLOT_Y + PLOT_H - (n / N0) * (PLOT_H - 20);
vertex(px, py);
}
endShape();
}
// ---- Monte-Carlo overlay (history series) --------------------
for (let s = 0; s < 4; s++) {
stroke(COLS[s][0], COLS[s][1], COLS[s][2]);
strokeWeight(2);
noFill();
beginShape();
for (const h of history) {
const px = PLOT_X + (h.t / tMax) * PLOT_W;
const py = PLOT_Y + PLOT_H - (h.n[s] / N0) * (PLOT_H - 20);
vertex(px, py);
}
endShape();
}
// time cursor
stroke(NEUTRON[0], NEUTRON[1], NEUTRON[2], 200);
strokeWeight(1);
const cx = PLOT_X + (simTime / tMax) * PLOT_W;
line(cx, PLOT_Y + 2, cx, PLOT_Y + PLOT_H - 2);
// ---- per-species readout column inside the plot --------------
noStroke();
textAlign(LEFT, TOP);
textSize(11);
for (let s = 0; s < 4; s++) {
const ly = PLOT_Y + 6 + s * 16;
fill(COLS[s][0], COLS[s][1], COLS[s][2]);
rect(PLOT_X + 6, ly + 4, 8, 8);
fill(FG);
const act = lam[s < 3 ? s : 2] * counts[s]; // activity for live count
const label = SPECIES_NAMES[s] + ': N = ' + counts[s];
text(label, PLOT_X + 20, ly);
}
// secular-equilibrium flag (activities of A, B, C within 5 percent)
const actA = lam[0] * counts[0];
const actB = lam[1] * counts[1];
const actC = lam[2] * counts[2];
let seFlag = false;
if (actA > 0 && actB > 0 && actC > 0) {
const r1 = actB / actA;
const r2 = actC / actA;
seFlag = (Math.abs(r1 - 1) < 0.05) && (Math.abs(r2 - 1) < 0.05);
}
textSize(11);
fill(seFlag ? COL_D : STRUCT);
text(seFlag ? 'secular equilibrium: YES'
: 'secular equilibrium: no',
PLOT_X + 6, PLOT_Y + PLOT_H - 16);
}
// =====================================================================
// batemanN -- analytic 4-species Bateman solution, N(0) = N0 on A
// =====================================================================
function batemanN(species, t, lam) {
// Closed form for a linear chain A -> B -> C -> D with N_A(0) = N0
// Bateman (1910); see Krane chapter 6.
const la = lam[0], lb = lam[1], lc = lam[2];
const eA = Math.exp(-la * t);
const eB = Math.exp(-lb * t);
const eC = Math.exp(-lc * t);
if (species === 0) return N0 * eA;
if (species === 1) {
if (Math.abs(lb - la) < 1e-9) return N0 * la * t * eA;
return N0 * la / (lb - la) * (eA - eB);
}
if (species === 2) {
// standard 3-link Bateman
const tiny = 1e-9;
if (Math.abs(la - lb) < tiny || Math.abs(la - lc) < tiny || Math.abs(lb - lc) < tiny) {
// small-perturbation fallback -- shift by 1e-6 to avoid singular case
return batemanN(2, t, [la + 1e-6, lb, lc + 2e-6]);
}
const k1 = (eA) / ((lb - la) * (lc - la));
const k2 = (eB) / ((la - lb) * (lc - lb));
const k3 = (eC) / ((la - lc) * (lb - lc));
return N0 * la * lb * (k1 + k2 + k3);
}
// species D = stable end -- conserved sum
const na = batemanN(0, t, lam);
const nb = batemanN(1, t, lam);
const nc = batemanN(2, t, lam);
return Math.max(0, N0 - na - nb - nc);
}
// =====================================================================
// drawControlsLabels -- slider names with current values
// =====================================================================
function drawControlsLabels(tau) {
noStroke();
textAlign(LEFT, CENTER);
textSize(12);
fill(FG);
const Y0 = H - 80;
text('tau_A = ' + tau[0].toFixed(1) + ' s', 180, Y0 + 8);
text('tau_B = ' + tau[1].toFixed(1) + ' s', 270, Y0 + 38);
text('tau_C = ' + tau[2].toFixed(1) + ' s', 180, Y0 + 68);
// canonical equation, bottom-right
fill(DIM[0], DIM[1], DIM[2], 200);
textSize(11);
textAlign(RIGHT, BOTTOM);
text(HUD_EQUATION_TEXT, W - 12, H - 8);
// sim time
fill(STRUCT);
textSize(11);
textAlign(LEFT, TOP);
text('sim time: ' + simTime.toFixed(1) + ' s', 420, H - 32);
}
// =====================================================================
// drawHud -- title + en.wikitube.io/wiki/<slug> subtitle (top-left)
// =====================================================================
function drawHud() {
noStroke();
fill(0, 180);
rect(0, 0, W, 44);
fill(FG);
textAlign(LEFT, TOP);
textSize(22);
text(TITLE, 14, 10);
fill(DIM[0], DIM[1], DIM[2], DIM[3]);
textSize(12);
text('Wikitube microsim . en.wikitube.io/wiki/' + ARTICLE, 14, 32);
}
// =====================================================================
// mousePressed -- toggle alpha / beta on a chain-arrow label
// =====================================================================
function mousePressed() {
for (const r of arrowRects) {
if (mouseX >= r.x && mouseX <= r.x + r.w &&
mouseY >= r.y && mouseY <= r.y + r.h) {
modes[r.idx] = (modes[r.idx] === 'alpha') ? 'beta' : 'alpha';
return;
}
}
}
```
## Links (Wikipedia order)
<!-- injected from _registry/childlinks/Decay_chain.json (2026-07-30T02:09:12Z) -->
`Aage_Bohr` · `Ab_initio_methods_(nuclear_physics)` · `Actinide` · [[Actinium]] · `Actinium-225` · `Age_of_the_universe` · `Alexandru_Proca` · [[Alpha_decay]] · [[Alpha_particle]] · `Americium-241` · `Atomic_nucleus` · `Atomic_number` · `Bateman_equation` · [[Beta_decay]] · `Big_Bang` · `Big_Bang_nucleosynthesis` · `Bismuth-209` · `Borromean_nucleus` · `Brookhaven_National_Laboratory` · [[Californium]] · `Clinton_Davisson` · `Cluster_decay` · `Cosmic_ray_spallation` · `Cosmogenic_nuclide` · [[Curium]] · `Decay_energy` · [[Decay_product]] · `Depleted_uranium` · `Deuterium` · `Double_beta_decay` · `Double_electron_capture` · `E_(mathematical_constant)` · `Edward_Mills_Purcell` · `Edward_Teller` · [[Electron]] · `Electron_capture` · `Enriched_uranium` · `Enrico_Fermi` · `Ernest_Lawrence` · `Ernest_Rutherford` · `Ernest_Walton` · `Eugene_Wigner` · `Even_and_odd_atomic_nuclei` · `Exponential_distribution` · `Fission_product_yield` · `Frederick_Soddy` · `Fritz_Strassmann` · `Frédéric_Joliot-Curie` · `Gamma_ray` · `Ground_state` · [[Half-life]] · `Halo_nucleus` · `Hans_Bethe` · [[Helium]] · [[Helium-3]] · [[Helium-4]] · `Henri_Becquerel` · `High-energy_nuclear_physics` · `History_of_Earth` · [[Hydrogen]] · `Interacting_boson_model` · `Internal_conversion` · `Inverse_beta_decay` · `Iodine-129` · [[Iron]] · `Irène_Joliot-Curie` · `Island_of_stability` · `Isobar_(nuclide)` · `Isotone` · `Isotope` · `Isotopes_of_beryllium` · `Isotopes_of_hydrogen` · `Isotopes_of_lithium` · `Isotopes_of_radium` · `Isotopes_of_tellurium` · `Isotopes_of_thorium` · `J._Hans_D._Jensen` · `J._J._Thomson` · `J._Robert_Oppenheimer` · `James_Chadwick` · `John_Cockcroft` · `Krypton-85` · `Large_Hadron_Collider` · [[Lead]] · `Lise_Meitner` · `List_of_radioactive_nuclides_by_half-life` · `Long-lived_fission_product` · `Luis_Walter_Alvarez` · `Magic_number_(physics)` · `Marie_Curie` · `Mark_Oliphant` · `Mass_number` · `Mirror_nuclei` · `Modular_arithmetic` · `National_Nuclear_Data_Center` · `Natural_nuclear_fission_reactor` · `Naturally_occurring_radioactive_material` · `Nature_(journal)` · [[Neptunium]] · `Neutrino` · `Neutrinoless_double_beta_decay` · [[Neutron]] · `Neutron_capture` · `Neutron_emission` · `Neutron_number` · `Neutron_poison` · `Neutron_star_merger` · [[Nickel]] · `Niels_Bohr` · `Nuclear_astrophysics` · `Nuclear_binding_energy` · `Nuclear_drip_line` · `Nuclear_fission` · `Nuclear_fission_product` · `Nuclear_force` · [[Nuclear_fusion]] · `Nuclear_isomer` · `Nuclear_matter` · `Nuclear_physics` · `Nuclear_reaction` · `Nuclear_reactor` · `Nuclear_shell_model` · `Nuclear_structure` · `Nuclear_transmutation` · `Nuclear_weapon` · `Nucleon` · `Nucleon_pair_breaking_in_fission` · [[Nucleosynthesis]] · `Nuclide` · `Orders_of_magnitude_(numbers)` · `Orders_of_magnitude_(time)` · `Otto_Hahn` · [[Oxygen]] · `P-process` · `Particle_accelerator` · `Patrick_Blackett` · `Photodisintegration` · `Photofission` · `Pierre_Curie` · `Plutonium-238` · `Plutonium-239` · `Plutonium-240` · `Plutonium-241` · `Plutonium-242` · `Plutonium-244` · `Poisson_point_process` · [[Polonium]] · `Polonium-210` · `Positron` · [[Positron_emission]] · `Primordial_nuclide` · [[Proton]] · `Proton_capture` · `Proton_emission` · `Protoplanetary_disk` · `Quark–gluon_plasma` · `R-process` · [[Radioactive_decay]] · `Radiogenic_nuclide` · `Radiometric_dating` · `Radionuclide` · [[Radium]] · `Radium-223` · `Radium-226` · `Radon-222` · `Relativistic_Heavy_Ion_Collider` · `Rp-process` · [[Rubidium]] · `S-process` · `Selenium-79` · `Semi-empirical_mass_formula` · `Spallation` · `Speed_of_light` · [[Spontaneous_fission]] · `Stable_nuclide` · `Stellar_nucleosynthesis` · `Strontium-90` · `Superheavy_element` · `Supernova` · `Supernova_nucleosynthesis` · `Synthetic_element` · `Technetium-99` · [[Thorium]] · `Thorium-232` · `Tritium` · [[Uncertainty_principle]] · [[Uranium]] · `Uranium-232` · `Uranium-233` · `Uranium-234` · `Uranium-235` · `Uranium-236` · `Uranium-238` · `Uranium–lead_dating` · `Valley_of_stability` · `Władysław_Świątecki_(physicist)` · `X-ray` · `Year`
## From the Real GENERATIVE library (beauty pass)

*Decay chain — image hotlinked from Wikimedia Commons (via the Real G.E.N.E.R.A.T.I.V.E. course library, Nuclear room). [Details & license](https://commons.wikimedia.org/wiki/File:NuclearReaction.svg).*
> In nuclear science a decay chain refers to the predictable series of radioactive disintegrations undergone by the nuclei of certain unstable chemical elements. ([Wikipedia](https://en.wikipedia.org/wiki/Decay_chain))
<!-- BEAUTY-PASS-MEDIA:END -->
> **Room:** [[Helium]] · **Status:** ✅ shipped
## Overview
A **decay chain** (also called a radioactive series or disintegration series) is a [[Sequence|sequence]] of nuclear transformations in which a radioactive parent nuclide decays into a daughter that is itself radioactive, which in turn decays further, the cascade continuing until a stable nuclide is reached. Each link in the chain is characterized by its decay mode — most commonly alpha (loss of a He-4 nucleus, mass number drops by 4) or beta-minus (a [[Neutron|neutron]] converts to a [[Proton|proton]], mass number unchanged) — and by its own characteristic [[Half-life|half-life]], which can range from microseconds to billions of years across a single series.
Four classical decay families are organized by the residue of mass number A modulo 4, since [[Alpha_decay|alpha decay]] alone changes A by 4. The [[Thorium|thorium]] series (4n) runs Th-232 → ... → Pb-208; the neptunium series (4n+1) is extinct in nature, terminating at Tl-205 via Bi-209; the uranium series (4n+2) runs U-238 → ... → Pb-206; the actinium series (4n+3) runs U-235 → ... → Pb-207. The time [[Evolution|evolution]] of every nuclide in a chain is governed by the Bateman equations, dN_i/dt = lambda_{i-1} N_{i-1} - lambda_i N_i, a coupled linear [[System|system]] whose long-time behavior approaches secular equilibrium when each daughter's half-life is much shorter than the parent's.
Decay chains underlie radiometric dating (U-Pb, Th-Pb), radon-progeny dose modeling, nuclear-waste long-term hazard assessment, medical-isotope generators (Mo-99/Tc-99m, Sr-90/Y-90), and the entire terrestrial helium budget — every He-4 atom on [[Earth]] originated as an [[Alpha_particle|alpha particle]] from a U or Th decay chain.
## See also
- Room hub: [[Helium]]
- p5.js Editor conventions: P5 JS EDITOR
- Wiki root: MAIN
---
*Scaffolded by `generative-microsim` from row 154 of the Helium sheet on 2026-05-14T19:48:49Z.*
<!-- BEAUTY-PASS-MEDIA:START -->
<!-- CRAFT-LINK:START g12 -->
*Built to the [[WT!P5_js_Microsim_Master_Class|p5.js Master Class]].*
<!-- CRAFT-LINK:END -->
<!-- MATTERSIM:BEGIN g33 — Matter & Energy Cluster microsim (framework build, specs/sims/Decay_chain.json); do not hand-edit inside -->
**Microsim — three.js (Wikitube framework):** *Decay chain*
<div class="wt-sim" data-src="https://wikitube-3d-microsims.netlify.app/matter/Decay_chain.html" data-title="Decay chain"></div>
*Built from `MICROSIM_GUIDE/specs/sims/Decay_chain.json`; part of the [[PORTAL_Matter|Matter portal]] spine (section sims and See-also variants).*
<!-- MATTERSIM:END -->
## Wikipedia : Wikitube
**Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Decay_chain) : [Wikitube](https://en.wikitube.io/wiki/Decay_chain)
## Previous hub tags
Tree parent: [[Helium-3]].
Legacy hubs: `GENERATIVE`.
---
*Sources: 2 legacy notes. Minted wave 1, 2026-07-30 (v1.6 order).*