The demand layer
Who needs how much water, when, and what happens if they do not get it.
Who needs how much water, when, and what happens if they do not get it.
AREA MAPPING --> GEOLOGY --> WATER --> [ DEMAND ] --> SCHEME --> [OPTIMISATION]
▲
you are here
Demand was previously a single line inside a scenario file —
irrigation: annual_demand_m3: 3_000_000 — shaped by a fixed monthly
curve and sourced from nothing. That is not good enough to size a
scheme against, for a reason worth stating plainly:
A scheme sized against met demand is sized against the drought that already happened. What was abstracted in 2011 is not what was needed in 2011; it is what was available in 2011, which is a measure of the shortage rather than of the requirement. Sizing on it guarantees the scheme is too small, and does so invisibly.
So this layer has to answer a counterfactual: what would have been used, had it been there.
The three demands, and they are not the same kind of thing
1. Licensed abstraction — what is permitted
The EA abstraction licence register gives, per licence: point, purpose, annual and daily quantities, and period of validity. This is the ceiling and the easiest layer to build.
It is not demand. Licences are held unused, held at historic volumes that no longer reflect the cropping, and in some cases held defensively. Actual abstraction returns, where available, are the better measure of what was taken — but see the warning above about what “taken” means in a dry year.
2. Unconstrained agricultural demand — what would have been used
The one that matters, and the one that requires modelling rather than records. The shape of it:
crop / land use -> potential evapotranspiration
-> soil moisture deficit <- the water layer
already computes
AET and effective
rainfall
-> irrigation need to hold the
deficit below a target
-> demand, daily, by location
The water layer already carries the expensive half of this: areal rainfall per catchment, a fitted AET of 470 mm/yr, and a soil-moisture store. What is missing is the land use — what is grown, where, and what deficit each crop will tolerate before yield is lost.
Two properties this must have that the placeholder does not:
- It must vary between years, and vary the right way. Demand is highest in exactly the years supply is lowest. A fixed annual volume removes the correlation that makes the problem hard, and therefore flatters every scheme tested against it.
- It must be a series, not a total. The scheme delivers water in July; a demand expressed annually cannot tell whether it arrived in time.
3. Environmental demand — layered, not single
Not one number and not one threshold. At least three distinct claims on the same water, with different legal standing and different timing:
| claim | what it asks for | when it binds |
|---|---|---|
| hands-off flow | do not take below this | already in the scheme layer as Q19 |
| low-flow support | put water back above this | summer, and it is a scheme output not a constraint |
| rhyne penning levels | hold managed water levels on the moors | summer, and it is a large volume |
| designated sites | SSSI / SAC / SPA / Ramsar water dependencies | site-specific |
The third of these is new to the project and is potentially the largest
of them. The Somerset Levels are drained by rhynes whose levels are
actively managed — held high in summer for stock watering, wet fencing
and to stop the peat shrinking, drawn down in winter for flood storage.
Holding a summer penning level across a flat moor is a real and
recurring water requirement, and it is the most direct expression of
the “return water to low-level watercourses” objective. See
papers/water/rhynes.md for the network and the
storage estimate.
The constraint layers for the designated sites are already fetched —
core/constraints.py pulls SSSI, SAC, SPA and Ramsar. What is missing
is the link from a designation to a water requirement, which is not
in those datasets and generally has to be read from site condition
assessments.
Chapters
| ch | chapter | what it covers |
|---|---|---|
| 1 | What demand data actually exists | what was looked for, found, fetched, and what still needs asking for |
| 2 | Licensed abstraction, scaled | the blanket 3 Mm3/yr replaced with a sourced range |
| 3 | A demand series with a rhythm | shape from the soil-moisture deficit, level from the licence |
Status
| component | status |
|---|---|
| environmental — WLMP target levels | FETCHED — 97 structures, 6 plans, summer held a median +0.24 m above winter. core/wlmp.py |
| agriculture — land use | FETCHED — CROME 2024, 320,760 cells, 1,333 km², grass-dominated. core/landuse.py |
| licensed abstraction | FETCHED for one lawful 100 km2 window — scaled to 2.33–3.19 Mm3/yr. core/abstraction.py, ch.2 |
| abstraction returns 2019–24 | not published monthly — only a 6-year average and % of authorised quantity. Monthly series needs a request to water_abstractiondigital@environment-agency.gov.uk |
| demand series (daily, varying) | BUILT — demand_daily.csv, deficit-driven, covers 2010– in full, 1.97–3.97 Mm3/yr across years. build_demand_series.py |
| useful-water tiers | BUILT — licensed 3.19 vs full deficit 108 (arable) / 352 (all agricultural) Mm3/yr. The licence is 0.9% of physically useful water |
| unconstrained agricultural demand | not built — the deficit series is a proxy, not a crop model |
| rhyne penning demand | quantified — ~1.25 Mm3 of seasonal uplift, see ch.1 §1 and papers/water/rhynes.md |
| designated-site water needs | not built — polygons fetched, requirements not |
| what the scheme layer currently uses | 3,000,000 m3/yr on a fixed monthly curve — now bounded rather than assumed: it sits inside the 2.33–3.19 licensed range |
The finding that most changes the layer: the environmental demand splits by season and only half of it is a drought demand. The wildfowl and wader requirement is a winter–spring inundation, when water is abundant and the scheme has nothing to offer. The penning requirement is April–November, when water is scarce — and its own plans give three purposes, two of which (wet fences, livestock watering) are agricultural. So the summer environmental demand and the farm demand are not cleanly separable, and the priority question “farmers first or environment on a par” is partly a false choice on the Levels.
The denominator is no longer invented, but it is still a ceiling. “% of demand met” in the scheme runs should be read as % of a demand consistent with the licensed ceiling — not as % of what farming would have used had water been there. That counterfactual still needs building, and it is the one number that would change the scheme’s sizing rather than merely its labelling.
The interface with the scheme layer
| quantity | direction | who owns it | current value |
|---|---|---|---|
| irrigation demand series | demand → scheme | demand layer computes | daily series, mean 3.19 Mm3/yr, range 2.63–4.04 by year (irrigation: series_csv:) |
| hands-off flow | demand → scheme | licence-shaped, Q19 | per gauge, from its own record |
| low-flow support target | demand → scheme | environmental | 1.5 m3/s on the Tone system, assumed |
| rhyne penning volume | demand → scheme | environmental / agricultural | ~1.25 Mm3 seasonal uplift, from WLMP levels |
| unmet demand, by day | scheme → demand | scheme reports | unmet_demand_m3 |
Priority, as decided: farmers first, with environmental claims treated on a par where a specific requirement exists rather than a general preference. That ordering is a policy choice and is recorded here so it can be argued with rather than discovered in the code.