What FANSIS does
FANSIS is a centrifugal (radial) fan design and performance calculator. Given the blade
geometry of a fan — inlet/outlet diameters, blade angles, blade heights, blade count — and
the operating speed, it computes the fan's theoretical pressure-flow curve, power draw, and
efficiency using the Euler turbomachinery equations, and finds where that curve intersects a
system-resistance curve to report the actual operating point.
It's adapted from the design method in DOI: 10.1243/09544062JMES1196. All
calculations run client-side in the browser — nothing is sent to a server.
How to use it
- Design inputs describe the physical fan: its geometry (OD, ID, blade angles and heights,
blade count and thickness) and its rotational speed.
- K — System resistance describes the ductwork/system the fan pushes air through
(ΔP = K·Q²). It sets where the system curve crosses the fan's pressure-flow curve —
that intersection is the operating point: the flow and pressure the fan will
actually deliver.
- Design target (Qt, Pt) is the flow/pressure you want the fan to hit. With
"Derive K from target" checked (the default), K is computed automatically as
Pt / Qt², so the system curve is forced through your target point — the gap you then
see between the target marker and the operating point on the Pressure–Flow chart tells you
purely how far the current geometry is from hitting that target, with no confounding from
an arbitrary K guess. Uncheck it to instead model a system with a known, independently-measured K
and just watch how close that real system lands to an aspirational target.
- Every field updates all four charts and the operating-point summary live — there's no
"calculate" button.
- The Blade profile chart is a true-to-scale polar plot of the blade curve, repeated
Z times; the other three charts show the actual outlet blade angle (β₂) against two fixed
reference cases, β=5° and β=90°, so you can see how much the outlet angle
matters.
Variable glossary
| Symbol | Meaning | Units |
| OD | Outlet (tip) diameter | in |
| ID | Inlet (eye) diameter | in |
| Beta1 (β₁) | Blade angle at the inlet | deg |
| Beta2 (β₂) | Blade angle at the outlet | deg |
| BetaM | Blade angle at an arbitrary mid-radius, used to fit the blade's curvature | deg |
| B1 | Blade height at the inlet | in |
| B2 | Blade height at the outlet | in |
| Z | Number of blades | — |
| S | Blade thickness | m |
| N | Rotational speed | rot/s |
| K | System resistance coefficient (ΔP = K·Q²) | Pa/(m³/s)² |
| Qt | Target (desired) flow rate | CFM |
| Pt | Target (desired) pressure | in H2O |
| Q, DP | Computed flow rate and pressure rise | CFM, in H2O |
| φ (phi) | Flow coefficient — dimensionless flow rate | — |
| Efficiency | Ratio of ideal to actual work input, from the Euler equation | — |
Changes from the original
This is a from-scratch client-side rebuild of an earlier Python/Dash version of the same
calculator. A few things were deliberately corrected along the way:
- The blade profile now draws all Z blades; the original always drew exactly 5
regardless of the blade-count input.
- The efficiency-curve cutoff for the β=5° reference case is now computed exactly
(φ = sinβ, the curve's true zero) instead of a fixed sample-index that only happened to
work for one set of default inputs.
- Qt/Pt were present in the original UI but never used in any calculation. They're now wired in
as described above.