A tropical cyclone is a heat engine (Emanuel 1986): it takes heat from a warm ocean at temperature Ts (isothermal evaporation and sensible heat, spiralling inward in the boundary layer), carries it up the eyewall and dumps it at the cold outflow temperature To near the tropopause. The mechanical work is dissipated by surface friction.
Balancing that work against frictional dissipation gives the potential intensity: Vp² = (Ck/Cd) · (Ts−To)/To · (k*0−k). Here Ck/Cd is the ratio of enthalpy to drag exchange coefficients (about 0.5-1; 0.55 used) and k*0−k ≈ Lv(q*0 − RH q*) + cp(Ts − Tair) is the air-sea enthalpy disequilibrium (Lv = 2.5e6 J/kg, boundary-layer air 1 K cooler than the sea, q* from the Bolton saturation vapour pressure).
Intensification: dV/dt = (Vtarget − V)/τ. The target is Vp reduced by shear and by the ocean cooling the storm causes: ΔT = 2.2 (V/50)² (40/h) (5/(c+3)) °C (h = mixed-layer depth m, c = translation speed m/s). Over land dV/dt = −V/10.5 h.
Wind field: the Holland (1980) gradient-wind profile V(r) = √[(B Δp/ρ) (Rm/r)B e−(Rm/r)B + (rf/2)²] − rf/2 with Δp chosen so that V(Rm) = Vmax. Rm uses a typical empirical regression 46.4 exp(−0.0155 V + 0.0169 φ) km (quoted from memory: spot-check). Categories are the Saffir-Simpson thresholds in knots (1-min sustained wind).
Honest limits: this is a toy relaxation model on top of the potential-intensity formula, not a forecast model. Not modelled: eyewall replacement cycles, mid-level dry air, storm size changes, structure asymmetries, moving ocean eddies. Lower boundary-layer humidity raises Vp in the formula (more disequilibrium) although dry mid-level air hurts real storms, so RH is limited to 0.7-0.95. The shear factor 1 − 0.55 (S/22)1.3, the cooling coefficient, the 10.5 h land decay and the 22.5-26.5 °C ramp (which makes the engine fade near the observed ~26.5 °C threshold) are illustrative numbers, not fitted constants. The 3D scene exaggerates height by about 2.5 and flow tracers are a kinematic sketch (inflow, eyewall updraft, outflow), not a fluid simulation.
Models and textures: Blender 5.2, procedurally baked with Cycles; rendering Three.js r160.