Calculation verification
Reproducible equation checks, with a deliberately limited scope.
This is not third-party certification, laboratory validation, or proof that every fitting dataset is correct. The results below come from executing the real static/js/fittings.js and static/js/duct-calc.js in Node, not from manually entered passing values.
Recorded results
Loading the recorded benchmark artifact. No pass status is assumed.
| Case / quantity | Independent expected | Engine actual | Unit | Result |
|---|
Download actual results (JSON) · Download cold round-duct project
What is checked
- Round friction: 2000 actual CFM, 100 ft, 16-inch round galvanized duct, 0 ft altitude / 70°F.
- Rectangular friction: the same flow and length, 20 × 12 inches, using hydraulic diameter.
- Air density, viscosity, pressure and round friction at explicit 0°F / sea level and 95°F / 5000 ft. These compare separate evaluations of the declared dry-air model, not measured site conditions.
- An elbow loss with deliberately imposed Co = 0.35. This checks multiplication and the local velocity-pressure reference, not the empirical correctness of an elbow coefficient.
- Two explicitly supplied branch paths sharing a trunk: sum losses along each path, then select the greater. No junction coefficient is included.
Each numeric check uses |actual − expected| ≤ absolute tolerance + relative tolerance × |expected|. Most checks use 1×10⁻⁹ absolute and 2×10⁻⁶ relative; discrete selection and imposed Co use exact comparisons. These tight numerical allowances cover conversion rounding and solver roundoff, not engineering/model accuracy. Every check's own units and tolerances are in the JSON.
Equations and coefficient reference
Reference arithmetic uses V = Q/A, Pv = ρV²/2, Dh = 4A/perimeter, and Darcy-Weisbach Δpf = f(L/Dh)Pv. Rectangular Dh = 2WH/(W+H). The turbulent Darcy factor solves 1/√f = −2 log10[ε/(3.7Dh) + 2.51/(Re√f)] with bisection in 1/√f, separately from the engine's Newton solver.[1]
Fitting loss is Δp = Co × Pv.[1] In the imposed elbow case, Pv is calculated from the section's own area and flow. Co is inseparable from its reference velocity: do not apply a common-duct coefficient to branch-local Pv without conversion. Junction reference selection and empirical Co generation are outside this suite.
Roughness is imposed at 0.09144 mm (0.0003 ft), not independently measured. Air-property constants, the ideal-gas and Sutherland expressions, altitude model, and the 249.089 Pa per inch-water convention are disclosed in the artifact. The reference converts CFM using exact 0.3048³/60; the engine's rounded conversion accounts for the small differences.
Reproduce it
- Save any current project first. Download the cold round-duct project above.
- Open the calculator and import the JSON using its project import control. The same object is accepted by
APP.importProject(data). - Confirm 0 ft altitude, 0°F, 2000 CFM, 16-inch round duct, 100 ft, galvanized spiral material, and no fittings. Click Calculate.
- Compare the raw section friction loss with
cold-zero-f → frictionLoss_inWGin the JSON. The UI rounds the displayed value. The saved 15% allowance is separate; do not compare the margin-adjusted figure or fan static pressure to raw friction.
node --test lib/readiness-benchmarks.test.js
node lib/readiness-benchmarks.js --write static/verification/readiness-benchmarks.json
The runner exits nonzero if a comparison fails or execution errors. The artifact records generation time and SHA-256 hashes of the two engine inputs. Engine ID pressure-2026-09-08 is separate from the application version. These are recorded results, not a live check of the currently deployed browser code.
Not checked
- All Idelchik/ASHRAE coefficient tables, interpolation regions, topology substitutions, transitions, tees, wyes, or fitting interactions. No independent empirical fitting validation is claimed.
- Controller tree-to-path conversion or two-sided inlet/outlet aggregation:
CALC.calcSystemaccepts paths, not a fan-side aggregation model. No fan total-to-static conversion or fan/system effects are certified here. - All material properties, rectangular aspect-ratio corrections, transitional flow, humidity, compressibility, sound, balancing, fan curves, or the full input domain.
- Legacy
validate.jsexpectations against different empirical standards. They require a separate source audit; this suite does not replace or rewrite them.
Sources
[1] SMACNA, Duct Design Fundamentals, Patrick J. Brooks, P.E., Utah ASHRAE presentation — “Pressure Losses” slides: Darcy-Weisbach, hydraulic diameter, Colebrook and coefficient × velocity pressure. The source supports the equations, not endorsement of this software or its generated numbers.