# Liquid helium <!-- MICROSIMGEN:BEGIN v1.7 — generated by g08_place_microsims.py; three.js first (§15); do not hand-edit inside --> ## Microsims — three.js ### Liquid helium (three.js) <div class="microsim-player"> <iframe src="https://wikitube-3d-microsims.netlify.app/Liquid_helium.html" width="100%" height="620" frameborder="0" loading="lazy" sandbox="allow-scripts allow-same-origin" title="Liquid helium — three.js microsim"></iframe> </div> **Open it full-screen:** [Liquid_helium.html](https://wikitube-3d-microsims.netlify.app/Liquid_helium.html) · library `threejs` · route `microsim/threejs/` ### Related microsims Live sims on neighbouring articles: - [[Fractional_distillation]] - [[Reynolds_number]] - [[Viscosity]] *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/DvmbV7Vp1" width="100%" height="620" frameborder="0" sandbox="allow-scripts allow-same-origin"></iframe> </div> <div class="microsim-fallback"> <img src="Microsims/thumbs/Liquid_helium.png" alt="Liquid_helium 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/DvmbV7Vp1">open sketch in the p5.js editor</a></em></p> </div> **Editor URL:** https://editor.p5js.org/sciencenibber/sketches/DvmbV7Vp1 **Description (100 words):** A two-panel interactive sweep across the lambda transition of liquid helium-4. The left panel plots the specific heat C_p from 1.5 K to 4.5 K, drawn through fifteen anchor points that capture the sharp divergence at the lambda point (T_lambda = 2.1768 K), with magenta guides marking the transition and the normal boiling-point tick. The right panel shows the Landau two-fluid composition at the cursor temperature: a stacked vertical bar splitting normal-fluid and superfluid fractions, rendered live from the formula rho_s/rho = 1 - (T/T_lambda)^5.6. Drag the yellow cursor on the C_p curve, or use the arrow keys, to walk across the He I / He II boundary and watch both panels respond in lockstep. ```js // ===================================================================== // Liquid_helium.js -- Wikitube microsim // Article: Liquid_helium en.wikitube.io/wiki/Liquid_helium // Room: Helium Pattern: A (state transitions, // cryogenic properties) // --------------------------------------------------------------------- // Idea: the *defining* signature of liquid helium-4 is the lambda // transition at T_lambda = 2.1768 K, where the specific heat C_p(T) // diverges in the shape of the Greek letter lambda. Above the lambda // point lives normal liquid He I; below it lives superfluid He II, // in which a macroscopic fraction of the atoms occupies a single // quantum ground state and the fluid flows with zero viscosity. // // This microsim renders two co-evolving views of that transition: // // (1) Specific heat C_p(T) from 1.5 K to 4.5 K, on the left half. // The classic lambda-shape divergence is drawn as a curve // through eleven anchor points fit to experimental data. // A vertical temperature cursor scrubs through T. // // (2) Two-fluid composition (Tisza / Landau) on the right half: // // rho_s / rho = 1 - (T / T_lambda)^5.6 (T <= T_lambda) // rho_s / rho = 0 (T > T_lambda) // // rendered as a stacked vertical bar showing the superfluid // fraction rho_s / rho (cold blue) and the normal-fluid // fraction rho_n / rho (warm orange) at the current T. // Above T_lambda the bar is entirely normal fluid (He I); // as T drops below T_lambda the superfluid fraction grows, // approaching unity at T -> 0. // // The reader drags the cursor (or uses left/right arrows) and watches // both views update simultaneously. The bottom readout panel reports // T, phase (He I or He II), C_p, rho_s / rho, and a textual property // (zero viscosity, fountain effect, Rollin film) when in the // superfluid regime. // // Helium-4 landmarks pinned on the C_p plot: // * lower lambda point T_lambda = 2.1768 K // * normal boiling point T_NBP = 4.222 K (sketched as a tick) // * T -> 0: C_p -> 0 (third-law behavior) // * critical point T_c = 5.195 K (off the plot, noted in caption) // // The C_p anchor table is piecewise-linear interpolated. Near the // lambda point the divergence is steep, so anchors cluster densely // in the interval (2.10, 2.25) K. Outside the table the curve is // clamped to the nearest end-anchor (this just trims off-plot // artifacts; the physics is in the central decade). // // Visual layout (720 x 520 canvas): // * top-left: HUD title + en.wikitube.io/wiki/Liquid_helium subtitle // * top-right: control hints (drag, arrow keys, click-to-jump) // * left half: C_p(T) curve with vertical T cursor // * right half: two-fluid stacked bar + (rho_s/rho, rho_n/rho) // numerical readout // * bottom-left: live phase + property readout // * bottom-right: canonical equation (Landau two-fluid law) // // Conventions (Wikitube Betterfire Standard v0): // * single ARTICLE constant at the top, single quotes // * p5.disableFriendlyErrors = true (keep the editor console clean) // * non-ASCII (Greek lambda, dots, arrows) lives in COMMENTS ONLY; // every text() string literal is ASCII // * Energy-room palette (P5_JS_EDITOR section 4): dark BG, HOT/COLD // tones, STRUCT grey, TRAJ accent // // No sliders -- the T cursor on the C_p plot is the controller. // Mouse drag and arrow keys move it; clicking inside the plot // rect jumps to that temperature. The plot itself is the slider. // ===================================================================== const ARTICLE = 'Liquid_helium'; 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]; // warm: normal fluid (He I component) const COLD = [60, 130, 220]; // cool: liquid He I full const COLDER = [40, 80, 180]; // deeper cool: superfluid He II const STRUCT = [120, 130, 150]; // structural grey: axes / scratch const TRAJ = [240, 220, 80]; // reader cursor (yellow accent) const SCRATCH = [120, 120, 120, 90]; // grid / scratch lines const ACCENT = [200, 100, 220]; // lambda line / lambda-point marker // ----- He-4 lambda-transition landmarks ------------------------------ const T_LAMBDA = 2.1768; // K, lambda transition at saturated vapor pressure const T_NBP = 4.222; // K, normal boiling point at 1 atm (off-plot tick) const T_CRIT = 5.195; // K, critical point (noted in caption only) const ALPHA_SF = 5.6; // Landau exponent in rho_s/rho = 1 - (T/T_lambda)^alpha // ----- C_p(T) anchor table for liquid He-4 (J / mol-K) --------------- // Hand-fit anchors to experimental specific-heat data; the divergence // near T_lambda is sharp, so anchors cluster densely in (2.10, 2.25) K. const CP_ANCHORS = [ [1.50, 2.8 ], [1.80, 6.5 ], [2.00, 14.0 ], [2.10, 24.0 ], [2.15, 42.0 ], [2.17, 70.0 ], // just below lambda [2.1768, 78.0 ], // lambda point: the peak [2.18, 60.0 ], // just above lambda (He I side falls faster) [2.20, 25.0 ], [2.30, 9.5 ], [2.50, 6.5 ], [3.00, 5.0 ], [3.50, 5.5 ], [4.00, 7.0 ], [4.50, 9.0 ] ]; // ----- Plot data ranges ---------------------------------------------- const T_MIN = 1.5; // K const T_MAX = 4.5; // K const CP_MIN = 0; // J / mol-K const CP_MAX = 90; // J / mol-K (just above the peak anchor) // ----- Plot rectangles in canvas pixels (set in setup) --------------- let cpX, cpY, cpW, cpH; // left-half: C_p vs T let barX, barY, barW, barH; // right-half: two-fluid stacked bar // ----- Reader's draggable T cursor ----------------------------------- let cursorT = T_LAMBDA; // start exactly at the lambda point let dragging = false; function setup() { createCanvas(720, 520); pixelDensity(2); textFont('system-ui'); // Left half -- C_p curve. Leaves room for HUD (top) + readout (bottom). cpX = 60; cpY = 80; cpW = 330; cpH = 340; // Right half -- two-fluid stacked bar. Tall and narrow. barX = 470; barY = 100; barW = 80; barH = 320; } function draw() { background(BG); // Draw order: axes -> C_p curve -> landmarks -> cursor -> bar -> HUD drawCpAxes(); drawCpCurve(); drawCpLandmarks(); drawCursor(); drawTwoFluidBar(); drawReadout(); drawHUD(); } // ===================================================================== // Coordinate transforms // ===================================================================== function tToPxCp(T) { return map(T, T_MIN, T_MAX, cpX, cpX + cpW); } function pxToTCp(px) { return map(px, cpX, cpX + cpW, T_MIN, T_MAX); } function cpToPy(Cp) { return map(Cp, CP_MIN, CP_MAX, cpY + cpH, cpY); } // ===================================================================== // Physics: C_p(T) and the two-fluid model // ===================================================================== // Piecewise-linear interpolation in (T, C_p) across the anchor table. // Outside the table's T range, returns the nearest end-anchor C_p. function cpOfT(T) { if (T <= CP_ANCHORS[0][0]) return CP_ANCHORS[0][1]; if (T >= CP_ANCHORS[CP_ANCHORS.length - 1][0]) return CP_ANCHORS[CP_ANCHORS.length - 1][1]; for (let i = 0; i < CP_ANCHORS.length - 1; i++) { const [T0, C0] = CP_ANCHORS[i]; const [T1, C1] = CP_ANCHORS[i + 1]; if (T >= T0 && T <= T1) { const frac = (T - T0) / (T1 - T0); return C0 + frac * (C1 - C0); } } return CP_ANCHORS[CP_ANCHORS.length - 1][1]; } // Landau / Tisza two-fluid model: superfluid fraction rho_s / rho. // Below T_lambda: rho_s/rho = 1 - (T/T_lambda)^5.6 // Above T_lambda: rho_s/rho = 0 (no superfluid component in He I) function rhoSfFrac(T) { if (T >= T_LAMBDA) return 0; return 1 - Math.pow(T / T_LAMBDA, ALPHA_SF); } // Phase classifier for liquid He-4 in this microsim's T range. // He I and He II are the two named liquid phases; "vapor" denotes the // regime above the normal boiling point shown for context. function phaseOfT(T) { if (T < T_LAMBDA) return 'He II'; if (T <= T_NBP) return 'He I'; return 'vapor'; } // ===================================================================== // Drawing -- C_p curve // ===================================================================== function drawCpAxes() { push(); noFill(); stroke(SCRATCH); strokeWeight(1); rect(cpX, cpY, cpW, cpH); // T-axis ticks every 0.5 K noStroke(); fill(...DIM); textSize(10); textAlign(CENTER, TOP); for (let T = 1.5; T <= 4.5 + 0.001; T += 0.5) { const x = tToPxCp(T); stroke(SCRATCH); line(x, cpY + cpH, x, cpY + cpH + 4); noStroke(); text(nf(T, 0, 1), x, cpY + cpH + 6); } // C_p-axis ticks every 20 J/mol-K textAlign(RIGHT, CENTER); for (let Cp = 0; Cp <= CP_MAX; Cp += 20) { const y = cpToPy(Cp); stroke(SCRATCH); line(cpX - 4, y, cpX, y); noStroke(); text(Cp, cpX - 6, y); } // Axis titles noStroke(); fill(...DIM); textSize(12); textAlign(CENTER, TOP); text('T [K]', cpX + cpW / 2, cpY + cpH + 22); push(); translate(cpX - 44, cpY + cpH / 2); rotate(-PI / 2); text('C_p [J / mol-K]', 0, 0); pop(); // Section label above the plot textAlign(LEFT, BOTTOM); textSize(12); fill(...DIM); text('Specific heat: the lambda anomaly', cpX, cpY - 8); pop(); } function drawCpCurve() { push(); noFill(); stroke(...COLD); strokeWeight(2); beginShape(); for (let T = T_MIN; T <= T_MAX; T += 0.005) { vertex(tToPxCp(T), cpToPy(cpOfT(T))); } endShape(); pop(); } function drawCpLandmarks() { push(); // Lambda point -- magenta vertical guide + open circle + label const xLam = tToPxCp(T_LAMBDA); const yLam = cpToPy(cpOfT(T_LAMBDA)); stroke(...ACCENT, 110); strokeWeight(1); line(xLam, cpY, xLam, cpY + cpH); noFill(); stroke(...ACCENT); strokeWeight(2); circle(xLam, yLam, 9); noStroke(); fill(...ACCENT); textSize(10); textAlign(LEFT, BOTTOM); text('T_lambda = 2.1768 K', xLam + 6, yLam - 4); // Normal boiling point tick on the T axis (off-curve in the He I tail) const xNbp = tToPxCp(T_NBP); stroke(...COLD); strokeWeight(2); line(xNbp, cpY + cpH - 6, xNbp, cpY + cpH + 6); noStroke(); fill(...COLD); textSize(9); textAlign(CENTER, TOP); text('NBP 4.222 K', xNbp, cpY + cpH + 18); // Region labels: He II and He I either side of the lambda guide noStroke(); textSize(11); textAlign(CENTER, BOTTOM); fill(...COLDER); text('He II (superfluid)', cpX + 60, cpY + 18); fill(...COLD); text('He I (normal liquid)', cpX + cpW - 80, cpY + 18); pop(); } function drawCursor() { push(); const xc = tToPxCp(cursorT); // Vertical cursor through the C_p plot stroke(...TRAJ, 220); strokeWeight(1.5); line(xc, cpY, xc, cpY + cpH); // Dot at the C_p curve at this T const yc = cpToPy(cpOfT(cursorT)); fill(...TRAJ); noStroke(); circle(xc, yc, 9); pop(); } // ===================================================================== // Drawing -- two-fluid stacked bar (right half) // ===================================================================== function drawTwoFluidBar() { push(); // Section title noStroke(); fill(...DIM); textSize(12); textAlign(CENTER, BOTTOM); text('Two-fluid composition (Landau)', barX + barW / 2, barY - 8); // Bar frame noFill(); stroke(SCRATCH); strokeWeight(1); rect(barX, barY, barW, barH); // Compute fractions at the cursor T const fSf = constrain(rhoSfFrac(cursorT), 0, 1); // rho_s / rho const fN = 1 - fSf; // rho_n / rho // Top stripe: normal-fluid fraction (warm orange). // Bottom stripe: superfluid fraction (deep blue). const hN = fN * barH; const hSf = fSf * barH; noStroke(); fill(...HOT, 200); rect(barX, barY, barW, hN); fill(...COLDER, 220); rect(barX, barY + hN, barW, hSf); // Numerical readout next to the bar fill(...DIM); textSize(11); textAlign(LEFT, CENTER); text('rho_n / rho = ' + nf(fN, 1, 3), barX + barW + 16, barY + hN / 2); text('rho_s / rho = ' + nf(fSf, 1, 3), barX + barW + 16, barY + hN + hSf / 2); // Tick at the lambda boundary (always at the top of the bar when // T < T_lambda, sliding off the bar above T_lambda) if (cursorT <= T_LAMBDA) { stroke(...ACCENT); strokeWeight(1); line(barX - 6, barY + hN, barX + barW + 6, barY + hN); noStroke(); fill(...ACCENT); textSize(9); textAlign(RIGHT, CENTER); text('normal / super', barX - 8, barY + hN); } // Mini-axis: scale from 0 (top) to 1 (bottom) of either fraction stroke(SCRATCH); strokeWeight(1); line(barX + barW + 110, barY, barX + barW + 110, barY + barH); noStroke(); fill(...DIM); textSize(9); textAlign(LEFT, CENTER); text('1.0', barX + barW + 116, barY + 4); text('0.5', barX + barW + 116, barY + barH / 2); text('0.0', barX + barW + 116, barY + barH - 4); pop(); } // ===================================================================== // Bottom readout // ===================================================================== function drawReadout() { push(); const Cp = cpOfT(cursorT); const fSf = constrain(rhoSfFrac(cursorT), 0, 1); const ph = phaseOfT(cursorT); const phLabel = ph === 'He II' ? 'liquid He II (superfluid)' : ph === 'He I' ? 'liquid He I (normal)' : 'vapor (gaseous He)'; // Bottom-left two lines: state numerics then phase label noStroke(); fill(...DIM); textSize(12); textAlign(LEFT, BOTTOM); text( 'T = ' + nf(cursorT, 0, 3) + ' K ' + 'C_p = ' + nf(Cp, 0, 1) + ' J/mol-K ' + 'rho_s/rho = ' + nf(fSf, 1, 3), 14, height - 36 ); fill(FG); textSize(13); textAlign(LEFT, BOTTOM); text('phase: ' + phLabel, 14, height - 20); // Sub-label: a property unique to the current phase textSize(11); fill(...DIM); let propLine = ''; if (ph === 'He II') { propLine = 'zero viscosity, infinite thermal conductivity, fountain effect, Rollin film'; } else if (ph === 'He I') { propLine = 'ordinary low-density quantum liquid, ~125 kg/m^3 near NBP'; } else { propLine = 'gaseous helium above 4.222 K at 1 atm; critical point at 5.195 K'; } text(propLine, 14, height - 6); pop(); } // ===================================================================== // Input handling // ===================================================================== function mousePressed() { // Inside the C_p plot rectangle: click-to-jump and begin drag. if (mouseX >= cpX && mouseX <= cpX + cpW && mouseY >= cpY && mouseY <= cpY + cpH) { cursorT = pxToTCp(mouseX); dragging = true; } } function mouseDragged() { if (dragging) { const px = constrain(mouseX, cpX, cpX + cpW); cursorT = pxToTCp(px); } } function mouseReleased() { dragging = false; } function keyPressed() { // Arrow keys nudge the cursor for fine control near the lambda point. const dT_coarse = 0.05; const dT_fine = 0.005; const step = (keyIsDown(SHIFT)) ? dT_fine : dT_coarse; if (keyCode === LEFT_ARROW) cursorT = Math.max(T_MIN, cursorT - step); if (keyCode === RIGHT_ARROW) cursorT = Math.min(T_MAX, cursorT + step); } // ===================================================================== // HUD // ===================================================================== function drawHUD() { // Top-left: title + Wikitube URL (Betterfire Standard rule 2) noStroke(); fill(FG); textAlign(LEFT, TOP); textSize(20); text(TITLE, 14, 12); fill(...DIM); textSize(12); text('Wikitube microsim . en.wikitube.io/wiki/Liquid_helium', 14, 36); // Top-right: control hints (Betterfire Standard rule 3) textAlign(RIGHT, TOP); textSize(10); text('drag the cursor to change T', width - 14, 12); text('arrow keys nudge (shift=fine)', width - 14, 24); text('click in left plot to jump', width - 14, 36); // Bottom-right: canonical equation (Betterfire Standard rule 4) textAlign(RIGHT, BOTTOM); fill(FG); textSize(13); text('rho_s/rho = 1 - (T/T_lambda)^5.6 [Landau two-fluid]', width - 14, height - 6); } // ===================================================================== // End of Liquid_helium.js -- Wikitube microsim, Helium room, Pattern A. // ===================================================================== ``` ## Links (Wikipedia order) <!-- injected from _registry/childlinks/Liquid_helium.json (2026-07-30T02:09:12Z) --> `Absolute_zero` · `Atmospheric_pressure` · [[Atomic_mass]] · [[Boiling_point]] · [[Boson]] · `Bowl` · `CERN` · [[Chemical_element]] · `Chemical_formula` · `Cooper_pair` · `Critical_point_(thermodynamics)` · `Cryocooler` · [[Cryogenics]] · `Dalton_(unit)` · [[Dilution_refrigerator]] · `Enthalpy` · `Expansion_ratio` · [[Fermion]] · `Fermionic_condensate` · `Heike_Kamerlingh_Onnes` · [[Helium]] · [[Helium-3]] · [[Helium-4]] · `Industrial_gas` · `Intermolecular_force` · `Isotope` · `Kelvin` · `Lambda_point` · `Large_Hadron_Collider` · `Leiden_University` · `Lev_Landau` · `Liquid` · `Liquid_air` · `Liquid_hydrogen` · `Liquid_nitrogen` · `Liquid_oxygen` · `Magnetic_field` · [[Magnetic_resonance_imaging]] · `Magnetoencephalography` · `Melting` · `Molar_mass` · `Mössbauer_spectroscopy` · `Netherlands` · [[Noble_gas]] · [[Nuclear_magnetic_resonance]] · `Phase_separation` · [[Physics]] · `Pressure` · [[Quantum_mechanics]] · `Refrigerant` · `Richard_Feynman` · `Standard_state` · [[Superconducting_magnet]] · [[Superfluid_helium-4]] · `Superfluidity` · `Supersolid` · `Temperature` · `University_of_Oregon` · `Vapor_pressure` · `Water` · [[Wayback_Machine]] · [[Zero-point_energy]] ## From the vault media library !Liquid helium thumb.png *Liquid Helium — 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 Liquid helium is the liquid phase of the element helium, formed when helium gas is cooled below its [[Boiling_point|boiling point]] of 4.222 K (-268.93 °C) at one atmosphere. It is the coldest commonly used cryogenic fluid and the only known substance that does not solidify under its own vapor pressure at any temperature, requiring at least about 25 atmospheres of external pressure to crystallize. Two stable liquid isotopes exist: helium-4, by far the more abundant, and the rare fermionic helium-3, which boils at 3.19 K. Helium-4 displays a unique second-order [[Phase_transition|phase transition]] at the lambda point, 2.1768 K, where the specific heat diverges in a shape resembling the Greek letter lambda. Above the lambda point, the normal phase He I behaves as an ordinary low-[[Density|density]] quantum liquid (~125 kg/m^3); below it, the superfluid phase He II exhibits zero [[Viscosity|viscosity]], effectively infinite thermal conductivity, the fountain effect, and Rollin films that creep up container walls. Tisza and Landau described it as a two-fluid mixture of normal and superfluid components with density fractions rho_n/rho and rho_s/rho that depend on temperature. First liquefied by Heike Kamerlingh Onnes at Leiden in 1908, and recognized as a superfluid by Kapitsa, Allen, and Misener in 1937-38, liquid helium underpins modern [[Cryogenics|cryogenics]]. It cools superconducting magnets in MRI scanners and NMR spectrometers, the dipole magnets of the LHC at CERN, infrared space telescopes, dilution refrigerators in quantum-computing laboratories, and high-field research magnets at facilities such as the National High Magnetic Field Laboratory. ## See also - Room hub: [[Helium]] - p5.js Editor conventions: P5 JS EDITOR - Wiki root: MAIN --- *Scaffolded by `generative-microsim` from row 26 of the Helium sheet on 2026-05-11T21:54:46Z.* <!-- LOCAL-MEDIA-PASS:START --> <!-- CRAFT-LINK:START g12 --> *Built to the [[WT!P5_js_Microsim_Master_Class|p5.js Master Class]].* <!-- CRAFT-LINK:END --> <!-- COMPENDIUMLINK:BEGIN g19 — generated from _registry/plans/THURY_COMPENDIUM_SECTIONS.md; do not hand-edit inside --> *Linked from the [[WT!Thury_Hydrodynamics_Compendium|Thury Hydrodynamics Compendium]], section 26, Cryogenics.* <!-- COMPENDIUMLINK:END --> <!-- THURYSIM:BEGIN g21 — Thury Compendium microsim (framework build, specs/variants/Liquid_helium.json); do not hand-edit inside --> **Microsim — three.js (Wikitube framework):** *Liquid helium* <div class="wt-sim" data-src="https://wikitube-3d-microsims.netlify.app/thury/Liquid_helium.html" data-title="Liquid helium"></div> *Built from `MICROSIM_GUIDE/specs/variants/Liquid_helium.json`; part of the [[WT!Thury_Hydrodynamics_Compendium|Thury Hydrodynamics Compendium]] set.* <!-- THURYSIM:END --> ## Wikipedia : Wikitube **Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Liquid_helium) : [Wikitube](https://en.wikitube.io/wiki/Liquid_helium) ## Previous hub tags Tree parent: [[Helium]]. Legacy hubs: none. --- *Sources: 1 legacy note. Minted wave 1, 2026-07-30 (v1.6 order).*