The room is modelled as a single well-mixed control volume (a standard industrial-hygiene mass-balance model). Contaminant mass enters at generation rate G and leaves through general dilution ventilation and the local exhaust hood:
dC/dt = (1 - η)·G / V - (Q_gen + Q_lev)·C / V
Q_gen = ACH · V / 3600 [m³/s from air changes/hour]
C_ss = (1 - η)·G / (Q_gen + Q_lev) [steady state]
C(t) = C_ss + (C0 - C_ss)·exp(-k·t), k = (Q_gen+Q_lev)/V
The hood's local capture is governed by the classic unflanged circular-opening capture-velocity equation (ACGIH Industrial Ventilation manual):
v_x = Q_lev / (10·x² + A)
x = distance from source to hood face, A = hood face area
η = min(0.95, 0.95 · v_x / v_required)
Capture velocity falls off with the square of distance — moving the source a little further from the hood costs far more than the flow-rate slider alone suggests. This 2D build lays out four synchronized views of that one equation set: a top-down floor plan with the actual capture + mixing flow field driving the drifting particles (drag to pan, scroll/pinch to zoom), a live strip chart of C(t) climbing or clearing toward Css, the vx(x) capture-velocity-vs-distance curve with your current operating point marked so the quadratic fall-off is visible directly, and a radial OEL gauge with the full numeric readout. Verified numerically: Euler-integrating the raw ODE reproduces the closed-form exponential solution to 4 significant figures, so the analytic fast-path used for the on-screen numbers is exact, not an approximation.
- Emission rate — how fast the irritant is generated at the source (a leak, an open solvent tank, a spray booth).
- General ventilation (ACH) — whole-room dilution airflow, expressed as air changes per hour.
- Hood flow Qlev — local exhaust volumetric flow captured right at the source.
- Distance — source-to-hood distance; pull the slider up and watch capture efficiency collapse even at constant Qlev.