Structural Drying Equipment Sizing Calculator

ANALife Services AuthorityNational Calculator Authority›Structural Drying Equipment Sizing Calculator

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Structural Drying Equipment Sizing Calculator

Calculate the number of air movers and dehumidifiers required for structural drying jobs based on IICRC S500 standards. Enter the affected area dimensions and conditions to get equipment recommendations.

Room/Area Length (ft)

Room/Area Width (ft)

Ceiling Height (ft)

Number of Affected Walls

Affected Wall Height (ft) (wet portion only)

Average Affected Wall Length (ft)

Ceiling Affected? (0 = No, 1 = Yes)

Water Category (1, 2, or 3)

Water Class (1, 2, 3, or 4)

Indoor Temperature (°F)

Indoor Relative Humidity (%)

Calculate Equipment Needs

function sdeCalc() { // --- Gather inputs --- var length = parseFloat(document.getElementById('sde_length').value); var width = parseFloat(document.getElementById('sde_width').value); var height = parseFloat(document.getElementById('sde_height').value); var numWalls = parseInt(document.getElementById('sde_affected_walls').value); var wallHeight = parseFloat(document.getElementById('sde_wall_height').value); var wallLenAvg = parseFloat(document.getElementById('sde_wall_length_avg').value); var ceilAff = parseInt(document.getElementById('sde_ceiling_affected').value); var category = parseInt(document.getElementById('sde_water_category').value); var waterClass = parseInt(document.getElementById('sde_water_class').value); var temp = parseFloat(document.getElementById('sde_temp').value); var rh = parseFloat(document.getElementById('sde_rh').value);

var errors = [];

if (isNaN(length) || length 4) errors.push("Number of affected walls must be 0–4."); if (numWalls > 0) { if (isNaN(wallHeight) || wallHeight 3) errors.push("Water category must be 1, 2, or 3."); if (isNaN(waterClass) || waterClass 4) errors.push("Water class must be 1, 2, 3, or 4."); if (isNaN(temp) || temp 110) errors.push("Indoor temperature must be between 40°F and 110°F."); if (isNaN(rh) || rh 100) errors.push("Relative humidity must be between 1% and 100%.");

var resultDiv = document.getElementById('sde_result'); if (errors.length > 0) { resultDiv.style.display = 'block'; resultDiv.innerHTML = 'Please fix the following:' + errors.map(function(e){ return ''; }).join('') + ''; return; }

// ------------------------------------------------------- // STEP 1: Calculate affected surface areas // ------------------------------------------------------- var floorArea = length * width; // sq ft var wallArea = numWalls * wallHeight * wallLenAvg; // sq ft (wet walls only) var ceilingArea = ceilAff === 1 ? floorArea : 0; // sq ft var totalAffArea = floorArea + wallArea + ceilingArea; // sq ft (total wet surfaces) var cubicVolume = floorArea * height; // cubic ft

// ------------------------------------------------------- // STEP 2: Air Movers — IICRC S500 Rule // 1 air mover per 10–16 sq ft of affected surface area // Class multiplier adjusts density: // Class 1: 1 per 16 sq ft // Class 2: 1 per 12 sq ft // Class 3: 1 per 10 sq ft // Class 4: specialty drying — 1 per 10 sq ft + 20% uplift // ------------------------------------------------------- var sqftPerMover; if (waterClass === 1) sqftPerMover = 16; else if (waterClass === 2) sqftPerMover = 12; else if (waterClass === 3) sqftPerMover = 10; else sqftPerMover = 10; // Class 4 base

var airMoversRaw = totalAffArea / sqftPerMover; if (waterClass === 4) airMoversRaw *= 1.20; // 20% uplift for Class 4

// Category 3 requires additional air movers (+25%) due to contamination drying protocols if (category === 3) airMoversRaw *= 1.25;

var airMovers = Math.ceil(airMoversRaw); airMovers = Math.max(airMovers, 1); // minimum 1

// ------------------------------------------------------- // STEP 3: Dehumidifiers — LGR (Low Grain Refrigerant) // IICRC S500: 1 LGR dehumidifier per 800–1,600 cubic ft // depending on class and conditions // Class 1: 1 per 1,600 cu ft // Class 2: 1 per 1,200 cu ft // Class 3: 1 per 1,000 cu ft // Class 4: 1 per 800 cu ft // Humidity correction: if RH > 80%, add 15% more capacity // ------------------------------------------------------- var cuftPerDehum; if (waterClass === 1) cuftPerDehum = 1600; else if (waterClass === 2) cuftPerDehum = 1200; else if (waterClass === 3) cuftPerDehum = 1000; else cuftPerDehum = 800;

var dehumRaw = cubicVolume / cuftPerDehum; if (rh > 80) dehumRaw *= 1.15; // high humidity correction

// Category 3: add 20% for contamination if (category === 3) dehumRaw *= 1.20;

var dehumidifiers = Math.ceil(dehumRaw); dehumidifiers = Math.max(dehumidifiers, 1); // minimum 1

// ------------------------------------------------------- // STEP 4: Dehumidifier Capacity (pints/day) // LGR standard unit = 150 pints/day at AHAM conditions // Estimate moisture load using psychrometric approximation: // Grains of moisture at current RH vs target RH (40%) // Saturation grains at temp T (°F) ≈ 4,000 / (exp(17.27(T-32)/((T-32)+237.39/5) ... simplified) // This calculator uses a lookup-style polynomial for saturation vapor pressure: // Psat (inHg) ≈ exp(20.386 - 5132/(T_Rankine)) — simplified Antoine // Grains/lb dry air = 7000 * 0.622 * (RH/100 * Psat) / (Patm - RH/100 * Psat) // Patm = 29.92 inHg (sea level) // ------------------------------------------------------- var T_R = (temp + 459.67); // Rankine var Psat = Math.exp(20.386 - 5132 / T_R); // inHg (Antoine simplified) var Patm = 29.92; // inHg sea level

var Pv_cur = (rh / 100) * Psat; var Pv_target = 0.40 * Psat; // target 40% RH

var W_cur = 7000 * 0.622 * Pv_cur / (Patm - Pv_cur); // grains/lb dry air var W_target = 7000 * 0.622 * Pv_target / (Patm - Pv_target); // grains/lb dry air var deltaW = Math.max(W_cur - W_target, 0); // grains to remove per lb dry air

// Air density ≈ 0.075 lb/cu ft at sea level, 70°F (adjusted for temp) var airDensity = 0.075 * (530 / T_R); // lb/cu ft var airMass = cubicVolume * airDensity; // lb dry air in space

// Moisture to remove (lbs) = airMass * deltaW / 7000 var moistureLbs = airMass * deltaW / 7000;

// Assume 3 air changes per hour, 24 hr/day drying cycle // Total moisture load (pints/day) = moistureLbs * 3 ACH * 24 hr * 2 pints/lb var ACH = 3; var moisturePintsPerDay = moistureLbs * ACH * 24 * 2;

// Capacity per LGR unit (pints/day) var lgrCapacity = 150; var dehumByCapacity = Math.ceil(moisturePintsPerDay / lgrCapacity); dehumByCapacity = Math.max(dehumByCapacity, 1);

// Use the larger of the two dehumidifier estimates var finalDehum = Math.max(dehumidifiers, dehumByCapacity);

// ------------------------------------------------------- // STEP 5: Air Scrubbers (negative air machines) // Required for Category 2 & 3; recommended for Class 3 & 4 // Rule: 1 per 2,000 cu ft for Cat 2; 1 per 1,500 cu ft for Cat 3 // ------------------------------------------------------- var airScrubbers = 0; var scrubberNote = "Not required for Category 1 / Class 1–2 (unless mold is present)."; if (category === 2) { airScrubbers = Math.ceil(cubicVolume / 2000); scrubberNote = "Recommended for Category 2 water damage."; } else if (category === 3) { airScrubbers = Math.ceil(cubicVolume / 1500); scrubberNote = "Required for Category 3 — use HEPA filtration."; } else if (waterClass >= 3) { airScrubbers = Math.ceil(cubicVolume / 2000); scrubberNote = "Recommended for Class 3–4 drying due to elevated moisture and potential mold risk."; } airScrubbers = Math.max(airScrubbers, category >= 2 ? 1 : 0);

// ------------------------------------------------------- // STEP 6: Drying time estimate (days) // IICRC S500 target: reduce moisture content to normal // Typical: Class 1 = 2–3 days, Class 2 = 3–5 days, // Class 3 = 5–7 days, Class 4 = 7–14 days // Adjust for high RH (+1 day per 10% above 60%) // ------------------------------------------------------- var baseDays; if (waterClass === 1) baseDays = 3; else if (waterClass === 2) baseDays = 5; else if (waterClass === 3) baseDays = 7; else baseDays = 14;

var rhPenalty = rh > 60 ? Math.floor((rh - 60) / 10) : 0; var estDays = baseDays + rhPenalty;

// ------------------------------------------------------- // STEP 7: Class & Category descriptions // ------------------------------------------------------- var classDesc = { 1: "Class 1 — Least amount of water absorption; only part of a room affected.", 2: "Class 2 — Significant absorption; entire room carpet and cushion affected.", 3: "Class 3 — Greatest absorption; walls, ceilings, insulation saturated.", 4: "Class 4 — Specialty drying; hardwood, concrete, plaster, or crawl spaces." }; var catDesc = { 1: "Category 1 — Clean water (broken supply line, rain water).", 2: "Category 2 — Gray water (dishwasher, washing machine overflow).", 3: "Category 3 — Black water (sewage, flooding from rivers/streams)." };

// ------------------------------------------------------- // Build result HTML // ------------------------------------------------------- var html = '### Equipment Sizing Results ';

html += ''; html += 'ParameterValue'; html += 'Floor Area' + floorArea.toFixed(1) + ' sq ft'; html += 'Affected Wall Area' + wallArea.toFixed(1) + ' sq ft'; html += 'Affected Ceiling Area' + ceilingArea.toFixed(1) + ' sq ft'; html += 'Total Affected Surface Area' + totalAffArea.toFixed(1) + ' sq ft'; html += 'Room Volume' + cubicVolume.toFixed(0) + ' cu ft'; html += 'Grains of Moisture (current)' + W_cur.toFixed(1) + ' gr/lb'; html += 'Grains of Moisture (target @ 40% RH)' + W_target.toFixed(1) + ' gr/lb'; html += 'Estimated Moisture Load' + moisturePintsPerDay.toFixed(0) + ' pints/day'; html += '';

html += ''; html += 'EquipmentQuantity'; html += '🌀 Air Movers (axial fans)' + airMovers + ''; html += '💧 LGR Dehumidifiers (150 pt/day)' + finalDehum + ''; if (airScrubbers > 0) { html += '🔵 Air Scrubbers / Negative Air Machines' + airScrubbers + ''; } html += '';

html += ''; html += '⏱ Estimated Drying Time: ' + estDays + ' days'; html += '(Base: ' + baseDays + ' days for Class ' + waterClass + '; +' + rhPenalty + ' day(s) for RH > 60%)'; html += '';

html += ''; html += 'Water Classification:'; html += catDesc[category] + ''; html += classDesc[waterClass] + ''; html += 'Air Scrubbers: ' + scrubberNote + ''; html += '';

html += ''; html += 'Calculation Basis:'; html += '• Air movers: 1 per ' + sqftPerMover + ' sq ft affected surface' + (waterClass === 4 ? ' + 20% Class 4 uplift' : '') + (category === 3 ? ' + 25% Cat 3 uplift' : '') + ''; html += '• Dehumidifiers (volume method): 1 per ' + cuftPerDehum + ' cu ft' + (rh > 80 ? ' + 15% high-RH correction' : '') + (category === 3 ? ' + 20% Cat 3 uplift' : '') + ''; html += '• Dehumidifiers (capacity method): ' + moisturePintsPerDay.toFixed(0) + ' pt/day ÷ 150 pt/day per unit = ' + dehumByCapacity + ' units'; html += '• Final dehumidifier count = max(' + dehumidifiers + ', ' + dehumByCapacity + ') = ' + finalDehum + ''; html += '';

resultDiv.style.display = 'block'; resultDiv.innerHTML = html; }

#### Formulas Used

Total Affected Surface Area: Atotal = (L × W) + (Nwalls × Hwall × Lwall) + Aceiling

Air Movers (IICRC S500): Nmovers = ⌈ Atotal / Sclass × Fcat × Fclass4 ⌉ where Sclass = 16 (Class 1), 12 (Class 2), 10 (Class 3 & 4) sq ft/mover Fcat = 1.25 for Category 3; Fclass4 = 1.20 for Class 4

Dehumidifiers — Volume Method: Ndehum = ⌈ Vroom / Cclass × FRH × Fcat ⌉ where Cclass = 1,600 / 1,200 / 1,000 / 800 cu ft per unit (Class 1–4) FRH = 1.15 if RH > 80%

Moisture Load (Psychrometric): Psat = e(20.386 − 5132/TR) (inHg, Antoine equation) W = 7000 × 0.622 × Pv / (Patm − Pv) (grains/lb dry air) Moisture Load = ρair × V × ΔW / 7000 × ACH × 24 hr × 2 pt/lb

Dehumidifiers — Capacity Method: Ndehum = ⌈ Moisture Load (pt/day) / 150 pt/day ⌉

Final Dehumidifier Count: Nfinal = max(Nvolume method, Ncapacity method)

Air Scrubbers: Nscrubbers = ⌈ Vroom / 2,000 ⌉ (Cat 2) or ⌈ Vroom / 1,500 ⌉ (Cat 3)

#### Assumptions & References

More Calculators

Read Next

Ni Class 2 Vs Class 4 Contributions Comparator ANA › Life Services Authority › National Calculator Authority › NI Class 2 vs Class 4 Contributions Comparator .calc-container...

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References