Well Water Flow Rate & Yield Calculator

ANALife Services AuthorityNational 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

More Calculators

Read Next

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

References