Aquifer operation - the capacitor
Generated by build_scheme_aquifer.py. Second chapter of the scheme layer: what the ground can take, hold and give back.
Generated by build_scheme_aquifer.py. Second chapter of the scheme layer: what the ground can take, hold and give back.
The availability chapter left this one a specific question. The divertible resource collapses to about a fifth of its mean in a drought year, so a drought scheme here cannot be supplied during a drought - everything it delivers in a dry year was banked in a wet one. The binding specification is therefore carry-over, and that is what this chapter tests first.

1. Carry-over, and the number that turned out to be a design choice
aquifer_registry.yml gives every Sherwood compartment leakage_per_day = 0.001784 - a 389-day half-life - and tiers all four as T3 multi-year drought. Those two statements do not sit together. A 389-day half-life retains 14% over three years.
The resolution is that the leakage figure is not a property of the rock. It comes from core.aquifer_reference.leakage_unconfined():
Q/V = 2T / (R^2 * Sy * ln(Rinf/R))
with T = 122.5 m2/d, Sy = 0.125 and R the radius of the store you build, defaulted to STORE_RADIUS_M = 1000. Fractional loss falls as 1/R^2 while capacity rises as R^2, so a larger well field both holds more water and loses a smaller share of it each day. The registry’s number describes a 1 km store. It is a design choice that was written down once and has since been read as a measurement.
| store radius | leakage /day | half-life | keeps 180 d | 1 yr | 2 yr | 3 yr | holds at 10 m rise |
|---|---|---|---|---|---|---|---|
| 0.5 km | 0.007137 | 97 d | 28% | 7% | 1% | 0% | 1.0 Mm3 |
| 1 km (assumed) | 0.001784 | 389 d | 73% | 52% | 27% | 14% | 3.9 Mm3 |
| 1.5 km | 0.000793 | 874 d | 87% | 75% | 56% | 42% | 8.8 Mm3 |
| 2 km | 0.000446 | 1,554 d | 92% | 85% | 72% | 61% | 15.7 Mm3 |
| 3 km | 0.000198 | 3,497 d | 96% | 93% | 87% | 80% | 35.3 Mm3 |
| 4 km | 0.000112 | 6,216 d | 98% | 96% | 92% | 89% | 62.8 Mm3 |
The T3 tier is conditional, and this is the condition. At the assumed 1 km footprint the Sherwood is a within-year store: it carries 73% from February to August, which is the seasonal job, but only 14% across three years, which is not a multi-year store by any reasonable reading. At 2 km it keeps 61% over three years and at 3 km 80%.
Design consequence. The scheme should be specified by the radius of the well field, not by a target volume. Volume follows from radius; carry-over follows from radius; and the two move in opposite directions to cost, which is the trade the costing stage will have to make.
A caution on how far to push that. The formula assumes a cylindrical mound draining radially into a uniform aquifer with a radius of influence 3x the store. At 3-4 km that idealisation is being asked to describe a well field larger than most of the compartments it would sit in, and the real limits - land, wells, and the body’s own edges - arrive before the arithmetic does. Treat 2 km as the defensible end of this table and 4 km as an illustration of the direction.
2. The Chalk holds water superbly and cannot accept it
A14, the Chalk compartment, carries leakage_per_day = 5e-05 - a half-life of 13,863 days, about 38 years. It keeps 95% of a deposit over three years, against the Sherwood’s 14% at 1 km. As a carry-over store it is in a different class entirely.
It is also nearly useless, for the reason core/model/aquifer.py was extended to capture. The Chalk here is confined, so water is accommodated elastically rather than by draining pore space, at S = 0.0052:
V = A * S * dh
On A14’s 7 km2, a 30 m head rise - already aggressive for a confined aquifer with a confining layer to keep intact - buys 1.12 Mm3. The same 30 m in unconfined sandstone with Sy two orders of magnitude larger buys a store hundreds of times bigger.
So the two candidate rocks fail in opposite directions:
| Sherwood (unconfined) | Chalk (confined) | |
|---|---|---|
| holds water | poorly - 14% at 3 yr (1 km field) | superbly - 95% at 3 yr |
| accepts water | yes - 16 Mm3 at a 2 km field | barely - 1.12 Mm3 at 30 m rise |
| limit that binds | leakage | injection pressure |
| the fix | build a bigger well field | there isn’t one here |
The Chalk’s problem is not fixable by spending more: capacity scales with the confined area, and A14 has 7 km2 of it. The Chalk is not a store for this scheme. It should be carried in the registry as a carry-over benchmark - it shows what good retention looks like - and dropped from the siting shortlist.
3. Acceptance - and the seasonal collision
The target aquifer’s natural cycle, from the only Sherwood monitoring borehole in the box:
- Chipley, 168 readings, 2010-01-18 to 2025-01-31 - roughly monthly sampling over 15 years
- peaks in February, lowest in September
- seasonal swing of monthly means: 4.8 m
3 readings were dropped as spikes (52.3, 61.1, 63.9 mAOD, each 15-30 m below every neighbour). That matters more than it sounds: keeping them turns a 4.8 m seasonal signal into a 32 m one, and the acceptance bound below is derived from exactly that number.
The wider monitoring network agrees on the timing: 29 of 47 boreholes peak in January or February, and the availability chapter puts 86% of the divertible resource in November-March.
Availability and acceptance peak together. The surplus arrives exactly when the ground is at its annual maximum, which is convenient for volume and hostile to headroom. This is the single most awkward fact in the scheme layer and it has a direct modelling consequence:
Aquifer capacity must be a seasonal series, not a constant.
run_model.pycurrently reads a staticcapacity_m3from the scenario file, so it offers full headroom in February - the month of the year when the real aquifer has the LEAST room to offer. Every injection-limited result produced before that is fixed is optimistic by an unquantified margin.
That change is scoped as the next task and is not applied in this chapter.
The acceptance rate is bounded, not modelled
An aquifer that swings 4.8 m unaided will not absorb a large injected mound quietly. That is a bound, and it is the honest best available, because nothing in 14 years of record contains an injection - not here and not anywhere in this catchment. There is no event to calibrate against, so no acceptance rate is predicted anywhere in this work. Where a number is needed, the natural amplitude is used as a ceiling and labelled as one.
4. Recovery - the ceiling nobody can reach
The aquifer layer’s standing warning applies unchanged: drainable volume is a ceiling nobody can reach. Water moves about 16 m through this rock in the 229-day surplus-to-deficit lag, so what can be recovered is set by how many wells are drilled and where, not by the size of a polygon.
Every compartment in the registry records behaves_as_one_store: false for this reason, and the practical consequence for the scheme is a hard one:
Injection and recovery must be co-located. Water injected at a well is still essentially at that well a year later. A scheme cannot inject on one side of a body and abstract from the other; it recovers from the mound it built, which is why the store radius governs everything in section 1.
This also settles the siting tension the availability chapter raised. A1 is 177 km2 and A3 is 16 km2, but neither can be worked as a whole body - both are developed as a well field of whatever radius is affordable, and A1’s polygon advantage is largely notional. A3, with 43 Mm3/yr of divertible resource on a channel 3.5 km away against A1’s 13 Mm3/yr at 5.4 km, is the better proposition on every axis that survives this chapter.
5. Compartments, as stores rather than as rock
| formation | km2 | regime | half-life | keeps 3 yr | could hold | basis | |
|---|---|---|---|---|---|---|---|
| A1 | Helsby Sandstone Formation | 177 | unconfined | 389 d | 14% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A2 | Helsby Sandstone Formation | 25 | unconfined | 389 d | 14% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A3 | Helsby Sandstone Formation | 16 | unconfined | 389 d | 14% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A5 | Upper Greensand Formation | 203 | unconfined | nan d | nan% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A6 | Upper Greensand Formation | 72 | unconfined | nan d | nan% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A7 | Upper Greensand Formation | 45 | unconfined | nan d | nan% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A12 | Carboniferous Limestone Supergroup | 21 | unconfined | nan d | nan% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A8 | Upper Greensand Formation | 39 | unconfined | nan d | nan% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A9 | Upper Greensand Formation | 32 | unconfined | nan d | nan% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A10 | Great Oolite Group | 408 | unconfined | nan d | nan% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A13 | Exeter Group | 22 | unconfined | nan d | nan% | 15.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A4 | Helsby Sandstone Formation | 2 | unconfined | 389 d | 14% | 3.0 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A11 | Great Oolite Group | 1 | unconfined | nan d | nan% | 1.7 Mm3 | 2 km well field, 10 m rise, Sy=0.125 |
| A14 | Chalk (Salisbury Plain body) | 7 | confined | 13,863 d | 95% | 1.1 Mm3 | head budget, 30 m rise, S=0.0052 |
Compartments with no leakage_per_day in the registry (the Greensand, Oolite, Carboniferous and Exeter bodies) have never had the parameter derived. They are shown with their geometric capacity and a blank carry-over, which is the correct display of unknown - not of zero. A10 in particular is 408 km2 of Great Oolite with 23 Mm3/yr of resource within 10 km, and it is untested here purely because nobody has run derive_leakage.py against it.
What this chapter licenses, and what it does not
Licensed: ranking the candidate stores against carry-over, acceptance and recovery; specifying a store by well-field radius rather than by target volume; and ruling the confined Chalk out on a stated physical ground rather than a preference.
Not licensed:
- Any injection number. There has never been an injection in this catchment’s record. Acceptance is bounded by natural amplitude and nothing here predicts a rate.
- The Sherwood’s response. One monitoring borehole, sampled monthly.
Syis a published regional value with a stated local adjustment, not a measurement at the site, and the whole of section 1 scales with it. - Radial-flow idealisation beyond ~2 km. The leakage formula assumes a uniform aquifer and a radius of influence 3x the store. Past about 2 km the well field exceeds the bodies it would sit in.
- The compartments with no leakage parameter. Five formations are carried as unknown. A10 is the significant omission and is worth deriving before the residual is fixed.
- Anything seasonal, yet. Capacity is still a constant everywhere in the model. Section 3 says why that is wrong and in which direction.