Presets
Playback
Roaster
Beans and room
Time
Camera
Layers
Quality
Model check
The science
What is modelled
A batch of green coffee beans is charged into a hot rotating drum. The page integrates one lumped bean (temperature, water content, browning extent) together with the drum gas, which is heated by the burner and cooled by the beans and the exhaust air. The bean colour, the gauges, the steam and smoke, the flames and the first-crack pops all follow these numbers. Beans are drawn about 3 times larger than real ones so that a small charge still fills the view.
Equations
- Bean energy balance:
m cp dTb/dt = h A (Tg − Tb) − Lv mdry |dW/dt| + mdry ΔH(a) da/dt, withcp = cdry + cwater Wper kg of dry matter. - Effective heat-transfer coefficient (bed convection plus contact with the drum):
h = 8 + 0.09 · airflow% + 0.08 · rpmW/m2/K, an empirical illustration; areaA = 4 π r2of a sphere of the same mass (ρ = 1150 kg/m3). - Lumped-capacity validity: Biot number
Bi = h r / (3 k)must stay well below 0.1 (k about 0.25 W/m/K); the page prints its value. - Moisture loss:
dW/dt = −k100 exp(0.045 (Tb − 100)) (W − Weq)with latent heat 2.5 MJ/kg (evaporation plus desorption). - Browning (Maillard and pyrolysis) extent a in [0, 1]:
da/dt = (1 − a) kp exp[−(Ea/R)(1/T − 1/Tref)], Ea = 100 kJ/mol, Tref = 190 C. First crack is declared at a = 0.38, second crack at a = 0.85. Pyrolysis is endothermic (−120 kJ/kg dry) before first crack and exothermic (+260 kJ/kg dry) after it, switched smoothly. - Drum gas and hardware:
Cg dTg/dt = Pburner − (G0 + Gair airflow)(Tg − Tamb) − N h A (Tg − Tb), N = number of beans in the charge. - Rate of rise (ROR): slope of the bean temperature over the last 30 s, in C per minute. Development time ratio:
(t − tFC) / t.
Checks run in the page
- Heating in 220 C gas with evaporation and reaction switched off: the RK4 result equals the exact exponential
Tg + (T0 − Tg) exp(−t/τ), τ = m cp/(h A). - Isothermal browning at 200 C: step integration equals
1 − exp(−k t). - Energy closure over 12 minutes: burner energy = exhaust and wall losses + gas heating + heat delivered to the beans, and the heat delivered to the beans = sensible + latent − reaction heat.
Honest simplifications
- All beans share one temperature and one browning extent (colour spread between beans is only drawn). There is no bean-to-bean contact model, no gas-flow field and no radiation from the drum. Coefficients (h, k100, kp, reaction heats) are plausible round numbers tuned to give a roast of about 8-12 minutes, not measured constants of a particular machine or bean. Drum gas temperature is one lumped value. The cascade of beans is a kinematic animation, not a discrete-element simulation. Real roasting also involves chaff, pressure build-up inside the bean and sample-to-sample variation.
What to try
- Start with "Balanced medium" and watch the turning of the rate of rise: it falls, then flattens as the bean dries.
- Drop the beans a minute after first crack, then at the very end, and compare the development time ratio and the roast level.
- Raise the burner late in the roast: the rate of rise flips upward and the roast can run away (exothermic phase).
- Use "Big charge (3 kg)" and see the drum gas drop deeper when the beans go in.
- After "Drop beans", the roast continues slightly while the beans cool in the tray (carry-over).
Loading model...
Loading Blender model...