Air state — dry bulb + one other property
Chart is drawn from the same equations as the numbers above — it is a check on reasonableness, not a reading surface.
Coil / process load
Mix two airstreams
Duct friction
Size it for me
Governing constraint is whichever gives the larger duct. 0.08–0.10 in./100 ft is a common low-pressure design band; tighten it where fan energy or sound matters.
Fittings and components
Loss coefficients are typical values for a first pass. For a design of record use the ASHRAE Duct Fitting Database for the actual geometry.
Pipe friction — water
Valves and fittings
K values are typical. Confirm against the manufacturer's published Cv for balancing valves, control valves, and strainers — those three dominate a branch and vary widely by model.
Size selection
Affinity laws
Fan horsepower
Pump horsepower
Unit conversion
Temperature
Before you use a number from this app
Calculation basis
Psychrometrics
ASHRAE Handbook — Fundamentals, Ch. 1, Hyland & Wexler formulation. Saturation pressure by eq. 5 (over ice, below 32 °F) and eq. 6 (over water, 32–392 °F). Humidity ratio eq. 20/21, wet bulb eq. 33/34, dew point eq. 37/38, enthalpy eq. 30, specific volume eq. 26. Barometric pressure from the standard atmosphere, eq. 3.
Wet bulb reported is the thermodynamic wet bulb, solved iteratively. It differs slightly from a sling psychrometer reading.
Coil and process loads
Computed from actual mass flow — m = cfm / v using the
entering specific volume — not the 4.5 and 1.08
standard-air shortcuts. At 80 °F/67 °F entering at sea
level the true factors are 4.33 and 1.06, so the textbook shortcuts
overstate capacity by about 3.7%. The gap widens with altitude and with
entering temperature. The app shows the effective factors so you can see
how far from standard air you actually are.
Duct
ASHRAE Handbook — Fundamentals, Ch. 21. Friction factor from the
Colebrook-White implicit equation solved by bisection (not an explicit
approximation). Absolute roughness values from Ch. 21 Table 1. Velocity
pressure Pv = ρ(V/1097)², which reduces to
(V/4005)² at 0.075 lb/ft³. Rectangular duct
friction uses the circular equivalent diameter
De = 1.30(ab)^0.625/(a+b)^0.25 with velocity taken from the
actual cross-section.
Air density is computed for dry air at the entered temperature and elevation — the ASHRAE standard-air basis, which returns 0.0749 lb/ft³ at 70 °F and sea level. Humidity moves density only a few tenths of a percent across the normal supply-air range, and assuming a humidity would be an unstated guess, so the app does not. The density actually used is always displayed.
Fitting loss coefficients are typical values only. They are adequate for sizing a run in the field. They are not adequate for a design of record — use the ASHRAE Duct Fitting Database entry for the specific geometry.
Pipe
Darcy-Weisbach with Colebrook friction factor, water properties (density, kinematic viscosity, vapor pressure) interpolated against temperature from standard steam-table values. Hazen-Williams is offered as a cross-check and is only valid for water near 60 °F in the turbulent range — it will mislead you on hot water, glycol, and low-flow branches. Inside diameters are catalog nominal values; confirm against the specified product. Valve and fitting K values are typical; confirm against published Cv for balancing, control, and strainer components.
Fans and pumps
Affinity laws with speed exponents 1/2/3. Impeller trim uses exponents 1/2/3; a geometrically similar fan wheel family uses 3/2/5. Both degrade outside roughly 80–115% of the reference point, and the app says so.
Validation
The calculation engine ships with a test suite of 96 assertions checked against published reference values — ASHRAE psychrometric tables, the ASHRAE duct friction chart and equivalent-diameter tables, the Moody diagram, AHRI rating conditions, steam tables, copper tube and Schedule 40 friction tables, and NIST unit factors. Pipe results are cross-validated between Darcy-Weisbach and Hazen-Williams, which share no code.
Run it with node validation.test.mjs. Every assertion
names its source. Treat a failing suite as a stop-work condition on this
app, and re-run it after any change to engine.js.
Known limitations, stated plainly: no glycol or steam properties; no duct or pipe insulation heat gain; no acoustics; SMACNA pressure-class and gauge selection is not implemented; the psychrometric chart is drawn for the entered elevation only.