Well Water Flow Rate & Yield Calculator
ANA›Life Services Authority›National Calculator Authority›Well Water Flow Rate & Yield 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; } }
Well Water Flow Rate & Yield Calculator
Calculate well flow rate, specific capacity, and sustainable yield using pumping test data. Enter the pumping rate, static water level, pumping water level, and well diameter to evaluate well performance.
Pumping Rate (Q)
GPM (gallons per minute) LPM (liters per minute) m³/hour
Static Water Level (SWL)
Feet (ft) Meters (m)
Pumping Water Level (PWL)
ft (below surface)
Total Well Depth
ft
Well Casing Diameter
Inches (in) Centimeters (cm)
Pump Test Duration
Minutes Hours
Calculate
### Results
Drawdown (s) Specific Capacity (Sc) Flow Rate (Q) Daily Yield Casing Storage Volume Available Drawdown Well Performance Rating
function welCalc() { const errEl = document.getElementById('wel-error'); const resEl = document.getElementById('wel-result'); errEl.style.display = 'none'; resEl.style.display = 'none';
// --- Read inputs --- const Q_raw = parseFloat(document.getElementById('wel-pumping-rate').value); const SWL_raw = parseFloat(document.getElementById('wel-static-level').value); const PWL_raw = parseFloat(document.getElementById('wel-pumping-level').value); const depth_raw = parseFloat(document.getElementById('wel-well-depth').value); const diam_raw = parseFloat(document.getElementById('wel-well-diameter').value); const dur_raw = parseFloat(document.getElementById('wel-pump-duration').value);
const qUnit = document.getElementById('wel-pumping-rate-unit').value; const lvlUnit = document.getElementById('wel-level-unit').value; const diamUnit = document.getElementById('wel-diameter-unit').value; const durUnit = document.getElementById('wel-duration-unit').value;
// --- Validation --- const errors = []; if (isNaN(Q_raw) || Q_raw = depth_raw) errors.push("Pumping Water Level cannot exceed or equal Total Well Depth.");
if (errors.length > 0) { errEl.innerHTML = errors.map(e => '⚠ ' + e).join(''); errEl.style.display = 'block'; return; }
// --- Unit conversions → SI base (liters, meters) --- // Convert Q to liters/minute let Q_lpm; if (qUnit === 'gpm') Q_lpm = Q_raw * 3.78541; else if (qUnit === 'lpm') Q_lpm = Q_raw; else Q_lpm = Q_raw * 1000 / 60; // m³/hr → L/min
// Convert levels to meters const toM = lvlUnit === 'ft' ? 0.3048 : 1.0; const SWL_m = SWL_raw * toM; const PWL_m = PWL_raw * toM; const depth_m = depth_raw * toM;
// Convert diameter to meters const diam_m = diamUnit === 'in' ? diam_raw * 0.0254 : diam_raw / 100;
// Convert duration to minutes const dur_min = durUnit === 'hr' ? dur_raw * 60 : dur_raw;
// --- Core Calculations ---
// 1. Drawdown (s) = PWL - SWL [meters] const drawdown_m = PWL_m - SWL_m;
// 2. Specific Capacity (Sc) = Q / s [L/min per meter of drawdown] // Sc = Q (L/min) / drawdown (m) const Sc = Q_lpm / drawdown_m;
// 3. Available drawdown = Well Depth - PWL [meters] const avail_drawdown_m = depth_m - PWL_m;
// 4. Casing storage volume = π * r² * (depth - SWL) [liters] // Volume of water column from SWL to bottom of well const radius_m = diam_m / 2; const water_column_m = depth_m - SWL_m; const casing_vol_L = Math.PI * radius_m * radius_m * water_column_m * 1000; // m³ → L
// 5. Daily Yield = Q (L/min) * 60 * 24 [liters/day] — conservative: 8 hr/day pumping const daily_yield_L = Q_lpm * 60 * 8; // 8-hour sustainable pumping day
// 6. Total volume pumped during test const vol_pumped_L = Q_lpm * dur_min;
// 7. Performance rating based on specific capacity (L/min/m) // Reference: Driscoll (1986) Groundwater and Wells let perfRating, perfColor; if (Sc >= 20) { perfRating = "Excellent"; perfColor = "#276749"; } else if (Sc >= 10) { perfRating = "Good"; perfColor = "#2f855a"; } else if (Sc >= 4) { perfRating = "Moderate"; perfColor = "#b7791f"; } else if (Sc >= 1) { perfRating = "Low"; perfColor = "#c05621"; } else { perfRating = "Very Low"; perfColor = "#c53030"; }
// --- Format outputs --- const lvlSuffix = lvlUnit === 'ft' ? 'ft' : 'm'; const drawdown_disp = lvlUnit === 'ft' ? (drawdown_m / 0.3048).toFixed(2) + ' ft' : drawdown_m.toFixed(2) + ' m'; const avail_disp = lvlUnit === 'ft' ? (avail_drawdown_m / 0.3048).toFixed(2) + ' ft' : avail_drawdown_m.toFixed(2) + ' m';
// Specific capacity in original Q units per original level unit let Sc_disp; if (qUnit === 'gpm' && lvlUnit === 'ft') { const Sc_gpm_ft = (Q_raw) / (drawdown_m / 0.3048); Sc_disp = Sc_gpm_ft.toFixed(3) + ' GPM/ft'; } else if (qUnit === 'm3h' && lvlUnit === 'm') { const Q_m3h = Q_raw; const Sc_m3h_m = Q_m3h / drawdown_m; Sc_disp = Sc_m3h_m.toFixed(3) + ' m³/hr/m'; } else { Sc_disp = Sc.toFixed(3) + ' L/min/m'; }
// Flow rate display let Q_disp; if (qUnit === 'gpm') Q_disp = Q_raw.toFixed(2) + ' GPM (' + Q_lpm.toFixed(2) + ' L/min)'; else if (qUnit === 'lpm') Q_disp = Q_raw.toFixed(2) + ' L/min'; else Q_disp = Q_raw.toFixed(2) + ' m³/hr (' + Q_lpm.toFixed(2) + ' L/min)';
// Daily yield display const daily_gal = daily_yield_L / 3.78541; const daily_disp = daily_yield_L.toFixed(0) + ' L/day (' + daily_gal.toFixed(0) + ' gal/day) @ 8 hr pumping';
// Casing storage display const casing_gal = casing_vol_L / 3.78541; const casing_disp = casing_vol_L.toFixed(1) + ' L (' + casing_gal.toFixed(1) + ' gal)';
// --- Populate results --- document.getElementById('wel-drawdown').textContent = drawdown_disp; document.getElementById('wel-specific-capacity').textContent = Sc_disp; document.getElementById('wel-flow-rate-result').textContent = Q_disp; document.getElementById('wel-daily-yield').textContent = daily_disp; document.getElementById('wel-casing-storage').textContent = casing_disp; document.getElementById('wel-available-drawdown').textContent= avail_disp;
const perfEl = document.getElementById('wel-performance'); perfEl.textContent = perfRating; perfEl.style.color = perfColor;
resEl.style.display = 'block'; }
// Sync unit labels dynamically document.getElementById('wel-level-unit').addEventListener('change', function() { const u = this.value === 'ft' ? 'ft' : 'm'; document.getElementById('wel-level-unit-label').textContent = u + ' (below surface)'; document.getElementById('wel-depth-unit-label').textContent = u; });
#### Formulas Used
Drawdown (s): s = PWL − SWL Where PWL = Pumping Water Level, SWL = Static Water Level (both measured from surface)
Specific Capacity (Sc): Sc = Q / s Where Q = pumping rate, s = drawdown. Units: GPM/ft or L/min/m
Casing Storage Volume: V = π × r² × (Depth − SWL) Where r = casing radius. Represents the standing water column volume.
Daily Yield (conservative): Y = Q × 60 min/hr × 8 hr/day Based on 8-hour sustainable pumping per day — a standard conservative estimate.
Available Drawdown: AD = Well Depth − PWL Remaining buffer before pump intake is exposed.
#### Assumptions & References
- Performance ratings based on Driscoll (1986) Groundwater and Wells, 2nd Ed., Johnson Screens.
More Calculators
- DDoS Attack Mitigation Cost Calculator
- Cloud Security Risk Score Calculator
- College Ranking Score Calculator
- Encryption Overhead Performance Calculator
- Collection Item Value Estimator
- Texas Climate Zone Heat Load Calculator
- Heat Pump vs. Fossil Fuel Cost Comparison Calculator
- Home Insulation R-Value Savings Calculator
- Furnace Sizing Calculator for Utah Altitude Adjustment
- Cold Climate Heat Pump Sizing Calculator
Read Next
Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...