# Nucleosynthesis
<!-- MICROSIMGEN:BEGIN v1.7 — generated by g08_place_microsims.py; three.js first (§15); do not hand-edit inside -->
## Microsims — three.js
### Nucleosynthesis (three.js)
<div class="microsim-player">
<iframe src="https://wikitube-3d-microsims.netlify.app/Nucleosynthesis.html" width="100%" height="620" frameborder="0" loading="lazy" sandbox="allow-scripts allow-same-origin" title="Nucleosynthesis — three.js microsim"></iframe>
</div>
**Open it full-screen:** [Nucleosynthesis.html](https://wikitube-3d-microsims.netlify.app/Nucleosynthesis.html) · library `threejs` · route `microsim/threejs/`
*Sim hosted off-article; the article owns the reference, not the runtime (WIKI_RULES §10.4). Placed by `g08_place_microsims.py`.*
<!-- MICROSIMGEN:END -->
## Microsim
### Live player
<div class="microsim-player">
<iframe src="https://editor.p5js.org/sciencenibber/full/Tpchmb17V" width="100%" height="620" frameborder="0" sandbox="allow-scripts allow-same-origin"></iframe>
</div>
<div class="microsim-fallback">
<img src="Microsims/thumbs/Nucleosynthesis.png" alt="Nucleosynthesis 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/Tpchmb17V">open sketch in the p5.js editor</a></em></p>
</div>
**Editor URL:** https://editor.p5js.org/sciencenibber/sketches/Tpchmb17V
**Description (100 words):**
A box of color-coded nucleons (red protons, blue neutrons) bounces at thermal speeds set by the temperature slider. Pairs that touch may fuse along a simplified BBN/pp-chain reaction network — first to deuterons (green), then helium-3 (cyan), helium-4 (yellow), and, above the triple-alpha threshold, carbon-12 (magenta). The mass-fraction bars on the right track each species live, with a tick marking the canonical BBN value Y_p = 0.25. Click BBN preset to watch temperature decay exponentially and the helium-4 yield freeze near a quarter; click Stellar core to hold T fixed; drag the [[Density|density]] slider, then reset, to vary the baryon count.
```js
// =====================================================================
// Nucleosynthesis.js -- Wikitube microsim
// Article: Nucleosynthesis en.wikitube.io/wiki/Nucleosynthesis
// Room: Helium Pattern: E (particle systems,
// kinetic phenomena)
// ---------------------------------------------------------------------
// Idea: a 2D box of nucleons fusing in real time. Protons (warm-red)
// and neutrons (cool-blue) drift with thermal velocities at temperature
// T; pairs that approach within a capture radius fuse stochastically
// according to a simplified Big Bang / pp-chain reaction network. The
// reader chooses temperature and density and watches the mass-fraction
// bars evolve: hydrogen falling from 1.0 toward 0.75, helium-4 rising
// toward the canonical 0.25, deuterium and helium-3 spiking and
// decaying as the intermediates burn through.
//
// Two presets:
//
// * BBN T starts at ~3.5 GK (scaled) and cools exponentially
// toward freeze-out over ~30 seconds. The light-element
// yield converges on the canonical helium-4 mass
// fraction Y_p ~ 0.25 (precise CMB value 0.245).
//
// * Stellar core T fixed by slider. Above the triple-alpha threshold
// (~10^8 K) three helium-4 nuclei occasionally fuse to
// carbon-12, which is how every carbon atom in your
// body was made.
//
// Reaction network (simplified, Wagoner-style; energies / gammas
// suppressed for clarity):
//
// p + n -> D (deuterium production)
// p + D -> He-3 (pp-chain step 2)
// D + D -> He-4 (BBN main channel)
// D + D -> He-3 + n (BBN branching)
// n + He-3 -> He-4 (BBN burn-up)
// D + He-3 -> He-4 + p (pp-II / BBN side branch)
// He-3 + He-3 -> He-4 + 2 p (pp-I termination)
// 3 He-4 -> C-12 (triple-alpha, T > 10^8 K)
//
// Each reaction's probability is gated by a sigmoid Coulomb-barrier
// penetration factor pen(T - T_th) — a cartoon of the Gamow factor
// exp(-(E_G/E)^{1/2}) that governs real cross sections.
//
// Canonical equation (bottom-right of HUD), the textbook expression
// for the BBN helium-4 mass fraction once the weak interactions have
// frozen out the neutron-to-proton ratio:
//
// Y_p = 2 (n/p) / [1 + (n/p)] ~ 0.25
//
// Visual layout (720 x 520 canvas):
//
// top-left HUD title + en.wikitube.io/wiki/Nucleosynthesis
// subtitle (Betterfire Standard rules 1 + 2)
// top-right era label, sim time, current T, particle count
// left center particle box (~520 x 340), nucleons as colored
// circles bouncing off the walls
// right mass-fraction bars X(H), X(D), X(He-3), X(He-4),
// X(C-12), with the 0.25 reference tick on He-4
// bottom controls (T slider, density slider, BBN button,
// stellar button, reset button)
// bottom-right canonical equation (Betterfire Standard rule 4)
//
// Color key (Energy-room palette + astrophysical accents):
//
// proton p warm red HOT
// neutron n cool blue COLD
// deuteron D green
// helium-3 cyan
// helium-4 yellow TRAJ
// carbon-12 magenta ACCENT
//
// 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, arrows, dots) lives in COMMENTS ONLY; every
// text() string literal is ASCII (the editor preview pipeline
// mangles non-ASCII in strings)
// * Energy-room palette (P5_JS_EDITOR section 4): dark BG, HOT/COLD
// tones, STRUCT grey, TRAJ accent
// * drawHUD() factored and called once from draw()
// =====================================================================
const ARTICLE = 'Nucleosynthesis';
const TITLE = ARTICLE.replace(/_/g, ' ');
p5.disableFriendlyErrors = true;
// ----- Energy room palette (P5_JS_EDITOR section 4, line 165) --------
const BG = 18;
const FG = 240;
const DIM = [240, 240, 240, 140];
const HOT = [220, 110, 60]; // proton (warm red)
const COLD = [60, 130, 220]; // neutron (cool blue)
const STRUCT = [120, 130, 150]; // gridlines, structural grey
const TRAJ = [240, 220, 80]; // helium-4 (yellow accent)
const ACCENT = [200, 100, 220]; // carbon-12 (magenta)
const DGREEN = [120, 200, 110]; // deuteron (green)
const HE3 = [120, 200, 220]; // helium-3 (lighter cyan)
// ----- Particle species, masses, radii, colors -----------------------
const MASS = { p: 1, n: 1, D: 2, He3: 3, He4: 4, C12: 12 };
const RAD = { p: 4, n: 4, D: 5, He3: 6, He4: 7, C12: 10 };
const COLR = { p: HOT, n: COLD, D: DGREEN, He3: HE3, He4: TRAJ, C12: ACCENT };
// ----- Particle box geometry (set in setup) --------------------------
let boxX, boxY, boxW, boxH;
// ----- Mass-fraction bars geometry -----------------------------------
const BAR_X = 555;
const BAR_Y = 90;
const BAR_W = 150;
const BAR_ROW_H = 48;
// ----- Sim state -----------------------------------------------------
let parts = [];
let T = 200; // temperature in scaled units (1 unit ~ 10^7 K)
let baryons = 220; // initial nucleon count
let era = 'stellar'; // 'bbn' or 'stellar'
let simTime = 0; // seconds since last reset
let bbnElapsed = 0; // BBN cooling clock
// ----- UI handles ----------------------------------------------------
let tSlider, nSlider, bbnBtn, stellarBtn, resetBtn;
function setup() {
createCanvas(720, 520);
pixelDensity(2);
textFont('system-ui');
// Particle box layout (left ~530 px of canvas) -----------------------
boxX = 14;
boxY = 70;
boxW = 520;
boxH = 340;
// Bottom controls (Betterfire Standard rule: sliders positioned) -----
tSlider = createSlider(2, 400, 200, 1).position(14, 440).size(220);
nSlider = createSlider(50, 400, 220, 10).position(14, 472).size(220);
bbnBtn = createButton('BBN preset') .position(254, 440);
stellarBtn = createButton('Stellar core') .position(348, 440);
resetBtn = createButton('reset') .position(254, 472);
bbnBtn.mousePressed(startBBN);
stellarBtn.mousePressed(startStellar);
resetBtn.mousePressed(initParticles);
initParticles();
}
// =====================================================================
// Initialization and presets
// =====================================================================
function initParticles() {
parts = [];
baryons = nSlider.value();
// Initial mix: 50/50 p/n. (Real BBN starts post weak-freeze-out at
// n/p ~ 1/7, but a 1:1 start lets the reader see the canonical Y_p
// result emerge from a clean symmetric initial condition.)
for (let i = 0; i < baryons; i++) {
const type = (random() < 0.5) ? 'p' : 'n';
const x = boxX + 8 + random() * (boxW - 16);
const y = boxY + 8 + random() * (boxH - 16);
const speed = sqrt(T) * 0.06;
const ang = random(TWO_PI);
parts.push({
type: type, x: x, y: y,
vx: cos(ang) * speed,
vy: sin(ang) * speed,
r: RAD[type]
});
}
simTime = 0;
bbnElapsed = 0;
}
function startBBN() {
// Big Bang preset: hot start, then exponential cooling.
era = 'bbn';
tSlider.value(350);
T = 350;
initParticles();
}
function startStellar() {
// Stellar-core preset: temperature held at the slider value.
era = 'stellar';
T = tSlider.value();
initParticles();
}
// =====================================================================
// Per-frame loop
// =====================================================================
function draw() {
background(BG);
// 1. Drive temperature. Stellar = slider-controlled. BBN = decay.
if (era === 'bbn') {
bbnElapsed += deltaTime / 1000;
T = 350 * Math.exp(-bbnElapsed / 8) + 5;
tSlider.value(Math.round(T));
} else {
T = tSlider.value();
}
simTime += deltaTime / 1000;
// 2. Advance particles (thermalize then translate, then wall bounce).
advanceParticles();
// 3. Pairwise reactions (Coulomb-barrier-gated stochastic fusion).
doReactions();
// 4. Triple-alpha (only matters at high T; cheap probabilistic check).
if (T > 230) doTripleAlpha();
// 5. Draw the box frame and the particles.
drawBox();
drawParticles();
// 6. Right-column mass-fraction bars.
drawMassFractions();
// 7. HUD (title, era, equation).
drawHUD();
}
// =====================================================================
// Particle dynamics
// =====================================================================
function advanceParticles() {
// Target thermal speed v_rms ~ sqrt(T / m). We lerp each particle's
// current speed toward its target so collisions and reactions damp
// back toward a Maxwell-Boltzmann-like distribution.
for (const p of parts) {
const vTarget = sqrt(T / MASS[p.type]) * 0.07;
const cur = sqrt(p.vx * p.vx + p.vy * p.vy);
if (cur > 1e-6) {
const sc = lerp(1, vTarget / cur, 0.04);
p.vx *= sc;
p.vy *= sc;
} else {
const ang = random(TWO_PI);
p.vx = cos(ang) * vTarget;
p.vy = sin(ang) * vTarget;
}
p.x += p.vx;
p.y += p.vy;
// Wall bounce with clamp to keep particles inside the box.
if (p.x < boxX + p.r) { p.x = boxX + p.r; p.vx *= -1; }
if (p.x > boxX + boxW - p.r) { p.x = boxX + boxW - p.r; p.vx *= -1; }
if (p.y < boxY + p.r) { p.y = boxY + p.r; p.vy *= -1; }
if (p.y > boxY + boxH - p.r) { p.y = boxY + boxH - p.r; p.vy *= -1; }
}
}
// =====================================================================
// Reaction network
// =====================================================================
function pen(threshold) {
// Sigmoid Coulomb-barrier penetration factor. Stand-in for the real
// Gamow factor; what matters is that the rate vanishes below T_th and
// saturates above it.
return 1 / (1 + Math.exp(-(T - threshold) / 6));
}
function tryReact(a, b) {
// Returns the array of product types for a fusion of (a, b), or null.
// Order-independent on the input pair.
const ta = a.type, tb = b.type;
const isPair = (x, y) =>
(ta === x && tb === y) || (ta === y && tb === x);
if (isPair('p', 'n') && random() < 0.50 * pen(2)) return ['D'];
if (isPair('p', 'D') && random() < 0.35 * pen(10)) return ['He3'];
if (isPair('D', 'D') && random() < 0.25 * pen(15)) {
return (random() < 0.5) ? ['He4'] : ['He3', 'n'];
}
if (isPair('n', 'He3') && random() < 0.40 * pen(8)) return ['He4'];
if (isPair('D', 'He3') && random() < 0.20 * pen(20)) return ['He4', 'p'];
if (isPair('He3', 'He3') && random() < 0.30 * pen(35)) return ['He4', 'p', 'p'];
return null;
}
function doReactions() {
// O(N^2) pair iteration. With N <= 400 this is ~80k checks per frame,
// well within budget on modern hardware.
const N = parts.length;
for (let i = 0; i < N; i++) {
const a = parts[i];
if (a === null) continue;
for (let j = i + 1; j < N; j++) {
const b = parts[j];
if (b === null) continue;
const dx = b.x - a.x;
const dy = b.y - a.y;
const rsum = a.r + b.r + 2;
if (dx * dx + dy * dy > rsum * rsum) continue;
const products = tryReact(a, b);
if (!products) continue;
// Replace the pair with the fusion products at the centroid.
const cx = (a.x + b.x) / 2;
const cy = (a.y + b.y) / 2;
const cvx = (a.vx + b.vx) / 2;
const cvy = (a.vy + b.vy) / 2;
parts[i] = null;
parts[j] = null;
for (const t of products) {
parts.push({
type: t,
x: cx + random(-3, 3),
y: cy + random(-3, 3),
vx: cvx + random(-0.4, 0.4),
vy: cvy + random(-0.4, 0.4),
r: RAD[t]
});
}
break;
}
}
parts = parts.filter(p => p !== null);
}
function doTripleAlpha() {
// Triple-alpha: 3 He-4 -> C-12. In stars this proceeds through the
// Hoyle resonance at 7.65 MeV; here we just probe random triples
// mutually close enough, gated by a high-T sigmoid.
const he4 = [];
for (let i = 0; i < parts.length; i++) {
if (parts[i] && parts[i].type === 'He4') he4.push(i);
}
if (he4.length < 3) return;
const pHigh = 1 / (1 + Math.exp(-(T - 250) / 8));
// A small number of trials per frame is plenty — triple-alpha is rare.
const trials = 6;
for (let k = 0; k < trials; k++) {
if (he4.length < 3) break;
const i = floor(random(he4.length));
let j = floor(random(he4.length));
let m = floor(random(he4.length));
if (i === j || j === m || i === m) continue;
const a = parts[he4[i]];
const b = parts[he4[j]];
const c = parts[he4[m]];
if (!a || !b || !c) continue;
const close = (x, y) => {
const dx = x.x - y.x, dy = x.y - y.y;
return (dx * dx + dy * dy) < 900; // within 30 px
};
if (!(close(a, b) && close(b, c) && close(a, c))) continue;
if (random() < 0.15 * pHigh) {
const cx = (a.x + b.x + c.x) / 3;
const cy = (a.y + b.y + c.y) / 3;
parts[he4[i]] = null;
parts[he4[j]] = null;
parts[he4[m]] = null;
parts.push({
type: 'C12', x: cx, y: cy, vx: 0, vy: 0, r: RAD['C12']
});
// Remove the three indices from the local helper list (descending).
const drop = [i, j, m].sort((x, y) => y - x);
for (const idx of drop) he4.splice(idx, 1);
}
}
parts = parts.filter(p => p !== null);
}
// =====================================================================
// Drawing helpers
// =====================================================================
function drawBox() {
push();
noFill();
stroke(...STRUCT, 120);
strokeWeight(1);
rect(boxX, boxY, boxW, boxH);
pop();
}
function drawParticles() {
noStroke();
for (const p of parts) {
fill(...COLR[p.type]);
circle(p.x, p.y, p.r * 2);
}
}
function massFractions() {
// Mass-weighted fractions over the current particle population.
let total = 0;
const X = { p: 0, n: 0, D: 0, He3: 0, He4: 0, C12: 0 };
for (const p of parts) {
X[p.type] += MASS[p.type];
total += MASS[p.type];
}
if (total > 0) {
for (const k of Object.keys(X)) X[k] /= total;
}
return X;
}
function drawMassFractions() {
const X = massFractions();
const rows = [
{ label: 'X(H = p + n)', val: X.p + X.n, col: HOT },
{ label: 'X(D)', val: X.D, col: DGREEN },
{ label: 'X(He-3)', val: X.He3, col: HE3 },
{ label: 'X(He-4)', val: X.He4, col: TRAJ },
{ label: 'X(C-12)', val: X.C12, col: ACCENT }
];
push();
// Section heading.
noStroke();
fill(...DIM);
textSize(11);
textAlign(LEFT, BOTTOM);
text('mass fractions', BAR_X, BAR_Y - 6);
for (let i = 0; i < rows.length; i++) {
const r = rows[i];
const y = BAR_Y + i * BAR_ROW_H;
// Row label.
fill(...DIM);
textSize(11);
textAlign(LEFT, BOTTOM);
text(r.label, BAR_X, y);
// Bar background.
noStroke();
fill(...STRUCT, 60);
rect(BAR_X, y + 4, BAR_W, 12);
// Filled bar.
fill(...r.col);
rect(BAR_X, y + 4, constrain(r.val, 0, 1) * BAR_W, 12);
// Numeric readout.
fill(...DIM);
textSize(10);
textAlign(RIGHT, TOP);
text(nf(r.val, 1, 3), BAR_X + BAR_W, y + 20);
}
// BBN reference tick on the He-4 row at Y_p = 0.25.
const heRowY = BAR_Y + 3 * BAR_ROW_H + 4;
stroke(255);
strokeWeight(1);
const tickX = BAR_X + 0.25 * BAR_W;
line(tickX, heRowY - 3, tickX, heRowY + 15);
noStroke();
fill(255);
textSize(9);
textAlign(LEFT, TOP);
text('BBN Y_p = 0.25', tickX + 4, heRowY + 16);
pop();
}
// =====================================================================
// HUD (Betterfire Standard)
// =====================================================================
function drawHUD() {
// Top-left: title + Wikitube URL subtitle (rules 1 + 2).
noStroke();
fill(FG);
textAlign(LEFT, TOP);
textSize(22);
text(TITLE, 14, 12);
fill(...DIM);
textSize(12);
text('Wikitube microsim . en.wikitube.io/wiki/Nucleosynthesis', 14, 40);
// Top-right: era + time + temperature + particle count.
textAlign(RIGHT, TOP);
textSize(11);
fill(...DIM);
const eraLabel = (era === 'bbn') ? 'BBN cooling' : 'stellar core';
text(eraLabel, width - 14, 12);
text('t = ' + nf(simTime, 0, 1) + ' s', width - 14, 26);
text('T = ' + nf(T, 0, 1) + ' (units 10^7 K)',width - 14, 40);
text('N = ' + parts.length + ' nuclei', width - 14, 54);
// Slider / button labels along the bottom of the canvas.
textAlign(LEFT, BOTTOM);
textSize(11);
fill(...DIM);
text('Temperature (10^7 K)', 14, 437);
text('Initial baryons (count)', 14, 469);
// Bottom-right: canonical equation (rule 4).
textAlign(RIGHT, BOTTOM);
fill(FG);
textSize(13);
text('Y_p = 2 (n/p) / [1 + (n/p)] = 0.25', width - 14, height - 6);
// Bottom-left readout: current He-4 mass fraction vs. the BBN target.
const X = massFractions();
textAlign(LEFT, BOTTOM);
fill(FG);
textSize(12);
text('current X(He-4) = ' + nf(X.He4, 1, 3), 14, height - 6);
}
// =====================================================================
// End of Nucleosynthesis.js -- Wikitube microsim, Helium room, Pattern E.
// =====================================================================
```
## Links (Wikipedia order)
<!-- injected from _registry/childlinks/Nucleosynthesis.json (2026-07-30T02:09:12Z) -->
`(n-p)_reaction` · `Abundance_of_the_chemical_elements` · `Accretion_disk` · [[Alpha_decay]] · `Alpha_nuclide` · [[Alpha_particle]] · `Alpha_process` · [[Aluminium]] · `Annals_of_Physics` · `Annual_Review_of_Astronomy_and_Astrophysics` · [[Argon]] · `Asymptotic_giant_branch` · `B2FH_paper` · [[Barium]] · [[Beryllium]] · `Beryllium-8` · [[Beta_decay]] · `Big_Bang` · `Big_Bang_nucleosynthesis` · `Binary_star` · [[Binding_energy]] · `Black_hole` · [[Boron]] · `Brian_D._Metzger` · `CNO_cycle` · `Cambridge_University_Press` · [[Carbon]] · `Carbon-14` · `Carbon-burning_process` · `Cluster_decay` · `Compton_Gamma_Ray_Observatory` · `Cosmic_dust` · `Cosmic_microwave_background` · `Cosmic_ray` · `Cosmic_ray_spallation` · `Cosmogenic_nuclide` · `Decoupling_(cosmology)` · `Degenerate_matter` · `Deuterium` · `Deuterium_fusion` · `Donald_D._Clayton` · `Double_beta_decay` · `Double_electron_capture` · `Electron_capture` · `Electronvolt` · [[Europium]] · `Fermi_Gamma-ray_Space_Telescope` · `Fred_Hoyle` · `French_Alternative_Energies_and_Atomic_Energy_Commission` · `GW170817` · `Gamma-ray_astronomy` · `Gamma_ray` · `Geoffrey_Burbidge` · `Georges_Lemaître` · `Gravitational_wave` · [[Half-life]] · `Hans_Bethe` · `Hans_Suess` · `Harold_Urey` · [[Helium]] · [[Helium-3]] · [[Helium-4]] · [[Hydrogen]] · `Internal_conversion` · `Interstellar_medium` · `Iodine-129` · [[Iron]] · `Iron_group` · `Iron_peak` · `Isobar_(nuclide)` · `Isotope` · `Isotopes_of_lead` · `Kelvin` · `LIGO` · [[Lithium]] · `Lithium_burning` · `Logarithmic_scale` · `Lund_University` · [[Magnesium]] · `Magnetar` · `Manhattan_Project` · `Margaret_Burbidge` · `Metallicity` · `Meteorite` · `Meteoroid` · `Monthly_Notices_of_the_Royal_Astronomical_Society` · `Nature_(journal)` · `Neon-burning_process` · [[Neutron]] · `Neutron_capture` · `Neutron_emission` · `Neutron_star_merger` · [[Nickel]] · [[Nitrogen]] · `Nova` · `Nuclear_reaction` · `Nucleogenic` · `Nucleon` · [[Oxygen]] · `Oxygen-burning_process` · `P-process` · `Pejorative` · `Photodisintegration` · `Photofission` · `Planetary_nebula` · [[Plasma_(physics)]] · [[Plutonium]] · [[Polonium]] · [[Positron_emission]] · `Potassium-40` · `Presolar_grains` · `Primordial_nuclide` · [[Promethium]] · [[Proton]] · `Proton_capture` · `Proton_emission` · `Proton–proton_chain` · `Quark–gluon_plasma` · `R-process` · [[Radioactive_decay]] · [[Radon]] · `Red_giant` · `Reviews_of_Modern_Physics` · `Rp-process` · [[Rubidium]] · `S-process` · [[Science_(journal)]] · [[Silicon]] · `Silicon-burning_process` · `Smithsonian_(magazine)` · `Solar_System` · `Spallation` · `Spectroscopy` · [[Spontaneous_fission]] · `Star` · `Stellar_atmosphere` · `Stellar_core` · `Stellar_evolution` · `Stellar_nucleosynthesis` · `Stellar_wind` · [[Sulfur]] · `Supernova` · `Supernova_nucleosynthesis` · [[Technetium]] · `The_Astrophysical_Journal` · `The_Observatory_(journal)` · `Thorium-232` · `Triple-alpha_process` · `Type_Ia_supernova` · `Universe` · `University_of_Chicago_Press` · `Uranium-235` · `Uranium-238` · `Virgo_interferometer` · `White_dwarf` · `Wiley-VCH` · `World_Scientific` · `World_War_II`
## From the Real GENERATIVE library

*Nucleosynthesis — placed from the Real G.E.N.E.R.A.T.I.V.E. course library (Nuclear room). Source: Wikimedia Commons (via Wikipedia article media). [Details & license](https://commons.wikimedia.org/wiki/File:Kernfusionen1_en.png).*
> Nucleosynthesis is the process that creates new atomic nuclei from pre-existing nucleons (protons and neutrons) and nuclei. According to current theories, the first nuclei were formed a few minutes after the Big Bang, through nuclear reactions in a process called Big Bang nucleosynthesis.[1] After about 20 minutes, the universe had expanded and cooled to a p ([Wikipedia](https://en.wikipedia.org/wiki/Nucleosynthesis))
<!-- REAL-GENERATIVE-MEDIA:END -->
<!-- LOCAL-MEDIA-PASS:START -->
## From the vault media library
!Nucleosynthesis thumb.png
*Nucleosynthesis — from the vault's own media holdings, placed 2026-07-09. MTN / Wikitube.io original · CC BY-SA 4.0.*
<!-- LOCAL-MEDIA-PASS:END -->
> **Room:** [[Helium]] · **Status:** ✅ shipped
## Overview
Nucleosynthesis is the formation of atomic nuclei through nuclear reactions, encompassing two principal eras: Big Bang nucleosynthesis (BBN) in the first minutes of cosmic time, and stellar nucleosynthesis operating since the first generation of stars. BBN occurred when the universe cooled below roughly 1 GK, allowing protons and neutrons to fuse once the deuterium bottleneck cleared; freeze-out yielded approximately 75% hydrogen and 25% helium-4 by mass, with trace deuterium (~2×10⁻⁵), helium-3, and lithium-7. The baryon-to-[[Photon|photon]] ratio η ≈ 6×10⁻¹⁰, measured independently by Planck CMB observations, is the only free parameter and matches observed primordial abundances within a few percent — a central empirical pillar of hot Big Bang cosmology.
Stellar nucleosynthesis builds heavier elements. Hydrogen burns via the pp chain in solar-mass stars and the CNO cycle in more massive stars. Helium burning proceeds through the triple-alpha process — 3 He-4 → C-12 — at T ~ 10⁸ K, exploiting the Hoyle resonance to bridge the absence of stable mass-5 and mass-8 nuclei. Successive shell burning produces oxygen, neon, magnesium, and silicon up to the iron peak, beyond which [[Nuclear_fusion|nuclear fusion]] is no longer exothermic. Elements heavier than iron require [[Neutron|neutron]] capture: the slow s-process in AGB stars and the rapid r-process in neutron-star mergers and core-collapse supernovae. The Burbidge, Burbidge, Fowler, and Hoyle (B²FH) synthesis of 1957 formalized these channels and remains the framework underpinning modern astrophysics, cosmology, and fusion-[[Energy|energy]] [[Science|science]].
## See also
- Room hub: [[Helium]]
- p5.js Editor conventions: P5 JS EDITOR
- Wiki root: MAIN
---
*Scaffolded by `generative-microsim` from row 68 of the Helium sheet on 2026-05-12T05:13:24Z.*
<!-- REAL-GENERATIVE-MEDIA:START -->
<!-- CRAFT-LINK:START g12 -->
*Built to the [[WT!P5_js_Microsim_Master_Class|p5.js Master Class]].*
<!-- CRAFT-LINK:END -->
## Wikipedia : Wikitube
**Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Nucleosynthesis) : [Wikitube](https://en.wikitube.io/wiki/Nucleosynthesis)
## Previous hub tags
Tree parents: [[Helium]] · [[Hydrogen]] · [[Oxygen]].
Legacy hubs: none.
---
*Sources: 1 legacy note. Minted wave 1, 2026-07-30 (v1.6 order).*