River routing - flow at a point that is not a gauge
Generated by build_river_routing.py. The chapter the scheme layer is blocked on: an intake is never at a gauge.
Generated by build_river_routing.py. The chapter the scheme layer is blocked on: an intake is never at a gauge.
The test
Predicting a gauge with its own fitted parameters proves nothing about ungauged points - calibration already did that. So every catchment here is predicted using the median parameters of all the OTHERS, leave-one-out. That is exactly the operation an ungauged intake requires, performed where the answer happens to be known.
- catchments tested: 9
- leave-one-out NSE > 0.5: 8 of 9
- median NSE calibrated 0.72 -> leave-one-out 0.65
- the cost of being ungauged: 0.07 NSE

| catchment | km2 | NSE own | NSE regionalised | bias % | own f | regional f |
|---|---|---|---|---|---|---|
| Fenny Castle | 60 | 0.82 | 0.79 | -13.3 | 0.47 | 0.60 |
| Milverton | 28 | 0.84 | 0.74 | +15.8 | 0.56 | 0.60 |
| Lovington | 147 | 0.73 | 0.67 | -8.8 | 0.62 | 0.57 |
| Pen Mill | 215 | 0.73 | 0.66 | +29.8 | 0.65 | 0.57 |
| Ashford Mill | 89 | 0.70 | 0.65 | +14.4 | 0.57 | 0.59 |
| Halsewater | 53 | 0.68 | 0.65 | -29.2 | 0.26 | 0.60 |
| Chiselborough | 75 | 0.69 | 0.62 | -3.9 | 0.66 | 0.57 |
| Bishops Hull | 244 | 0.72 | 0.53 | +42.5 | 0.56 | 0.60 |
| Somerton | 23 | 0.19 | 0.07 | -75.1 | 0.63 | 0.57 |
What this licenses, and what it does not
Licensed: generating a daily flow series at an ungauged point of known upstream area, with the stated skill above. That is enough to put an availability series at a candidate intake.
Not licensed:
- stage. Flow is not level. A rating
Q = a(h-h0)^bis a property of ONE channel cross-section and does not regionalise. Only two sites have co-located flow and stage under 300 m (Ashford Mill, Halsewater), so stage is available there and nowhere else until more ratings exist. - peaks. The timestep is daily and flood peaks are sub-daily. The 15-minute stage on disk is the refinement, and the split
fmust NOT be re-tuned to absorb a timestep error. - nested catchments. Summing gauges double-counts shared water - see
compare_04c_nesting.py, which exists because run 04 did exactly that. Accumulate on the network, never by addition. - tidal reaches. Below the tidal limit, level is set by the sea and gates, not by upstream flow. Nothing here knows that.