Run a lapped-glass Victorian glasshouse for a day. Sun floods in, glass leaks heat, brick and water barrels store it, a coke stove and hot-water pipes top it up, and louvred roof vents blow it out. Keep the tomatoes between frost and scorch.
Educational lumped model, not a design tool. Constants marked [assumption] are illustrative. Real coke stoves and boilers need a safe flue, fuel handling and ventilation; carbon monoxide is dangerous. Nothing here is instruction for heating a real building.
The science
Air node. Ca dTa/dt = Qair-sun + Qleaf + 0.7 Qpipe − U Ag(Ta − Tout) − ρcp Qair(Ta − Tout) − h Am(Ta − Tm). Glass area 60.6 m², floor 18 m², volume 45 m³, single-glazed U = 5.0 + 0.55 u W m−2 K−1 (wind u in m/s). Of the sunlight that gets through (78 % clean glass, 8 % dirt; a blind removes 45 %) 40 % warms the mass, 50 % the leaves and 10 % the air directly [assumptions].
Thermal mass. Brick floor, iron frame, beds and water barrels form one slab: Cm dTm/dt = Qsun,m + 0.3 Qpipe + hAm(Ta − Tm) − 40 (Tm − 9 C) (the last term is conduction into the ground [assumption]). Each 100 L barrel adds 0.42 MJ/K. It soaks up midday heat and gives it back at night; the time constant is C/hA, several hours.
Louvre and roof vents. Flow through an opening of area Av from stack effect and wind: Q = Cd Av √(2 g H ΔT/T + Cw u²), Cd = 0.6, H = 1.5 m, Cw = 0.06 [assumption]. Even with vents shut, an old lapped-glass house leaks about 1.2 + 0.25 u air changes per hour.
Coke stove and pipes. Burn rate is the damper setting times 1.6 kg/h; useful heat is 0.65 × 28 MJ/kg. The water and iron (0.6 MJ/K) carry it to pipes of conductance 100 W/K; 70 % goes to the air, 30 % warms the slab by radiation. Fuel runs out: stoke before it does.
Humidity and condensation. The air's moisture ratio W is fed by transpiration (a share of the sun absorbed by leaves, scaled by leaf cover, soil water and vapour-pressure deficit) and drained by air exchange. The inner glass surface is at Tg = Ta − (U/8)(Ta − Tout); where it is colder than the dew point, vapour condenses at ρ hm Ag(W − Wsat(Tg)). Saturation uses the Magnus formula.
Plants. Tomato biomass grows as dB/dt = RUE · PARabs · fT · β · fh with RUE = 3 g/MJ, a trapezoid temperature response (6, 18, 28, 38 C), a soil-water factor β and a damp-air penalty above 92 % RH (grey-mould risk), minus Q10 respiration. Frost below 2 C damages leaves; fruit ripens with degree-days above 10 C.
Honest simplifications. One well-mixed air node, one slab; no stratification, no radiation exchange with the sky except a small clear-night correction [assumption], no snow load or wind damage, one crop type, no pests, no CO2. The weather days are teaching sketches. Sources by type: greenhouse climate textbooks (heat balance, natural ventilation), psychrometric tables, crop-growth radiation-use models.
Models built with Blender (iron frame, brick, vents, door, stove, pipes, pots, plants) and rendered with Three.js.