# Viscosity <!-- MICROSIMGEN:BEGIN v1.7 — generated by g08_place_microsims.py; three.js first (§15); do not hand-edit inside --> ## Microsims — three.js ### Viscosity (three.js) <div class="microsim-player"> <iframe src="https://wikitube-3d-microsims.netlify.app/Viscosity.html" width="100%" height="620" frameborder="0" loading="lazy" sandbox="allow-scripts allow-same-origin" title="Viscosity — three.js microsim"></iframe> </div> **Open it full-screen:** [Viscosity.html](https://wikitube-3d-microsims.netlify.app/Viscosity.html) · library `threejs` · route `microsim/threejs/` ### Related microsims Live sims on neighbouring articles: - [[Fractional_distillation]] - [[Liquid_helium]] - [[Reynolds_number]] *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/LGnSl67W_" width="100%" height="620" frameborder="0" sandbox="allow-scripts allow-same-origin"></iframe> </div> <div class="microsim-fallback"> <img src="Microsims/thumbs/Viscosity.png" alt="Viscosity 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/LGnSl67W_">open sketch in the p5.js editor</a></em></p> </div> **Editor URL:** https://editor.p5js.org/sciencenibber/sketches/LGnSl67W_ **Description (100 words):** The microsim splits into two coupled views. The upper Couette cell shows a fixed bottom plate, a moving top plate, and a cloud of pale-cyan particles drifting in the gap with the linear u(y) = U(1 - y/h) profile that Newtonian shear demands; five yellow arrows trace the velocity profile. The bottom half is a viscosity-vs-temperature plot for helium-4 from 1.5 K to 5.5 K on a log axis, with a magenta lambda line at 2.172 K marking the He-II to He-I transition. A draggable yellow dot or the arrow keys move temperature, which updates the dynamic viscosity, shear stress, phase label, and proxy Reynolds gauges in real time. ```js // ===================================================================== // Viscosity.js -- Wikitube microsim // Article: Viscosity en.wikitube.io/wiki/Viscosity // Room: Helium Pattern: D (parametric / efficiency) // + E (particle / kinetic) // --------------------------------------------------------------------- // Idea: the constitutive relation that *defines* viscosity is // // tau = mu * (du/dy) (Newton's law of viscosity) // // where tau is the shear stress in the fluid, mu is the dynamic // viscosity (Pa*s), and du/dy is the velocity gradient normal to the // flow. A planar Couette setup -- two parallel plates with the top one // sliding sideways at velocity U over a gap h -- realises this // relation in its simplest form: a linear velocity profile // u(y) = U * (y / h), constant shear rate, constant shear stress. // // The Helium twist: liquid helium-4 below the lambda point (2.172 K) // becomes superfluid Helium-II, and its measured viscosity in narrow // channels drops to effectively zero. Above 2.172 K it is ordinary // liquid Helium-I, with mu ~ 3 micro-Pa*s. The temperature-dependence // curve plotted here is a piecewise model: roughly constant in the // Helium-I region, a sharp lambda cusp, a near-zero plateau in the // Helium-II region, and the kinetic-theory gas branch above the // critical point for vapor He-4. // // Visual layout (720 x 520 canvas): // * top: HUD title + en.wikitube.io/wiki/Viscosity subtitle // * upper-left: Couette viscometer -- two plates, particles in the // gap, velocity arrows showing the linear profile, // live shear-rate and shear-stress readouts // * upper-right: live gauges (mu, tau, Re, phase label) // * lower band: viscosity(T) curve for He-4 from 1.5 K to 5.5 K, // log-scale viscosity axis, lambda line marked, // draggable T marker drives the upper-half mu // * sliders: U (top-plate velocity), h (gap), L (plate length) // laid out across the bottom of the canvas // * bottom-right: canonical equation // // Conventions (Wikitube Betterfire Standard v0): // * single ARTICLE constant, single quotes // * p5.disableFriendlyErrors = true // * ALL non-ASCII (mu, tau, lambda, dot) lives in COMMENTS only; // text() strings are pure ASCII // * Energy-room palette (P5_JS_EDITOR section 4, line 165) // * sliders all .position().size() -- no floating defaults // ===================================================================== const ARTICLE = 'Viscosity'; 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]; // warm: high-viscosity regime const COLD = [60, 130, 220]; // cool: liquid He-I const COLDER = [40, 80, 180]; // deeper cool: He-II superfluid const STRUCT = [120, 130, 150]; // structural grey: plates, axes const TRAJ = [240, 220, 80]; // trajectory accent: marker, arrows const SCRATCH = [120, 120, 120, 90]; // scratch / grid lines const ACCENT = [200, 100, 220]; // lambda line (magenta) const PARTICLE = [200, 230, 255]; // fluid particles (pale cyan) // ----- He-4 viscosity landmarks -------------------------------------- // mu in micro-Pa*s. The "kink" at T_lambda is well below 1 nPa*s in // narrow channels (effectively zero) and the He-I plateau sits around // 3.5 micro-Pa*s; values here are pedagogical, not high-precision. const T_LAMBDA = 2.172; // K const MU_HE_I = 3.5; // micro-Pa*s, liquid He-I plateau const MU_HE_II = 0.03; // micro-Pa*s, He-II floor (drawn, not zero, // so it remains visible on a log axis) const MU_GAS_NBP = 1.25; // micro-Pa*s, He gas at 4.2 K, 1 atm const MU_GAS_300 = 19.9; // micro-Pa*s, He gas at 300 K (reference, // shown only as a HUD note) // ----- Couette viscometer geometry ----------------------------------- // The plate region sits in the upper-left. Coordinates are in canvas // pixels; the physics works in dimensionless units scaled by U and h. const VISC_X = 60; const VISC_Y = 70; const VISC_W = 360; const VISC_H = 170; // ----- Viscosity-vs-T plot rectangle --------------------------------- const PLOT_X = 60; const PLOT_Y = 290; const PLOT_W = width_default() - 120; const PLOT_H = 130; // p5 sometimes parses width / height before setup -- this helper makes // the constant safe to declare at module top. function width_default() { return 720; } // ----- Plot axis ranges ---------------------------------------------- const T_MIN = 1.5; // K const T_MAX = 5.5; // K const MU_MIN_LOG = -2; // log10(mu in micro-Pa*s) -- 0.01 const MU_MAX_LOG = 1.5; // log10(mu in micro-Pa*s) -- ~32 // ----- State -------------------------------------------------------- let uSlider, hSlider, lSlider; // physics-parameter sliders let nParts = 240; // number of fluid particles in the gap let parts = []; // {x, y, t0}; vy is the linear profile let T_state = 4.222; // K -- start at the normal boiling point let dragging = false; // dragging the T marker on the bottom plot // ===================================================================== // setup() // ===================================================================== function setup() { createCanvas(720, 520); pixelDensity(2); textFont('system-ui'); // Sliders: U (top-plate velocity, dimensionless 0..3), // h (gap, dimensionless 0.3..1.0), // L (plate length, dimensionless 0.4..1.0). uSlider = createSlider(0.0, 3.0, 1.2, 0.05).position(60, 470).size(160); hSlider = createSlider(0.3, 1.0, 0.85, 0.01).position(260, 470).size(140); lSlider = createSlider(0.4, 1.0, 0.95, 0.01).position(440, 470).size(140); // Seed the particle field uniformly across the gap. for (let i = 0; i < nParts; i++) { parts.push({ x: random(VISC_X + 8, VISC_X + VISC_W - 8), y: random(VISC_Y + 8, VISC_Y + VISC_H - 8), r: random(1.4, 2.4) }); } } // ===================================================================== // draw() // ===================================================================== function draw() { background(BG); // Read controls into named locals so the physics reads as physics. const U = uSlider.value(); // dimensionless top-plate speed const h = hSlider.value() * VISC_H; // gap (px) const L = lSlider.value() * VISC_W; // plate length (px) const dt = min(deltaTime / 1000, 0.05); // mu (micro-Pa*s) is a function of the current T_state. const mu = muOfT(T_state); // Shear-rate scaling: in our normalised demo, shear rate is U / h. const shearRate = (U / max(h, 1e-3)); // 1/s (dimensionless) const tau = mu * shearRate; // micro-Pa (dimensionless) // ----- Upper-left: Couette viscometer -------------------------- drawCouette(U, h, L, mu, shearRate, tau, dt); // ----- Upper-right: live gauges -------------------------------- drawGauges(mu, shearRate, tau); // ----- Lower band: viscosity-vs-T plot ------------------------- drawViscTPlot(); // ----- HUD overlays -------------------------------------------- drawHUD(); // ----- Slider labels ------------------------------------------- drawSliderLabels(); } // ===================================================================== // muOfT(T) -- piecewise dynamic viscosity of He-4 (micro-Pa*s) // // Pieces, drawn to be pedagogical rather than NIST-precise: // * T < T_lambda : exponential drop into He-II floor // * T_lambda <= T <= 4.5 : flat-ish He-I liquid plateau // * 4.5 < T <= T_MAX : interpolated He-gas branch (rising mu) // // Above the critical T (5.195 K) helium is a supercritical fluid; the // curve here trends into kinetic-theory mu ~ T^0.5 behaviour for gas. // ===================================================================== function muOfT(T) { if (T < T_LAMBDA) { // He-II: viscosity drops sharply below the lambda point. // Smoothstep from He-I plateau down to the He-II floor over // 0.05 K below T_lambda to give the cusp some visual width. const span = 0.05; const frac = constrain((T_LAMBDA - T) / span, 0, 1); return lerp(MU_HE_I, MU_HE_II, frac); } if (T <= 4.50) { // He-I: nearly constant plateau, very gentle decline with T. const frac = (T - T_LAMBDA) / (4.50 - T_LAMBDA); return lerp(MU_HE_I, MU_HE_I * 0.85, frac); } // Gas / supercritical branch: rise toward MU_GAS_300 with sqrt(T). const frac = (T - 4.50) / (T_MAX - 4.50); const muHi = MU_GAS_NBP * 2.6; // ~ 3.3 micro-Pa*s at T_MAX return lerp(MU_HE_I * 0.85, muHi, frac); } // ===================================================================== // drawCouette -- the upper-left Couette viscometer // ===================================================================== function drawCouette(U, h, L, mu, shearRate, tau, dt) { push(); // Plate region background. noStroke(); fill(28); rect(VISC_X, VISC_Y, VISC_W, VISC_H); // Compute the inner gap: top plate sits at (cx - L/2..cx + L/2, gapY), // bottom plate at (.., gapY + h). const cx = VISC_X + VISC_W / 2; const gapY0 = VISC_Y + (VISC_H - h) / 2; const gapY1 = gapY0 + h; const x0 = cx - L / 2; const x1 = cx + L / 2; // ----- The two plates ----- stroke(...STRUCT); strokeWeight(4); line(x0, gapY0, x1, gapY0); // top plate (moving) line(x0, gapY1, x1, gapY1); // bottom plate (fixed) // Plate motion arrow (top plate slides to the right at speed U). if (U > 0.001) { stroke(...TRAJ); strokeWeight(2); const ax = x1 + 6; const ay = gapY0 - 8; line(ax - 24 * U / 3.0, ay, ax, ay); line(ax - 6, ay - 4, ax, ay); line(ax - 6, ay + 4, ax, ay); } // ----- Particle drift in the gap ----- // v(y) = U * (1 - (y - gapY0)/(gapY1 - gapY0)) (top moves right) // The scaling factor PIX_PER_UNIT converts dimensionless U into a // pixel velocity per second for the on-screen drift. const PIX_PER_UNIT = 110; noStroke(); fill(...PARTICLE); for (let p of parts) { if (p.y > gapY0 && p.y < gapY1 && p.x > x0 && p.x < x1) { const frac = 1 - (p.y - gapY0) / (gapY1 - gapY0); // 0 at bottom, 1 at top const vx = U * frac * PIX_PER_UNIT; p.x += vx * dt; if (p.x > x1 - 2) p.x = x0 + 2; // wrap left -> right (periodic) } // Particles outside the gap simply hang in the corners. ellipse(p.x, p.y, p.r * 2, p.r * 2); } // ----- Linear-profile velocity arrows ----- // Five sample arrows from bottom (zero) to top (U). The arrow // length encodes velocity; this is the visual signature of a // Newtonian fluid in Couette flow. stroke(...TRAJ); strokeWeight(1.5); fill(...TRAJ); const ax0 = x0 + 18; const N = 5; for (let k = 0; k <= N; k++) { const yy = lerp(gapY1, gapY0, k / N); const vv = (k / N) * U * 60; // px arrow length line(ax0, yy, ax0 + vv, yy); if (vv > 4) { triangle(ax0 + vv, yy, ax0 + vv - 5, yy - 3, ax0 + vv - 5, yy + 3); } } // ----- Frame label ----- noStroke(); fill(...DIM); textSize(10); textAlign(LEFT, TOP); text('Couette flow (planar shear)', VISC_X + 6, VISC_Y + 4); textAlign(RIGHT, TOP); text('top plate moves; bottom fixed', VISC_X + VISC_W - 6, VISC_Y + 4); // dim shear-rate readout inside the cell textAlign(LEFT, BOTTOM); text('shear rate du/dy = ' + nf(shearRate, 0, 2), VISC_X + 6, VISC_Y + VISC_H - 4); textAlign(RIGHT, BOTTOM); text('shear stress tau = mu * du/dy', VISC_X + VISC_W - 6, VISC_Y + VISC_H - 4); pop(); } // ===================================================================== // drawGauges -- upper-right live readouts // ===================================================================== function drawGauges(mu, shearRate, tau) { const x0 = 450; const y0 = 70; const w = 220; const h = 170; push(); noStroke(); fill(28); rect(x0, y0, w, h); // Title bar. fill(...DIM); textSize(11); textAlign(LEFT, TOP); text('Live gauges (He-4 at T = ' + nf(T_state, 0, 3) + ' K)', x0 + 8, y0 + 6); // Phase classification: He-II, He-I, or gas. const phase = T_state < T_LAMBDA ? 'He-II (superfluid)' : T_state <= 4.50 ? 'He-I (normal liquid)' : 'He gas / supercritical'; textAlign(LEFT, TOP); fill(...FG_arr(phase)); textSize(13); text(phase, x0 + 8, y0 + 28); // mu and tau bars (log-scaled bar length so a 1000x range fits). fill(...DIM); textSize(11); text('mu (dynamic viscosity)', x0 + 8, y0 + 60); drawLogBar(x0 + 8, y0 + 76, 200, 10, mu, MU_MIN_LOG, MU_MAX_LOG, COLD); fill(...FG); textSize(11); text(nf(mu, 0, 3) + ' micro-Pa*s', x0 + 8, y0 + 92); fill(...DIM); textSize(11); text('tau (shear stress)', x0 + 8, y0 + 110); drawLogBar(x0 + 8, y0 + 126, 200, 10, max(tau, 1e-4), MU_MIN_LOG, MU_MAX_LOG, HOT); fill(...FG); textSize(11); text(nf(tau, 0, 3) + ' micro-Pa', x0 + 8, y0 + 142); // Reynolds-number style indicator: with mu in micro-Pa*s and // dimensionless U/h, we just compute U/mu as a scaled inertia/viscous // ratio. This stays pedagogical; it is not a calibrated Re. textAlign(RIGHT, BOTTOM); fill(...STRUCT); textSize(10); text('Re proxy = U/mu', x0 + w - 8, y0 + h - 4); pop(); } // Pick a phase-appropriate FG colour as an array splat-target. function FG_arr(label) { if (label.indexOf('He-II') === 0) return COLDER; if (label.indexOf('He-I') === 0) return COLD; return HOT; } // Log-scaled progress bar. value is on a linear axis but its log is // what determines the bar fill fraction. function drawLogBar(x, y, w, h, value, logMin, logMax, col) { const logV = Math.log10(max(value, Math.pow(10, logMin))); const frac = constrain((logV - logMin) / (logMax - logMin), 0, 1); noStroke(); fill(col[0], col[1], col[2], 60); rect(x, y, w, h); fill(...col); rect(x, y, w * frac, h); } // ===================================================================== // drawViscTPlot -- the lower viscosity-vs-T curve // ===================================================================== function drawViscTPlot() { push(); // Plot rect background. noStroke(); fill(28); rect(PLOT_X, PLOT_Y, PLOT_W, PLOT_H); // Axes box. stroke(SCRATCH); strokeWeight(1); noFill(); rect(PLOT_X, PLOT_Y, PLOT_W, PLOT_H); // Axis ticks: T every 0.5 K. noStroke(); fill(...DIM); textSize(10); textAlign(CENTER, TOP); for (let T = 1.5; T <= 5.5; T += 0.5) { const x = tToPx(T); stroke(SCRATCH); line(x, PLOT_Y + PLOT_H, x, PLOT_Y + PLOT_H + 3); noStroke(); text(nf(T, 0, 1), x, PLOT_Y + PLOT_H + 4); } // log-mu ticks: every decade. textAlign(RIGHT, CENTER); for (let logMu = Math.ceil(MU_MIN_LOG); logMu <= Math.floor(MU_MAX_LOG); logMu++) { const mu = Math.pow(10, logMu); const y = muToPy(mu); stroke(SCRATCH); line(PLOT_X - 3, y, PLOT_X, y); noStroke(); text(formatMu(mu), PLOT_X - 5, y); } // Axis titles. fill(...DIM); textSize(10); textAlign(CENTER, TOP); text('T [K]', PLOT_X + PLOT_W / 2, PLOT_Y + PLOT_H + 16); push(); translate(PLOT_X - 36, PLOT_Y + PLOT_H / 2); rotate(-PI / 2); text('mu [micro-Pa*s, log]', 0, 0); pop(); // Lambda vertical line. stroke(...ACCENT); strokeWeight(1); const lx = tToPx(T_LAMBDA); line(lx, PLOT_Y, lx, PLOT_Y + PLOT_H); noStroke(); fill(...ACCENT); textSize(9); textAlign(LEFT, TOP); text('lambda line', lx + 3, PLOT_Y + 3); // Sample the muOfT curve along T. stroke(...TRAJ); strokeWeight(2); noFill(); beginShape(); for (let T = T_MIN; T <= T_MAX; T += 0.02) { vertex(tToPx(T), muToPy(muOfT(T))); } endShape(); // Region labels. noStroke(); fill(...COLDER); textSize(10); textAlign(CENTER, TOP); text('He-II', tToPx(1.8), PLOT_Y + 8); fill(...COLD); text('He-I', tToPx(3.3), PLOT_Y + 8); fill(...HOT); text('gas / supercritical', tToPx(5.0), PLOT_Y + 8); // Draggable T marker. const mx = tToPx(T_state); const my = muToPy(muOfT(T_state)); stroke(...TRAJ); strokeWeight(1); line(mx, PLOT_Y, mx, PLOT_Y + PLOT_H); noFill(); circle(mx, my, 16); fill(...TRAJ); noStroke(); circle(mx, my, 6); pop(); } function formatMu(mu) { if (mu >= 10) return mu.toFixed(0); if (mu >= 1) return mu.toFixed(1); if (mu >= 0.01) return mu.toFixed(2); return mu.toExponential(0); } function tToPx(T) { return map(T, T_MIN, T_MAX, PLOT_X, PLOT_X + PLOT_W); } function muToPy(mu) { const logMu = Math.log10(Math.max(mu, Math.pow(10, MU_MIN_LOG))); return map(logMu, MU_MIN_LOG, MU_MAX_LOG, PLOT_Y + PLOT_H, PLOT_Y); } function pxToT(px) { return constrain(map(px, PLOT_X, PLOT_X + PLOT_W, T_MIN, T_MAX), T_MIN, T_MAX); } // ===================================================================== // Input handling -- drag the T marker on the bottom plot // ===================================================================== function mousePressed() { if (mouseX >= PLOT_X && mouseX <= PLOT_X + PLOT_W && mouseY >= PLOT_Y && mouseY <= PLOT_Y + PLOT_H) { T_state = pxToT(mouseX); dragging = true; } } function mouseReleased() { dragging = false; } function mouseDragged() { if (dragging) T_state = pxToT(mouseX); } function keyPressed() { const dT = 0.02; if (keyCode === LEFT_ARROW) T_state = max(T_MIN, T_state - dT); if (keyCode === RIGHT_ARROW) T_state = min(T_MAX, T_state + dT); } // ===================================================================== // drawHUD -- Betterfire title bar + bottom canonical equation // ===================================================================== function drawHUD() { // Top-left: title + Wikitube subtitle. noStroke(); fill(FG); textAlign(LEFT, TOP); textSize(22); text(TITLE, 14, 12); fill(...DIM); textSize(12); text('Wikitube microsim . en.wikitube.io/wiki/Viscosity', 14, 40); // Top-right: control hints. textAlign(RIGHT, TOP); textSize(10); fill(...DIM); text('drag the dot on the bottom plot to set T', width - 14, 14); text('arrow keys nudge T', width - 14, 26); text('U / h / L sliders shape the Couette cell', width - 14, 38); // Bottom-right: canonical equation (Betterfire Standard rule 4). textAlign(RIGHT, BOTTOM); fill(FG); textSize(13); text('tau = mu * (du/dy) [Newton, 1687]', width - 14, height - 4); } // ===================================================================== // drawSliderLabels -- thin labels under each slider // ===================================================================== function drawSliderLabels() { push(); noStroke(); fill(...DIM); textSize(10); textAlign(LEFT, TOP); text('U (top-plate speed) = ' + nf(uSlider.value(), 0, 2), 60, 448); text('h (gap fraction) = ' + nf(hSlider.value(), 0, 2), 260, 448); text('L (plate length) = ' + nf(lSlider.value(), 0, 2), 440, 448); pop(); } // ===================================================================== // End of Viscosity.js -- Wikitube microsim, Helium room, Pattern D+E. // ===================================================================== ``` ## MicroSim spec - **Recommended sim type:** flow field - **Microsimmability score:** 82/100 - **Layout:** drawing region (canvas) on top; control region (sliders/buttons) below. ### Parameters (tunable controls) - `Dynamic viscosity mu - 0.001 to 2 Pa s` - `Shear rate / flow velocity` - `Channel size / gap` ### What animates A sheared [[Velocity|velocity]] profile and tracer particles between two plates (or past an obstacle) reshape as viscosity and shear rate change, with the [[Reynolds_number|Reynolds number]] flipping the regime visibly. ### Learning objective Relate viscosity and shear rate to the velocity profile and the onset of turbulence. ## Links (Wikipedia order) <!-- injected from _registry/childlinks/Viscosity.json (2026-07-30T02:09:12Z) --> `Ab_initio` · `Acoustic_rheometer` · `Acoustics` · `Activation_energy` · `Adhesion` · `Adolf_Eugen_Fick` · `Ammonia` · `Amorphous_solid` · `Analytical_mechanics` · `Applied_physics` · `Archimedes'_principle` · `Arrhenius_equation` · `Astrophysics` · `Atmosphere` · `Atmospheric_physics` · `Atomic,_molecular,_and_optical_physics` · `Atomic_physics` · `Augustin-Louis_Cauchy` · `Avogadro_constant` · `Basic_research` · `Bending` · `Benzene` · `Bernoulli's_principle` · `Biophysics` · `Blaise_Pascal` · `Blood` · `Boltzmann_constant` · `Boltzmann_equation` · `Boron_trioxide` · `Boyle's_law` · `Branches_of_physics` · `Buoyancy` · `Butane` · `Capillary_action` · `Carbon_dioxide` · `Carlo_Cercignani` · `Castor_oil` · `Celestial_mechanics` · `Centimetre` · `Chapman–Enskog_theory` · `Charles's_law` · `Chemical_engineer` · `Chemical_physics` · `Chromatography` · `Classical_electromagnetism` · `Classical_mechanics` · `Classical_physics` · `Claude-Louis_Navier` · `Clausius–Duhem_inequality` · `Clifford_Truesdell` · `Closed-form_expression` · `Coating` · `Cohesion_(chemistry)` · `Common_logarithm` · `Compatibility_(mechanics)` · `Computational_physics` · `Condensed_matter_physics` · `Conservation_of_energy` · `Conservation_of_mass` · `Constitutive_equation` · `Contact_mechanics` · `Continuum_mechanics` · `Correlation_function_(statistical_mechanics)` · `Couette_flow` · `Critical_point_(thermodynamics)` · [[Cryogenics]] · `Crystallography` · `Daniel_Bernoulli` · `Dashpot` · `David_Enskog` · `Deborah_number` · `Deformation_(physics)` · [[Density]] · `Derivative` · `Dimensional_analysis` · `Drilling_fluid` · `Eddy_(fluid_dynamics)` · `Elasticity_(physics)` · `Electrolyte` · `Electron_mass` · `Electrorheological_fluid` · `Emulsion` · [[Energy]] · [[Engineering]] · [[Engineering_physics]] · `Equations_of_motion` · `Ethanol` · `Evgeny_Lifshitz` · `Experimental_physics` · `Extensional_viscosity` · `Ferrofluid` · `Fick's_laws_of_diffusion` · `Finite_strain_theory` · `Fluid` · [[Fluid_dynamics]] · `Fluid_mechanics` · `Fluid_parcel` · `Fluorescence_correlation_spectroscopy` · `Flux` · [[Fracture_mechanics]] · `Frederick_Thomas_Trouton` · `Frictional_contact_mechanics` · `Gas` · `Gas_constant` · `Gasoline` · `Gay-Lussac's_law` · `General_relativity` · `Geology` · `Geometrical_optics` · `Geophysics` · `Glass` · `Glass_transition` · `Graham's_law` · `Gram` · `Granite` · `Green–Kubo_relations` · `Hagen–Poiseuille_equation` · `Heat` · `History_of_physics` · `Honey` · `Hooke's_law` · [[Hydrogen]] · `Hydrostatics` · `Ideal_gas` · `Imperial_and_US_customary_measurement_systems` · `Infinitesimal_strain_theory` · `Interatomic_potential` · `International_System_of_Units` · `Inviscid_flow` · [[Isaac_Newton]] · `Isobaric_process` · `Jacques_Charles` · `James_Clerk_Maxwell` · `Jean_Léonard_Marie_Poiseuille` · `Joback_method` · `John_Gamble_Kirkwood` · `Joseph_Louis_Gay-Lussac` · `Kelvin` · `Ketchup` · `Kilogram` · [[Kinetic_theory_of_gases]] · [[Krypton]] · `Lard` · `Large_eddy_simulation` · `Latin` · `Lennard-Jones_potential` · `Leonhard_Euler` · `Lev_Landau` · `Linear_combination` · `Linear_elasticity` · `Linseed_oil` · `Liquid` · `List_of_thermodynamic_properties` · `Magnetic_field` · `Magnetohydrodynamics` · `Magnetorheological_fluid` · `Mantle_(geology)` · `Mass_diffusivity` · `Material_failure_theory` · [[Materials_science]] · `Mathematical_physics` · `Mean_free_path` · `Measurement_uncertainty` · [[Mechanical_engineering]] · `Medical_physics` · [[Mercury_(element)]] · `Mie_potential` · `Mixing_(process_engineering)` · `Modern_physics` · `Mole_(unit)` · `Molecular_diffusion` · [[Molecular_dynamics]] · `Molecular_physics` · `Morton_number` · `Motor_oil` · `Mu_(letter)` · `Multiplicative_inverse` · `NASA` · `Navier–Stokes_equations` · [[Neon]] · [[Newton's_laws_of_motion]] · `Newton_(unit)` · `Newtonian_fluid` · `Nobel_Prize_in_Physics` · `Non-Newtonian_fluid` · `Non-equilibrium_thermodynamics` · `Nu_(Greek)` · `Nuclear_physics` · `Ohm's_law` · `Oleic_acid` · `Olive_oil` · `Optics` · `Order_of_magnitude` · `Outline_of_astrophysics` · `Parallel_(geometry)` · `Particle_physics` · `Pascal's_law` · `Pascal_(unit)` · `Pentane` · `Perturbation_theory` · `Philosophy_of_physics` · `Physical_oceanography` · `Physical_optics` · `Physics_education` · `Physics_education_research` · `Pitch_(resin)` · `Pitch_drop_experiment` · `Planck_constant` · [[Plasma_(physics)]] · `Plasticity_(physics)` · `Poise_(unit)` · `Potassium_iodide` · `Pound_(force)` · `Pound_(mass)` · `Pressure` · `Properties_of_water` · `Proprietary_software` · `Quantum_information_science` · [[Quantum_mechanics]] · `REFPROP` · `Radial_distribution_function` · `Relativistic_mechanics` · `Rheology` · `Rheometer` · `Rheometry` · `Robert_Boyle` · `Robert_Hooke` · `Rotational_energy` · `SI_derived_unit` · `Second` · [[Second_law_of_thermodynamics]] · `Shear_modulus` · `Shear_stress` · `Shock_wave` · `Sir_George_Stokes,_1st_Baronet` · `Slug_(unit)` · `Smart_fluid` · `Sodium_chloride` · `Solid-state_physics` · [[Solid_mechanics]] · `Sound` · `Special_relativity` · `Specific_energy` · `Square_foot` · `Statistical_mechanics` · [[Steel]] · `Stokes_flow` · `Strain_(mechanics)` · `Strain_rate` · `Stress_(mechanics)` · `Supercritical_fluid` · [[Superfluid_helium-4]] · `Superfluidity` · `Surface_tension` · `Sydney_Chapman_(mathematician)` · `Syrup` · `Temperature_dependence_of_viscosity` · `Theoretical_physics` · `Thermal_expansion` · [[Thermodynamic_equilibrium]] · [[Thermodynamics]] · `Thomas_Cowling` · `Thomas_Graham_(chemist)` · `Time` · `Time_derivative` · `Timeline_of_fundamental_physics_discoveries` · `Transport_phenomena` · `Turbulence` · `Vapor–liquid_equilibrium` · `Vibration` · `Viscoelasticity` · `Viscometer` · `Viscoplasticity` · `Viscosity_index` · `Viscous_stress_tensor` · `Volume_viscosity` · `Vortex` · `Walter_Noll` · `Water` · `Wikisource` · [[Xenon]] ## From the Real GENERATIVE library (beauty pass) ![Viscosity animation](https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Viscosities.gif/300px-Viscosities.gif) *Viscosity — animation hotlinked from Wikimedia Commons (via the Real G.E.N.E.R.A.T.I.V.E. course library, Audio room). [Details & license](https://commons.wikimedia.org/wiki/File:Viscosities.gif).* ![Viscosity image](https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Laminar_shear.svg/220px-Laminar_shear.svg.png) *Viscosity — image hotlinked from Wikimedia Commons (via the Real G.E.N.E.R.A.T.I.V.E. course library, Audio room). [Details & license](https://commons.wikimedia.org/wiki/File:Laminar_shear.svg).* > The viscosity of a fluid is a measure of its resistance to deformation at a given rate.&#91;1&#93; For liquids, it corresponds to the informal concept of "thickness": for example, syrup has a higher viscosity than water.&#91;2&#93; Viscosity is defined scientifically as a force multiplied by a time divided by an area. Thus its SI units are newton-seconds per square meter, or pascal-seconds.&#91;1&#93; ([Wikipedia](https://en.wikipedia.org/wiki/Viscosity)) <!-- BEAUTY-PASS-MEDIA:END --> <!-- SIGN-SYSTEMS:START --> **Semiotic universals** (the notations and alphabet letters this article speaks — each opens its canonical card): flow · temperature heat · exponential · measurement · probability. Index: the glyph gallery · SEMIOTICS PORTAL. <!-- SIGN-SYSTEMS:END --> ## Media (PD/CC) <!-- MEDIA-DEPLOY:Viscosity/Viscosities.gif --> !Gif Library/Viscosity/Viscosities.gif *Viscosities.gif · Synapticrelay · CC BY-SA 4.0 · [source](https://commons.wikimedia.org/wiki/File:Viscosities.gif)* <!-- /MEDIA-DEPLOY --> > **Room:** [[Helium]] · **Status:** ✅ shipped ## Overview Viscosity is the macroscopic measure of a fluid's resistance to shear deformation — the internal friction that arises when adjacent fluid layers move at different velocities. [[Isaac_Newton|Isaac Newton]] formalized the idea in *Principia* (1687) with the constitutive relation τ = μ (du/dy), where τ is the shear stress, μ is the dynamic (absolute) viscosity, and du/dy is the [[Velocity|velocity]] gradient normal to the flow. Fluids that obey this linear law are called Newtonian; water, air, and most gases qualify. The SI unit of dynamic viscosity is the pascal-second (Pa·s); kinematic viscosity ν = μ/ρ is reported in m²/s. For gases, Sutherland's formula captures the temperature dependence μ(T) = μ₀ (T/T₀)^(3/2) (T₀ + S)/(T + S), while liquids typically follow an Arrhenius-style exponential decrease with temperature. [[Reynolds_number|Reynolds number]] Re = ρUL/μ uses viscosity to predict whether flow remains laminar or transitions to turbulence, governing pipeline design, lubrication theory, aerodynamic drag, and microfluidic chip behavior. Viscosity drives the Hagen-Poiseuille pressure drop in cryogenic transfer lines, sets the [[Diffusion|diffusion]] coefficient through the Stokes-Einstein relation, and bounds heat-exchanger effectiveness in liquefaction plants. Helium-4 below the lambda point (2.17 K) becomes superfluid Helium-II: its viscosity drops to effectively zero in narrow channels yet remains finite for an oscillating disk, a paradox resolved by Tisza and Landau's two-fluid model. This vanishing viscosity enables persistent currents, fountain effect demonstrations, and the ultralow friction bearings that underpin cold [[Neutron|neutron]] and dilution-refrigerator [[Engineering|engineering]]. ## See also - Room hub: [[Helium]] - p5.js Editor conventions: P5 JS EDITOR - Wiki root: MAIN --- *Scaffolded by `generative-microsim` from row 181 of the Helium sheet on 2026-05-15T01:24:03Z.* <!-- BEAUTY-PASS-MEDIA: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 --> **Part of the [[WT!Thury_Hydrodynamics_Compendium|Thury Hydrodynamics Compendium]]** — main article for section 24, *Thick fluids and pipe flow*. Related sections: [[Fluid_dynamics]] · [[Turbulence]] · [[Superfluidity]]. <!-- COMPENDIUMLINK:END --> <!-- THURYSIM:BEGIN g21 — Thury Compendium microsim (framework build, specs/sims/Viscosity.json); do not hand-edit inside --> **Microsim — three.js (Wikitube framework):** *Viscosity* <div class="wt-sim" data-src="https://wikitube-3d-microsims.netlify.app/thury/Viscosity.html" data-title="Viscosity"></div> *Built from `MICROSIM_GUIDE/specs/sims/Viscosity.json`; part of the [[WT!Thury_Hydrodynamics_Compendium|Thury Hydrodynamics Compendium]] set.* <!-- THURYSIM:END --> ## Wikipedia : Wikitube **Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Viscosity) : [Wikitube](https://en.wikitube.io/wiki/Viscosity) ## Previous hub tags Tree parents: [[Helium]] · [[Hydrogen]] · [[Oxygen]]. Legacy hubs: none. --- *Sources: 2 legacy notes. Minted wave 1, 2026-07-30 (v1.6 order).*