# Gas chromatography ## Microsim ### Live player <div class="microsim-player"> <iframe src="https://editor.p5js.org/sciencenibber/full/odxYh9Vpn" width="100%" height="620" frameborder="0" sandbox="allow-scripts allow-same-origin"></iframe> </div> <div class="microsim-fallback"> <img src="Microsims/thumbs/Gas_chromatography.png" alt="Gas_chromatography 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/odxYh9Vpn">open sketch in the p5.js editor</a></em></p> </div> **Editor URL:** https://editor.p5js.org/sciencenibber/sketches/odxYh9Vpn **Description (100 words):** Two coupled panels on a 720x520 canvas. On the left, a van Deemter plot graphs plate height H against carrier-gas linear velocity u for helium, hydrogen, and nitrogen, with each gas's Golay-optimum velocity marked by a hollow circle and a yellow vertical line tracking the reader's chosen u. On the right, a live chromatogram redraws three Gaussian analyte peaks whose widths follow N = L / H — every nudge of u sharpens or fattens the peaks in real time. Drag the van Deemter plot to set u, use arrow keys for fine control, or press 1, 2, or 3 to switch the active carrier between He, H2, and N2. A bottom readout shows u, u_opt, H, plate count N, and resolution R_s. ```js // ===================================================================== // Gas_chromatography.js -- Wikitube microsim // Article: Gas_chromatography en.wikitube.io/wiki/Gas_chromatography // Room: Helium Pattern: D (parametric, efficiency) // --------------------------------------------------------------------- // Idea: an interactive van Deemter performance curve coupled to a // live chromatogram. The reader drags a vertical marker that sets // the carrier-gas linear velocity u (cm/s); the marker reads the // plate-height H(u) off the curve for the active carrier gas; the // chromatogram on the right widens or sharpens its peaks live as // H(u) -- and therefore the column's plate count N = L / H -- // changes. Toggling the carrier between He, H2, and N2 reshapes // both the curve and the chromatogram in the same instant. // // This is the canonical Pattern-D microsim: a parametric performance // curve (van Deemter) drives a downstream signal (chromatogram). The // reader's slider IS the plot -- moving u along the curve is the // user input, and every peak on the chromatogram redraws from that // one number. // // Canonical equation (van Deemter, 1956): // // H = A + B / u + C * u // // where // H = plate height (mm) // u = linear gas velocity (cm/s) // A = eddy diffusion (multipath) -- column packing geometry // B = longitudinal diffusion -- B is large for fast gases // C = mass-transfer resistance -- C is small for fast gases // // Differentiating dH/du = 0 gives the Golay-optimum velocity // u_opt = sqrt(B / C) and minimum plate height H_min = A + 2 sqrt(BC). // // Carrier-gas coefficients used here are illustrative but track // the known qualitative picture: He minimizes plate height at // moderate u; H2 minimizes plate height at higher u with a broader // optimum (best for fast analyses); N2 has the lowest minimum H // but only at very low u (slow and tall). // // gas A (mm) B (cm.mm/s) C (s.mm/cm) u_opt (cm/s) // He 0.50 16.0 0.040 20.0 // H2 0.50 22.0 0.022 31.6 // N2 0.50 12.0 0.180 8.2 // // Plate count N = L_column_mm / H. For a 30 m capillary at 30000 mm, // a plate height of 0.6 mm gives N = 50000 plates -- the canonical // capillary number. // // Three analytes are baked in with retention times t_R1, t_R2, t_R3 // that scale inversely with u (faster carrier -> earlier elution). // Peak-width-in-time sigma_i = t_Ri / sqrt(N) is the Gaussian // standard deviation. The chromatogram signal at time t is // S(t) = sum_i exp(-(t - t_Ri)^2 / (2 * sigma_i^2)). // // Visual layout (720 x 520 canvas): // * top-left: HUD title + en.wikitube.io/wiki/Gas_chromatography // * top-right: control hints (drag, keys, carrier toggle) // * left plot: van Deemter -- u (x) vs H (y), three curves overlaid // * right plot: chromatogram -- t (x) vs detector signal (y) // * bottom: live readout (active gas, u, H, N, R_s) + equation // // Conventions (Wikitube Betterfire Standard v0): // * single ARTICLE constant at top, single quotes // * p5.disableFriendlyErrors = true // * non-ASCII (sigma, lambda, dots) lives in COMMENTS ONLY; // every text() string literal is ASCII (the editor preview // pipeline mangles non-ASCII in strings) // * Energy-room palette: dark BG, HOT/COLD/STRUCT/TRAJ // ===================================================================== const ARTICLE = 'Gas_chromatography'; const TITLE = ARTICLE.replace(/_/g, ' '); p5.disableFriendlyErrors = true; // ----- Energy room palette (P5_JS_EDITOR section 4) ------------------ const BG = 18; const FG = 240; const DIM = [240, 240, 240, 140]; const HOT = [220, 110, 60]; // H2 (fast/hot carrier) const COLD = [60, 130, 220]; // He (cool/canonical carrier) const STRUCT = [120, 130, 150]; // N2 (structural/slow carrier) const TRAJ = [240, 220, 80]; // active-state marker const SCRATCH = [120, 120, 120, 90]; const PEAK = [120, 220, 140]; // chromatogram peak fill // ----- Carrier-gas coefficients for H = A + B/u + C*u ---------------- // A, B, C illustrative but track the canonical qualitative picture. const GASES = { He: { name: 'helium', A: 0.50, B: 16.0, C: 0.040, color: COLD, key: '1' }, H2: { name: 'hydrogen', A: 0.50, B: 22.0, C: 0.022, color: HOT, key: '2' }, N2: { name: 'nitrogen', A: 0.50, B: 12.0, C: 0.180, color: STRUCT, key: '3' } }; // ----- Column and analyte constants ---------------------------------- const L_COL_MM = 30000; // 30 m capillary column, in mm const U_MIN = 5; // cm/s, minimum linear velocity displayed const U_MAX = 100; // cm/s const H_MIN = 0; // mm const H_MAX = 2.5; // mm // Three analytes: dimensionless capacity factors k' = 2, 4, 8. // At reference u = 20 cm/s these give nice retention times in the // 40 - 160 s band; retention time scales as ~1/u. const ANALYTES = [ { name: 'C8', k: 2.0 }, { name: 'C10', k: 4.0 }, { name: 'C12', k: 8.0 } ]; // Chromatogram x-axis: 0 to T_MAX seconds. const T_MAX_S = 200; // ----- Plot rectangles (set in setup) -------------------------------- let vdmX, vdmY, vdmW, vdmH; // van Deemter plot let chrX, chrY, chrW, chrH; // chromatogram plot // ----- State --------------------------------------------------------- let activeGas = 'He'; let u_marker = 20.0; // cm/s -- start at the He Golay optimum let dragging = false; function setup() { createCanvas(720, 520); pixelDensity(2); textFont('system-ui'); // Left: van Deemter plot. Right: chromatogram. Both equal width. vdmX = 60; vdmY = 80; vdmW = 290; vdmH = 290; chrX = 390; chrY = 80; chrW = 290; chrH = 290; } function draw() { background(BG); drawVanDeemter(); drawChromatogram(); drawHUD(); } // ===================================================================== // Pattern D: plate-height curve H(u) for each carrier gas // ===================================================================== // Returns plate height H (mm) for gas g at linear velocity u (cm/s). function plateHeight(g, u) { const G = GASES[g]; return G.A + G.B / u + G.C * u; } // Returns the Golay-optimum velocity u_opt (cm/s) for gas g. function uOpt(g) { const G = GASES[g]; return Math.sqrt(G.B / G.C); } // Coordinate transforms for the van Deemter rectangle. function uToPx(u) { return map(u, U_MIN, U_MAX, vdmX, vdmX + vdmW); } function pxToU(px) { return constrain(map(px, vdmX, vdmX + vdmW, U_MIN, U_MAX), U_MIN, U_MAX); } function hToPy(H) { return map(H, H_MIN, H_MAX, vdmY + vdmH, vdmY); } function drawVanDeemter() { push(); // Frame + grid noFill(); stroke(SCRATCH); strokeWeight(1); rect(vdmX, vdmY, vdmW, vdmH); // Axis ticks: u every 20 cm/s, H every 0.5 mm. noStroke(); fill(...DIM); textSize(10); textAlign(CENTER, TOP); for (let u = 20; u <= 100; u += 20) { const x = uToPx(u); stroke(SCRATCH); line(x, vdmY + vdmH, x, vdmY + vdmH + 4); noStroke(); text(u, x, vdmY + vdmH + 6); } textAlign(RIGHT, CENTER); for (let H = 0; H <= 2.5; H += 0.5) { const y = hToPy(H); stroke(SCRATCH); line(vdmX - 4, y, vdmX, y); noStroke(); text(H.toFixed(1), vdmX - 6, y); } // Axis titles noStroke(); fill(...DIM); textSize(11); textAlign(CENTER, TOP); text('u [cm/s, linear velocity]', vdmX + vdmW / 2, vdmY + vdmH + 22); push(); translate(vdmX - 40, vdmY + vdmH / 2); rotate(-PI / 2); text('H [mm, plate height]', 0, 0); pop(); // One curve per carrier gas. Active gas drawn thicker. for (const key of Object.keys(GASES)) { const G = GASES[key]; const active = (key === activeGas); push(); noFill(); stroke(...G.color); strokeWeight(active ? 2.4 : 1.4); if (!active) drawingContext.globalAlpha = 0.55; beginShape(); for (let u = U_MIN; u <= U_MAX; u += 0.5) { const H = plateHeight(key, u); if (H < H_MIN || H > H_MAX) continue; vertex(uToPx(u), hToPy(H)); } endShape(); pop(); // Golay-optimum tick on each curve. const uo = uOpt(key); const Ho = plateHeight(key, uo); push(); noFill(); stroke(...G.color); strokeWeight(active ? 2 : 1); if (!active) drawingContext.globalAlpha = 0.6; circle(uToPx(uo), hToPy(Ho), 8); pop(); } // Legend, top-right inside the plot. textAlign(LEFT, TOP); textSize(11); let ly = vdmY + 8; for (const key of Object.keys(GASES)) { const G = GASES[key]; push(); if (key !== activeGas) drawingContext.globalAlpha = 0.55; noStroke(); fill(...G.color); rect(vdmX + vdmW - 86, ly + 2, 12, 6); fill(FG); textSize(11); text(key + ' ' + G.name, vdmX + vdmW - 70, ly); pop(); ly += 16; } // Vertical marker for u_marker on the active gas curve. const mx = uToPx(u_marker); const mH = plateHeight(activeGas, u_marker); const my = hToPy(constrain(mH, H_MIN, H_MAX)); push(); stroke(...TRAJ); strokeWeight(1); line(mx, vdmY, mx, vdmY + vdmH); noStroke(); fill(...TRAJ); circle(mx, my, 9); pop(); pop(); } // ===================================================================== // Chromatogram: three Gaussian peaks driven by plate height // ===================================================================== // Retention time (s) for analyte a at velocity u (cm/s). Reference // velocity 20 cm/s gives clean spacing in the 50 - 170 s band. function retentionTime(a, u) { const u_ref = 20; const t_ref = 40 * (1 + a.k); // 120 s for k=2, 200 s for k=4, 360 s for k=8 // Hold-up + capacity: both scale roughly as 1/u for capillary GC. return t_ref * (u_ref / u); } // Plate count from current H and L. function plateCount(g, u) { return L_COL_MM / plateHeight(g, u); } // Resolution between adjacent peaks of the chromatogram for the // active gas, using the canonical R_s = (t_R2 - t_R1) / (2 * (s1 + s2)). function resolution(g, u) { const N = plateCount(g, u); const tR1 = retentionTime(ANALYTES[0], u); const tR2 = retentionTime(ANALYTES[1], u); const s1 = tR1 / Math.sqrt(N); const s2 = tR2 / Math.sqrt(N); return (tR2 - tR1) / (2 * (s1 + s2)); } function tToPx(t) { return map(t, 0, T_MAX_S, chrX, chrX + chrW); } function drawChromatogram() { push(); // Frame noFill(); stroke(SCRATCH); strokeWeight(1); rect(chrX, chrY, chrW, chrH); // Axes noStroke(); fill(...DIM); textSize(10); textAlign(CENTER, TOP); for (let t = 0; t <= T_MAX_S; t += 40) { const x = tToPx(t); stroke(SCRATCH); line(x, chrY + chrH, x, chrY + chrH + 4); noStroke(); text(t, x, chrY + chrH + 6); } // Axis titles textAlign(CENTER, TOP); fill(...DIM); textSize(11); text('t [seconds, elution time]', chrX + chrW / 2, chrY + chrH + 22); push(); translate(chrX - 30, chrY + chrH / 2); rotate(-PI / 2); text('detector signal', 0, 0); pop(); // Compute the three peaks for the active gas at u_marker. const N = plateCount(activeGas, u_marker); const peaks = ANALYTES.map(a => { const tR = retentionTime(a, u_marker); const sg = Math.max(0.5, tR / Math.sqrt(N)); // floor at 0.5 s for visual return { name: a.name, tR, sigma: sg }; }); // Render baseline. push(); stroke(...DIM); strokeWeight(1); line(chrX, chrY + chrH - 6, chrX + chrW, chrY + chrH - 6); pop(); // Render the summed-Gaussian signal as a filled curve. push(); noStroke(); fill(...PEAK, 80); beginShape(); vertex(chrX, chrY + chrH - 6); const PX_STEP = 2; for (let px = chrX; px <= chrX + chrW; px += PX_STEP) { const t = map(px, chrX, chrX + chrW, 0, T_MAX_S); let s = 0; for (const p of peaks) { const z = (t - p.tR) / p.sigma; if (Math.abs(z) > 6) continue; s += Math.exp(-0.5 * z * z); } // Normalize so a single peak at center reaches ~85% of chrH. const y = chrY + chrH - 6 - s * (chrH - 30) * 0.65; vertex(px, y); } vertex(chrX + chrW, chrY + chrH - 6); endShape(CLOSE); // Outline stroke(...PEAK); strokeWeight(1.4); noFill(); beginShape(); for (let px = chrX; px <= chrX + chrW; px += PX_STEP) { const t = map(px, chrX, chrX + chrW, 0, T_MAX_S); let s = 0; for (const p of peaks) { const z = (t - p.tR) / p.sigma; if (Math.abs(z) > 6) continue; s += Math.exp(-0.5 * z * z); } const y = chrY + chrH - 6 - s * (chrH - 30) * 0.65; vertex(px, y); } endShape(); pop(); // Label each peak at its retention time if it lies inside the plot. for (const p of peaks) { if (p.tR < 0 || p.tR > T_MAX_S) continue; const px = tToPx(p.tR); push(); stroke(...TRAJ); strokeWeight(1); drawingContext.setLineDash && drawingContext.setLineDash([2, 4]); line(px, chrY + 8, px, chrY + chrH - 6); drawingContext.setLineDash && drawingContext.setLineDash([]); noStroke(); fill(...TRAJ); textAlign(CENTER, TOP); textSize(10); text(p.name + ' ' + nf(p.tR, 0, 1) + ' s', px, chrY + 4); pop(); } pop(); } // ===================================================================== // Input handling: drag the van Deemter plot, keys 1/2/3 swap carrier // ===================================================================== function mousePressed() { if (mouseX >= vdmX && mouseX <= vdmX + vdmW && mouseY >= vdmY && mouseY <= vdmY + vdmH) { u_marker = pxToU(mouseX); dragging = true; } } function mouseDragged() { if (dragging) u_marker = pxToU(mouseX); } function mouseReleased() { dragging = false; } function keyPressed() { const du = 1.0; if (keyCode === LEFT_ARROW) u_marker = Math.max(U_MIN, u_marker - du); if (keyCode === RIGHT_ARROW) u_marker = Math.min(U_MAX, u_marker + du); if (key === '1') activeGas = 'He'; if (key === '2') activeGas = 'H2'; if (key === '3') activeGas = 'N2'; } // ===================================================================== // HUD: title, URL, control hints, live readout, canonical equation // ===================================================================== function drawHUD() { // Top-left: title + Wikitube URL (Betterfire Standard rule 2) noStroke(); fill(FG); textAlign(LEFT, TOP); textSize(22); text(TITLE, 14, 12); fill(...DIM); textSize(12); text('Wikitube microsim . en.wikitube.io/wiki/Gas_chromatography', 14, 40); // Top-right: control hints textAlign(RIGHT, TOP); textSize(10); text('drag van Deemter plot to set u', width - 14, 12); text('arrow keys nudge u (cm/s)', width - 14, 24); text('press 1 / 2 / 3 for He / H2 / N2', width - 14, 36); // Bottom-left: live readout const G = GASES[activeGas]; const H = plateHeight(activeGas, u_marker); const N = plateCount(activeGas, u_marker); const uo = uOpt(activeGas); const Rs = resolution(activeGas, u_marker); fill(...DIM); textAlign(LEFT, BOTTOM); textSize(12); text('carrier: ' + activeGas + ' (' + G.name + ') u = ' + nf(u_marker, 0, 1) + ' cm/s u_opt = ' + nf(uo, 0, 1) + ' cm/s', 14, height - 38); fill(FG); textSize(13); text('H = ' + nf(H, 0, 3) + ' mm N = ' + nf(N, 0, 0) + ' plates R_s(1,2) = ' + nf(Rs, 0, 2), 14, height - 20); // Bottom-right: canonical equation (Betterfire Standard rule 4) textAlign(RIGHT, BOTTOM); fill(FG); textSize(13); text('H = A + B/u + C*u [van Deemter, 1956]', width - 14, height - 20); // Sub-equation: plate count fill(...DIM); textSize(11); textAlign(RIGHT, BOTTOM); text('N = L / H R_s = (tR2 - tR1) / (2 sigma_avg)', width - 14, height - 6); } // ===================================================================== // End of Gas_chromatography.js -- Wikitube microsim, Helium room, Pattern D. // ===================================================================== ``` ## Links (Wikipedia order) <!-- injected from _registry/childlinks/Gas_chromatography.json (2026-07-30T02:09:12Z) --> `Actinide_chemistry` · `Agricultural_chemistry` · `Alchemy` · `Amateur_chemistry` · `Analyst_(journal)` · `Analyte` · `Analytica_Chimica_Acta` · `Analytical_Biochemistry` · `Analytical_Chemistry_(journal)` · `Analytical_and_Bioanalytical_Chemistry` · `Analytical_chemistry` · [[Argon]] · `Astrochemistry` · `Atmospheric_chemistry` · `Atom` · `Atomic_absorption_spectroscopy` · `Autosampler` · `Beta_particle` · `Biochemistry` · `Biogeochemistry` · `Bioinorganic_chemistry` · `Bioorganic_chemistry` · `Bioorganometallic_chemistry` · `Bioorthogonal_chemistry` · `Biophysical_chemistry` · `Biosynthesis` · `Calibration_curve` · `Calorimetry` · `Carbochemistry` · `Catalysis` · `Cell_biology` · [[Ceramic_engineering]] · `Characterization_(materials_science)` · `Chemical_biology` · `Chemical_bond` · `Chemical_compound` · `Chemical_decomposition` · [[Chemical_element]] · [[Chemical_engineering]] · `Chemical_kinetics` · `Chemical_physics` · `Chemical_polarity` · `Chemical_reaction` · `Chemical_synthesis` · `Chemical_thermodynamics` · [[Chemistry]] · `Chemistry_education` · `Chemometrics` · `Chromatography` · `Clandestine_chemistry` · `Clay_chemistry` · `Click_chemistry` · `Clinical_chemistry` · `Combinatorial_chemistry` · `Computational_chemistry` · `Coordination_complex` · `Cosmochemistry` · `Cryochemistry` · `Crystallography` · `Dilution_(equation)` · `Dynamic_covalent_chemistry` · `Electroanalytical_methods` · `Electrochemistry` · `Electrochromatography` · `Electron_ionization` · `Elemental_analysis` · `Enantioselective_synthesis` · `Environmental_chemistry` · `Equilibrium_chemistry` · `Ethylene` · `Femtochemistry` · `Filtration` · `Food_chemistry` · `Food_physical_chemistry` · `Forensic_chemistry` · `Forensic_science` · `Forensic_toxicology` · `Freundlich_equation` · `Fullerene_chemistry` · `Gas_chromatography–mass_spectrometry` · `General_chemistry` · `Geochemistry` · `Glossary_of_chemical_formulae` · `Gravimetric_analysis` · `Green_chemistry` · [[Helium]] · `High-performance_liquid_chromatography` · `History_of_chemistry` · `History_of_chromatography` · `Hydrocarbon` · [[Hydrogen]] · `Inductively_coupled_plasma_mass_spectrometry` · [[Inert_gas]] · `Infrared_detector` · `Infrared_spectroscopy` · `Inorganic_chemistry` · `Inorganic_compound` · `Instrumental_chemistry` · [[Interdisciplinarity]] · `Interface_and_colloid_science` · `Internal_standard` · [[Ion]] · `Ion_chromatography` · `Ion_mobility_spectrometry` · `Isotope_dilution` · `Liquid_chromatography–mass_spectrometry` · `List_of_biomolecules` · `List_of_inorganic_compounds` · `Magnetochemistry` · `Masking_agent` · `Mass_spectrometry` · [[Materials_science]] · `Mathematical_chemistry` · `Matrix-assisted_laser_desorption/ionization` · `Matrix_(chemical_analysis)` · `Mechanochemistry` · `Medicinal_chemistry` · [[Metallurgy]] · `Micromeritics` · `Microscope` · `Microwave_chemistry` · `Mill_Hill` · `Molecular_biology` · [[Molecular_dynamics]] · `Molecular_geometry` · `Molecular_mechanics` · `Molecular_modelling` · `Molecular_physics` · `Molecule` · `Nanochemistry` · `National_Institute_for_Medical_Research` · `Neurochemistry` · [[Nitrogen]] · `Nobel_Prize_in_Chemistry` · `Nuclear_chemistry` · `Nuclear_magnetic_resonance_spectroscopy` · `Optical_spectrometer` · `Organic_chemistry` · `Organic_compound` · `Organic_synthesis` · `Organolanthanide_chemistry` · `Organometallic_chemistry` · `Paper_chromatography` · `Periodic_table` · `Pharmacology` · `Photochemistry` · `Photoelectrochemistry` · `Photogeochemistry` · `Physical_chemistry` · `Physical_organic_chemistry` · `Polymer_chemistry` · `Polymer_science` · `Post-mortem_chemistry` · `Quantum_chemistry` · [[Quantum_mechanics]] · `Radiation_chemistry` · `Radiochemistry` · `Raman_spectroscopy` · `Reactivity_(chemistry)` · `Retardation_factor` · `Retrosynthetic_analysis` · `Richard_Laurence_Millington_Synge` · `Salt_(chemistry)` · `Sample_preparation` · `Secondary_electrospray_ionization` · `Semisynthesis` · `Separation_process` · `Size-exclusion_chromatography` · `Soil_chemistry` · `Soil_gas` · `Solid-state_chemistry` · `Sonochemistry` · `Spectroelectrochemistry` · `Spectrophotometry` · `Spectroscopy` · `Spin_chemistry` · `Standard_addition` · `Stellar_chemistry` · `Stereochemistry` · `Stoichiometry` · `Structural_chemistry` · `Sub-sampling_(chemistry)` · `Supramolecular_chemistry` · `Surface_science` · `The_central_science` · `Theoretical_chemistry` · `Thermionic_emission` · `Thermochemistry` · `Thin-layer_chromatography` · `Timeline_of_chemistry` · `Titration` · `Total_synthesis` · `Ultraviolet–visible_spectroscopy` · `Uppsala_University` · `VSEPR_theory` · `Volatility_(chemistry)` · `Wet_chemistry` · `Work_function` ## From the vault media library !Gas chromatography thumb.png *Gas Chromatography — 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 Gas chromatography (GC) is the analytical technique that separates volatile and semi-volatile components of a mixture by partitioning them between a mobile gas phase, the carrier gas, and a stationary phase coating the interior of a long, narrow column. A small sample is vaporized in a heated inlet, swept onto the column head, and dragged through the column under a programmed temperature ramp; each analyte elutes at a characteristic retention time set by its volatility and its affinity for the stationary phase, then registers on a downstream detector as a peak in the chromatogram. The technique was introduced by A. T. James and A. J. P. Martin in 1952, in the same year Martin and R. L. M. Synge received the Nobel Prize in [[Chemistry]] for partition chromatography. The shift from packed to open-tubular wall-coated capillary columns, proposed by Marcel Golay in 1957, made GC the workhorse separation method it remains. Helium is the dominant carrier gas because it is chemically inert, has low [[Viscosity|viscosity]] and high diffusivity for fast analyses, and provides the highest plate count in combination with thermal-conductivity, flame-ionization, helium-ionization, and mass-spectrometric detection. Column performance is governed by the van Deemter equation, H = A + B/u + C u, which relates plate height H to linear gas [[Velocity|velocity]] u through multipath, longitudinal-[[Diffusion|diffusion]], and mass-transfer terms; minimizing H maximizes the number of theoretical plates and therefore peak resolution. Modern GC anchors petroleum assay, environmental monitoring, forensic toxicology, food and flavor analysis, doping control, and clinical breath diagnostics. ## See also - Room hub: [[Helium]] - p5.js Editor conventions: P5 JS EDITOR - Wiki root: MAIN --- *Scaffolded by `generative-microsim` from row 56 of the Helium sheet on 2026-05-12T03:03:26Z.* <!-- LOCAL-MEDIA-PASS: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/Gas_chromatography) : [Wikitube](https://en.wikitube.io/wiki/Gas_chromatography) ## Previous hub tags Tree parent: [[Helium]]. Legacy hubs: none. --- *Sources: 1 legacy note. Minted wave 1, 2026-07-30 (v1.6 order).*