slab-sim

How this simulator works

This site compares two ways of controlling a hydronic radiant floor (losa radiante) heated by a gas boiler — the conventional on/off thermostat installed in most homes, and a weather-compensated controller under development — by running both through the same simulated house and the same week of Bariloche weather.

Open the demo →Engineering lab

The problem: a concrete floor is not a radiator

A heated concrete slab stores an enormous amount of heat and releases it slowly — it takes roughly 4 hours to respond to a change. A conventional room thermostat was designed for fast, low-mass emitters like radiators: it switches the heat fully on when the room is cold and fully off when it reaches the target.

With a slab, that logic fails. By the time the air reaches the target temperature, the floor has been charging for hours and keeps releasing that stored heat — so the room overshoots by 2–3 °C. Then everything switches off, the slab slowly empties, and the room sinks below target before the cycle starts again. The house swings between too hot and too cold and never settles.

The fix under test: match the heat to the weather

Instead of switching on and off, the weather-compensated controller circulates water continuously and adjusts only its temperature — just warm enough that the heat entering the floor equals the heat the house is losing at that moment. Cold night → warmer water. Mild sunny afternoon → cooler water. The slab stops being charged and discharged in big waves; it hovers at equilibrium and the room temperature stays flat.

It does this with three layers, each of which can be tested separately in the lab:

  1. Weather curve — the water temperature follows the outdoor temperature (e.g. −5 °C outside → ~34 °C water; 10 °C outside → ~24 °C water).
  2. Indoor trim — a slow correction (over hours, limited to ±3 °C) that nudges the curve if the room drifts, compensating wind, occupancy or an imperfect curve setting.
  3. Forecast feedforward — using the next 24 h of weather: it backs off before a sunny spell (so free solar gain doesn't overheat the room), leads in before a cold front, and times the morning warm-up from the slab's known ~4 h response instead of a fixed clock hour.

One counterintuitive consequence: the compensated controller only lowers the target by 1.5 °C at night, not the usual 4 °C. With a high-mass slab, a deep setback costs more than it saves — the floor has to be recharged for hours in the morning, at higher water temperatures, to recover the heat it was allowed to lose overnight.

What exactly is being simulated

A physics model of a 120 m² house with an 8 cm heated concrete slab, moderate insulation and 20 m² of glazing, in Bariloche winter conditions. The house is modelled as three connected thermal masses — slab, room air, and walls/roof — each gaining and losing heat every 60 simulated seconds: heat from the water loop, solar gain through the windows, people and appliances, and losses through the envelope, air leakage and the ground. At −5 °C outside the house loses about 5.3 kW, which matches a real building of this type.

The equipment is deliberately modelled with its real-world imperfections:

  • Gas boiler (24 kW, atmospheric, non-condensing — the type installed across Bariloche): it cannot throttle below 30% power, so at low demand it must switch on and off; each ignition wastes a little gas, and it leaks ~100 W while hot and idle. The simulator counts every start.
  • Mixing valve: takes 2 minutes to travel its full range, plus a 45-second delay before a change reaches the floor circuits. Water temperature is limited to 25–50 °C to protect the slab.
  • Weather: either real historical Bariloche data (ERA5 archive) or generated test weeks — a cold clear week with strong sun, a mild overcast week, and a cold front dropping 15 °C in 12 hours.

Both controllers run against exactly the same house, boiler and weather, so any difference you see comes from the control strategy alone.

How to read the demo page

  • Indoor temperature chart — the headline. The shaded strip is the comfort band (target ±0.5 °C). The amber trace (conventional) saws across it; the cyan trace (weather-compensated) should sit inside it.
  • Supply water chartwhy it happens: a 45 °C square wave versus a smooth curve that follows the weather.
  • Gas counters — cumulative consumption for each controller as the week plays, with the percentage difference.
  • Playback — play/pause, speed (1× to 600×), and a scrub bar. The week is fully computed the moment you change anything; playback just moves through it.

A note on gas: with this non-condensing boiler the compensated controller can use slightly more gas — the conventional thermostat "saves" by letting the house go cold overnight (17 °C setback), and continuous circulation makes a boiler that can't throttle low cycle frequently. Its win here is comfort and stability. With a condensing boiler, the low water temperatures it runs at would also become a real efficiency gain.

The lab (for the engineering-minded)

/lab exposes everything: every building and equipment parameter, the three controller layers individually toggleable, curve and trim tuning, slab/air/wall temperatures, instantaneous heat flows, valve position and boiler modulation, CSV export of the full time series, and a batch mode that sweeps a parameter (say, curve slope from 0.3 to 0.9) and tables the resulting comfort and gas figures to find optimal settings without clicking through runs.

What this is — and isn't

This is a calibrated physical model, not a measurement. It exists to show how the two control strategies behave on a high-mass floor — a difference of control paradigm that holds for any slab house — not to promise an exact number for your building. Actual results depend on your insulation, slab thickness, glazing, boiler and habits. The same simulation core is used as the development testbed for the real controller, so what you see here is the same physics the controller is tuned against.

→ Open the side-by-side demo