William's Docs

Sauna Simulator

A core-body-temperature simulator for sauna sessions

What it is

A single-page web app that simulates how core body temperature rises during a sauna session. You set your body (weight, height, body-fat %, sex, heat acclimatization) and the sauna (air temp, humidity, air velocity, whether you face a hot stove, session length), and it plots core and mean-skin temperature over time, with threshold markers for mild hyperthermia and the heat-stroke line. Built as a companion to the creatine simulator — same standalone-HTML idiom and dark-panel design, warm accent instead of purple. Framed explicitly as a physics illustration, not medical advice.

The headline teaching point: humidity is the danger dial. In a dry sauna, sweat evaporates and cools you. Once ambient water-vapor pressure exceeds skin saturation (a löyly throw), evaporation stops and water vapor can condense onto the skin — adding heat and driving core temperature up fast.

Tech stack

Fully static single HTML file — no build step, no backend. Only external dependency is Chart.js from CDN, exactly like the creatine sim. All state is in-memory; refreshing resets to the default scenario, which auto-runs on load.

The model

A genuine multi-node body-temperature model, not a lumped approximation: six body segments × four tissue layers plus a central blood pool, coupled through the blood pool, with a physiological control system governing sweating, vasodilation, vasoconstriction, and shivering. The sauna environment models convection, radiation from the walls and any radiant heater, and respiration heat exchange. The core mechanism is an evaporation and humidity-ceiling calculation: past a certain ambient vapor pressure, the evaporative term goes negative and the body starts gaining heat from condensation instead of losing it.

Calibration & validation

Internal body constants are sourced from the physiology literature; the sauna environmental coupling is extrapolated beyond the range those coefficients were originally validated for, and a single documented calibration factor scales the environmental heat gain so the default scenario reproduces published benchmarks. Verified against a small suite of known core-temperature-rise figures across dry and humid sauna conditions, matching within a reasonable band and staying numerically stable across all tested conditions.

Known limitation (documented, not a bug): the model's tissue conductances couple mean-skin and core temperature rise at a fixed ratio, so matching both simultaneously against separate benchmarks isn't possible — core rise (the higher-confidence, headline output) is prioritized.

How to run it

Open index.html directly in any modern browser. Needs an internet connection for the Chart.js CDN; no local server or install required.

Notable details

  • Humidity is entered as an absolute vapor pressure, not relative humidity — deliberate, since typical dry-sauna relative-humidity figures taken literally would imply conditions past skin saturation. Relative humidity and dewpoint are shown as derived read-outs.
  • Humidity is held constant for the whole session, so a sustained "steam" preset is harsher than a real, brief löyly throw — called out in the UI.
  • Body-size, fat percentage, sex, and heat-acclimatization are applied as approximate scaling factors on a standard-body parameter set.
  • Not persisted — no local storage, nothing saved between sessions.

On this page