# 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:** [&#9654; 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](https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/NuclearReaction.svg/200px-NuclearReaction.svg.png) *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).*