# Catch-Cup Calibration — Field Protocol

**Status: STAGED — runs the day the mount set is printed.** Everything below
is ready; the only missing input is water landing in cups.

Purpose: replace the two assumed constants in the simulation with measured
ones — **nozzle flow** (`Q_RATED`) and **droplet size** (`VMD`, inferred from
the deposition pattern). ~45 minutes, ≈$50 of gear, no hydrant needed.

## Rig

Garden hose → the actual valve train from the BOM (ball valve → 200-mesh
filter → PRV @40 psi → gauge) → 3/8" riser tube up the printed/PVC riser →
mist ring at 3.0 m. Hose-bib supply is hydraulically identical to the hydrant
at the point that matters (the regulator inlet).

## Gear

- 12+ identical cups/containers (deli cups fine), dry weights known
- Kitchen scale (±1 g), tape measure, timer
- $15 anemometer, thermometer/hygrometer (phone weather is OK at pinch)
- Bucket + stopwatch (bulk-flow check)

## Procedure

1. **Bulk flow first:** run the full ring into a bucket (tarp funnel) for
   exactly 5 min. Weigh. Repeat at two gauge settings (30 and 40 psi).
   → calibrates total GPH directly.
2. **Cup grid:** on a calm-ish morning (<2 m/s ideally), set cups on a line
   downwind at 0.5, 1, 1.5, 2, 2.5, 3, 4, 5 m from the mast, plus 2 cups
   crosswind at 1 and 2 m, plus 1 upwind at 1 m. Record cup positions.
3. Run mist 20–30 min (longer = better signal). Log wind speed every 5 min,
   temp, RH, gauge psi.
4. Weigh cups. Enter everything in `measurements.csv` (template provided).
5. `python sim/calibration/calibrate.py sim/calibration/measurements.csv`

## What calibrate.py does

1. **Flow fit:** measured bulk GPH vs model at gauge pressure → corrected
   `Q_RATED` (per-nozzle rating).
2. **VMD fit:** runs the Lagrangian sim at the logged weather over a sweep of
   VMD values (60–160 µm) and picks the one whose radial deposition profile
   best matches the cup masses (least squares on normalized deposition).
3. Writes `calibration.json` with the fitted constants + fit quality, and
   prints the exact lines to change in `mist_sim.py` (or apply `--write` to
   patch the constants automatically).
4. Re-runs the standard scenario table with calibrated constants so the
   before/after shift in headline numbers (evap %, ΔT, footprint) is explicit.

## Acceptance

- Bulk flow within ±15% of model → hydraulics validated.
- Deposition profile R² ≥ 0.7 → droplet model usable for siting claims.
- Anything worse → check for a clogged nozzle (the filter matters), then
  re-run; if still off, the honest move is quoting field numbers directly.
