';
html += '' + fmt(data.frictionFactor, 3) + 'Friction factor' + duct.name + '
';
byId('fspSpecGrid').innerHTML = html;
}
function makeBreakRow(label, value) {
return '' + label + '' + value + '
';
}
function velocityFlag(system, velocity) {
if (velocity < system.low * 0.75) {
return 'Low velocity';
}
if (velocity > system.high * 1.25) {
return 'High velocity';
}
if (velocity > system.high) {
return 'Near high';
}
if (velocity < system.low) {
return 'Near low';
}
return 'OK';
}
function buildCurveRows(inputs, fan) {
var points = [0.60, 0.80, 1.00, 1.20, 1.40];
var html = '';
var i;
for (i = 0; i < points.length; i++) {
var cfm = inputs.targetCfm * points[i];
var calc = computeAtCfm(cfm, inputs);
var fanSp = fanStaticAt(fan, cfm, inputs.densityRatio);
var margin = fanSp - calc.totalBeforeMargin;
html += '| ' + fmt(points[i] * 100, 0) + '% of target | ' + fmtWhole(cfm) + ' | ' + fmt(calc.totalBeforeMargin, 2) + ' in w.g. | ' + fmt(fanSp, 2) + ' in w.g. | ' + fmt(margin, 2) + ' in w.g. |
';
}
byId('fspCurveRows').innerHTML = html;
}
function buildStatus(fan, system, data, fanSp, marginSp, velocityStatus) {
var status = '';
if (marginSp >= 0.15) {
status += 'Fan curve check: The selected preset has comfortable static pressure margin at the target CFM. ';
} else if (marginSp >= 0) {
status += 'Fan curve check: The selected preset barely clears the calculated pressure. Confirm the real fan curve and loaded filter drop. ';
} else {
status += 'Fan curve check: The selected preset is short by ' + fmt(Math.abs(marginSp), 2) + ' in w.g. at target airflow. Choose a stronger fan, reduce losses, or lower CFM. ';
}
if (velocityStatus === 'OK') {
status += 'Velocity: ' + fmtWhole(data.velocity) + ' FPM sits inside the usual range for ' + system.name + '.';
} else {
status += 'Velocity: ' + fmtWhole(data.velocity) + ' FPM is flagged as ' + velocityStatus.toLowerCase() + ' for ' + system.name + '.';
}
if (data.filterLoss > 0.45) {
status += ' Filter resistance is a major part of the pressure budget.';
}
return status;
}
window.fspCalculate = function() {
var fan = fanPresets[byId('fspFan').value] || fanPresets.inline6;
var duct = ductProfiles[byId('fspDuctMaterial').value] || ductProfiles.galv;
var system = systemVelocity[byId('fspSystemType').value] || systemVelocity.exhaust;
var geometry = getGeometry();
var altitudeFt = unitAltitudeToFt(readNumber('fspAltitude', 0));
var densityRatio = densityRatioAtAltitude(altitudeFt);
var inputs = {
fan:fan,
duct:duct,
system:system,
geometry:geometry,
targetCfm:Math.max(1, readNumber('fspCfm', 400)),
lengthFt:Math.max(0, unitLengthToFt(readNumber('fspLength', 60))),
flexPct:Math.max(0, Math.min(100, readNumber('fspFlex', 0))),
elbows90:Math.max(0, readNumber('fspElbows90', 0)),
elbows45:Math.max(0, readNumber('fspElbows45', 0)),
tees:Math.max(0, readNumber('fspTees', 0)),
dampers:Math.max(0, readNumber('fspDampers', 0)),
filterDrop:Math.max(0, readNumber('fspFilter', 0)),
filterFactor:parseFloat(byId('fspFilterState').value),
coilDrop:Math.max(0, readNumber('fspCoil', 0)),
grilleDrop:Math.max(0, readNumber('fspGrille', 0)),
hoodDrop:Math.max(0, readNumber('fspHood', 0)),
altitudeFt:altitudeFt,
densityRatio:densityRatio,
margin:parseFloat(byId('fspMargin').value)
};
var data = computeAtCfm(inputs.targetCfm, inputs);
var fanSp = fanStaticAt(fan, inputs.targetCfm, densityRatio);
var marginSp = fanSp - data.totalWithMargin;
var vFlag = velocityFlag(system, data.velocity);
var operatingFlag = 'OK';
if (marginSp < 0) {
operatingFlag = 'Short';
} else if (vFlag !== 'OK') {
operatingFlag = 'Check';
}
byId('fspTotalSp').innerHTML = fmt(data.totalWithMargin, 2) + ' in';
byId('fspFanSp').innerHTML = fmt(fanSp, 2) + ' in';
byId('fspMarginOut').innerHTML = fmt(marginSp, 2) + ' in';
byId('fspVelocity').innerHTML = fmtWhole(data.velocity);
byId('fspDuctLoss').innerHTML = fmt(data.straightLoss + data.fittingLoss, 2) + ' in';
byId('fspAirflowScore').innerHTML = operatingFlag;
byId('fspStatus').innerHTML = buildStatus(fan, system, data, fanSp, marginSp, vFlag);
var breakdown = '';
breakdown += makeBreakRow('Target airflow and fan', fmtWhole(inputs.targetCfm) + ' CFM, ' + fan.name);
breakdown += makeBreakRow('Duct geometry', geometry.display + ', area ' + fmt(geometry.area, 2) + ' sq ft');
breakdown += makeBreakRow('Air velocity and velocity pressure', fmtWhole(data.velocity) + ' FPM, VP ' + fmt(data.velocityPressure, 3) + ' in w.g.');
breakdown += makeBreakRow('Duct material model', duct.name + ', roughness ' + fmt(duct.rough, 4) + ' ft, length factor ' + fmt(duct.lenFactor, 2));
breakdown += makeBreakRow('Straight duct loss', fmt(data.straightLength, 1) + ' effective ft, ' + fmt(data.straightLoss, 3) + ' in w.g.');
breakdown += makeBreakRow('Fitting equivalent length', fmt(data.equivalentLength, 1) + ' ft, ' + fmt(data.fittingLoss, 3) + ' in w.g.');
breakdown += makeBreakRow('Filter pressure', fmt(inputs.filterDrop, 2) + ' x ' + fmt(inputs.filterFactor, 2) + ' = ' + fmt(data.filterLoss, 3) + ' in w.g.');
breakdown += makeBreakRow('Coil, grille, hood losses', fmt(data.coilLoss, 3) + ' + ' + fmt(data.grilleLoss, 3) + ' + ' + fmt(data.hoodLoss, 3) + ' = ' + fmt(data.coilLoss + data.grilleLoss + data.hoodLoss, 3) + ' in w.g.');
breakdown += makeBreakRow('Altitude density factor', fmt(inputs.altitudeFt, 0) + ' ft, air density ' + fmt(densityRatio * 100, 1) + '% of sea level');
breakdown += makeBreakRow('Total before margin', fmt(data.totalBeforeMargin, 3) + ' in w.g.');
breakdown += makeBreakRow('Design margin applied', fmt(inputs.margin * 100, 0) + '% gives ' + fmt(data.totalWithMargin, 3) + ' in w.g. required');
breakdown += makeBreakRow('Fan curve result', fmt(fanSp, 3) + ' in w.g. available, margin ' + fmt(marginSp, 3) + ' in w.g.');
byId('fspBreakdown').innerHTML = breakdown;
buildSpecGrid(fan, duct, data);
buildCurveRows(inputs, fan);
byId('fspResults').className = 'fsp-section fsp-results fsp-active';
byId('fspCurveSection').className = 'fsp-section fsp-results fsp-active';
lastInputs = inputs;
};
window.fspToggleShape();
setUnitLabels();
window.fspCalculate();
})();
To select the fan that is apropriate for a ventilation or HVAC system, you need to understand the amount of resistances that the air will encounter. Static pressure are the force that resists airflow through every component of the system. If the fan selected for installation cant overcome the static pressure of the system, the airflow will be insufficient to provide adequate mixing or exhaust air from the space.
The fan static pressure calculator will help you to determine the static pressure of the system by entering the informations regarding the system components. The material out of which the ducts is constructed will affect the static pressure of the system. Air will encounter friction as it move through the ducts.
How to Use a Fan Static Pressure Calculator
For example, flexible ducts will create more friction than ducts made of metal. The calculator accounts for this by using a length factor that accounts for the length and material of the ducts. A long run of flexible ducts will have a higher length factor than an equivalent length of metal ducts.
Each fitting within the system will create some static pressure. Elbows, tees and other fittings will create turbulence in the system that raises the static pressure within the system. The calculator treats each of these component as an equivalent length of duct.
Dampers and backdraft preventers will also create some static pressure within the system. While a small number of dampers will not significantly impact static pressure, installing numerous dampers will increase static pressure significant. Another major component of static pressure are the air filters and coils.
Air filters will create static pressure within the system. The pressure drop across a clean filter is small but the resistance of a loaded filter will double the static pressure of a clean filter. It is essential to use a loading factor for fans calculations to account for the loaded filter.
Additionally, the coils within the system will also add to the static pressure of the system. If the cooling coils becomes wet with condensation of the moist air within the system, the static pressure will be higher than that of dry heating coils. You must enter the static pressure of the loaded cooling coils into the fan static pressure calculator.
The altitude at which the fan will be installed will impact the performance of that fan. As the altitude increases, the air pressure decrease. Fans will produce less static pressure at 5,000 feet above sea level then they will at sea level.
The fan static pressure calculator will account for the difference in air densities by using a density ratio that accounts for the difference in static pressures at different altitudes. Using a fan that is rated at sea level in the mountains will not provide the static pressure required by the system. The calculator will provide two main readings for the fan static pressure calculations.
The static pressure required by the system and the margin for the fan curve provide valuable informations to the designer. If the fan curve provides a small margin for error the fan is close to working at its limits. A larger margin allow for variations within the system such as dirty air filters.
The velocity of the air within the system is also an important parameter. If the velocity of the air is too low within the system, it may not function proper in relation to the tasks that it must accomplish. Additionally, if the velocity within the ducts is too high it will create excessive noise within the system.
The fan static pressure calculator will show if the velocity is outside of the normal range. Common errors when installing fans within HVAC systems are treating the specifications of the fan as a guarantee of performance. Fans may be rated at 400 cubic feet per minute of free air yet will move significantly less air when the static pressure of the system is accounted for.
The fan static pressure calculator will help the designer to understand the difference between the rating of the fan and the performance of the fan. Another common error is to use the static pressure of a clean air filter rather than using the static pressure of a loaded air filter. Using the static pressure of a clean filter will result in a fan that does not provide enough airflow to the system.
The fan static pressure calculator will help to graph the system static pressure curve and fan static pressure curve. The interaction of these two graphs will provide information to the designer regarding the performance of the fan under the current conditions within the system and under potential changes to the system. For instance, if the fan barely provides the static pressure required by the system, should the filter become loaded, the fan will not be able to meet the requirements of the system.
Static pressure is a value that defines the difference between a fan system that meets the requirements of the facility and one that do not. By entering the dimensions of the ducts, the length and type of the fittings and the static pressure of each component of the system the designer gains an understanding of the static pressure that the fan will encounter. Additionally the margin for the fan curve provides information regarding if the purchased fan has the necessary reserve in its performance to handle these static pressure requirement.

-
Hi, I am Thomas Martinez, the owner of ToolCroze.com! As a passionate DIY enthusiast and a firm believer in the power of quality tools, I created this platform to share my knowledge and experiences with fellow craftsmen and handywomen alike.
View all posts