How the coverage explorer was built, every number it uses, and what two independent reviewers said is wrong with it.
| Reservoir | Interconnection | Surface area | Evaporation | Dam generation shape | Surface management |
|---|---|---|---|---|---|
| Lake Mead Hoover Dam | 2,080 MW 4,000 GWh/yr, CF 0.22 | 76,357 ac MEASURED: annual mean of daily surface area 2024-2026, from Reclamation daily elevation and storage with area taken as the derivative of a fitted hypsometry V = a(h-h0)^b (analysis/fetch_basin_daily.py). Supersedes our own Sentinel-2 composite, which reads low at every reservoir because a 30 m water mask loses narrow canyon arms and shadowed banks. published: 83,634 ac (-9%) — Reclamation HDB 2017-2021 average surface area (LCR Evaporation Report 2023, Table 7) | 6.22 ft/yr USGS DIRECT FLUX (eddy covariance + energy balance, Moreo & Swancar; Earp & Moreo 2021): 1,896 mm/yr = 6.22 ft/yr. This is a measured DEPTH, independent of surface area, so it is valid to apply to a separately-measured area. Reclamation HDB 2017-2021 implies 6.21 ft/yr over their larger area, which agrees. Corroborated against the two later USGS data releases (2015-2020 and 2021-2023, ScienceBase doi:10.5066/P99GWPPG and doi:10.5066/P15HFPHB), which extend the record from 2019 to 2023. Aggregated the way OFR 2021-1022 aggregates (most probable column, unweighted mean of complete calendar years), 8 qualifying years give 6.25 ft/yr, 0.5% above the published depth and well inside the 5-8% flux uncertainty already carried. 2019 is held out because its own latent-heat flux implies 33% more evaporation than it reports (7.17 against 5.39 ft measured, the gap taken relative to the reported figure), and 6 of its 12 months are flagged estimated. The published depth is kept because a peer-reviewed OFR value is stronger provenance than a mean we recompute off a data release; see outputs/usgs_mead_evap.json (analysis/usgs_mead_evap.py). | MEASURED daily release (Reclamation, 2015-2026 per-calendar-day mean) shaping the seasonal and day-to-day pattern; within-day shape still modelled as load-following, since no public sub-daily tailrace gage exists here. | NPS Lake Mead National Recreation Area |
| Lake Powell Glen Canyon Dam | 1,320 MW 2,777 GWh/yr, CF 0.24 | 75,389 ac MEASURED: annual mean of daily surface area 2024-2026, from Reclamation daily elevation and storage with area taken as the derivative of a fitted hypsometry V = a(h-h0)^b (analysis/fetch_basin_daily.py). Supersedes our own Sentinel-2 composite, which reads low at every reservoir because a 30 m water mask loses narrow canyon arms and shadowed banks. published: 57,342 ac (+31%) — Sentinel-2 MNDWI summer water extent, 2022-2026 mean (analysis/ee_reservoirs.py) | 5.83 ft/yr ~70 in/yr, Reclamation/DRI measured programme (coloradoriverscience.org); our gridMET open-water screen gives 5.4-6.4 ft/yr | MEASURED: USGS 09380000 15-min release below Glen Canyon, 2015, aggregated hourly | NPS Glen Canyon National Recreation Area |
| Lake Mohave Davis Dam | 240 MW 1,148 GWh/yr, CF 0.55 | 25,665 ac MEASURED: Sentinel-2 MNDWI summer water extent, 2024-2026 mean. Retained here because this reservoir is held within a few feet, so its hypsometry cannot be recovered from the elevation record. published: 27,022 ac (-5%) — Reclamation LCRAS 2017-2021 average (LCR Evaporation Report 2023, Table 9) | 5.64 ft/yr USGS DIRECT FLUX (eddy covariance, same programme as Lake Mead): 1,718 mm/yr = 5.64 ft/yr. A measured depth, area-independent. Supersedes the LCRAS area-quotient (140,735 AF / 27,022 ac = 5.21 ft/yr) which is NOT area-independent and should not be applied to a different area. | MEASURED daily release (Reclamation, 2015-2026 per-calendar-day mean) shaping the seasonal and day-to-day pattern; within-day shape still modelled as load-following, since no public sub-daily tailrace gage exists here. | NPS Lake Mead National Recreation Area |
| Lake Havasu Parker Dam | 120 MW 457 GWh/yr, CF 0.43 | 15,330 ac MEASURED: Sentinel-2 MNDWI summer water extent, 2024-2026 mean. Retained here because this reservoir is held within a few feet, so its hypsometry cannot be recovered from the elevation record. published: 18,864 ac (-19%) — Reclamation LCRAS 2017-2021 average (LCR Evaporation Report 2023, Table 10) | 7.52 ft/yr DERIVED from Reclamation's LCRAS accounting, calibrated against measured flux. There is no Lake Havasu flux station and USGS confirmed (2026-08-10) that one is only in planning, so the depth cannot be measured directly. LCRAS reports Mead, Mohave and Havasu on one convention and two of those three have eddy-covariance depths, so the convention is calibrated where it is checkable. Reclamation's published areas match the mean of their own daily record to 0.2% at Mead and 0.5% at Mohave, so the denominator is sound; the quotient nonetheless runs -6.8% and -5.8% below measured flux at the two lakes, and the gap is precipitation, which consumptive-use accounting nets out. At Mead the mean gap is 0.42 ft/yr against 0.45 ft/yr of rain. The correction is therefore additive and physical rather than a fitted factor. Lake Havasu's evaporation depth is 7.52 ft/yr, bracketed 7.05-7.99. The accounting volume over Reclamation's own area gives 7.00 ft/yr net of rain; adding the 0.43 ft/yr that falls on the lake gives 7.43 gross, and the calibration's own bias against measured flux at Mead and Mohave is -0.09 ft/yr with a per-year spread of 0.23. This supersedes an asserted 5.2-7.4 bracket. A higher depth means more water saved per acre covered, so this raises Lake Havasu's standing rather than lowering it. Havasu is already the reservoir this work rates highest, so the correction cuts against our own conclusion and is reported for that reason. See outputs/havasu_evap_bracket.json (analysis/havasu_evap_bracket.py). | synthetic load-following (no public sub-daily tailrace gage below Parker) | BLM / Arizona State Parks (NOT a National Park Service unit) |
| Flaming Gorge Flaming Gorge Dam | 152 MW 457 GWh/yr, CF 0.34 | 38,616 ac MEASURED: annual mean of daily surface area 2024-2026, from Reclamation daily elevation and storage with area taken as the derivative of a fitted hypsometry V = a(h-h0)^b (analysis/fetch_basin_daily.py). Supersedes our own Sentinel-2 composite, which reads low at every reservoir because a 30 m water mask loses narrow canyon arms and shadowed banks. published: 42,020 ac (-8%) — Reclamation: surface area at normal water-surface elevation | 3.3 ft/yr (screening estimate, not measured) SCREENING ESTIMATE (elevation ~6,040 ft, cool high-desert climate). Not measured: Upper Basin reservoir evaporation is only now being instrumented under the UCRC/Reclamation Reservoir Evaporation Project. | MEASURED daily release (Reclamation, 2015-2026 per-calendar-day mean) shaping the seasonal and day-to-day pattern; within-day shape still modelled as load-following, since no public sub-daily tailrace gage exists here. | USFS Flaming Gorge National Recreation Area |
| Navajo Reservoir Navajo Dam | 30 MW 90 GWh/yr, CF 0.34 | 11,251 ac MEASURED: annual mean of daily surface area 2024-2026, from Reclamation daily elevation and storage with area taken as the derivative of a fitted hypsometry V = a(h-h0)^b (analysis/fetch_basin_daily.py). Supersedes our own Sentinel-2 composite, which reads low at every reservoir because a 30 m water mask loses narrow canyon arms and shadowed banks. published: 15,610 ac (-28%) — Reclamation: surface area when filled | 3.6 ft/yr (screening estimate, not measured) SCREENING ESTIMATE (elevation ~6,085 ft). Not measured; part of the UCRC/Reclamation Upper Basin evaporation study. | MEASURED daily release (Reclamation, 2015-2026 per-calendar-day mean) shaping the seasonal and day-to-day pattern; within-day shape still modelled as load-following, since no public sub-daily tailrace gage exists here. | New Mexico / Colorado state parks |
| Blue Mesa Blue Mesa Dam | 86 MW 239 GWh/yr, CF 0.32 | 7,064 ac MEASURED: annual mean of daily surface area 2024-2026, from Reclamation daily elevation and storage with area taken as the derivative of a fitted hypsometry V = a(h-h0)^b (analysis/fetch_basin_daily.py). Supersedes our own Sentinel-2 composite, which reads low at every reservoir because a 30 m water mask loses narrow canyon arms and shadowed banks. published: 9,180 ac (-23%) — Reclamation: surface area at maximum water-surface elevation | 2.8 ft/yr (screening estimate, not measured) SCREENING ESTIMATE (elevation ~7,520 ft, coldest reservoir in the set). Not measured; part of the UCRC/Reclamation Upper Basin evaporation study. | MEASURED daily release (Reclamation, 2015-2026 per-calendar-day mean) shaping the seasonal and day-to-day pattern; within-day shape still modelled as load-following, since no public sub-daily tailrace gage exists here. | NPS Curecanti National Recreation Area |
Measured, not quoted: a summer Sentinel-2 composite, water picked out by MNDWI at 30 m, averaged over 2024–2026, clipped to each reservoir's own footprint rather than a bounding box (Lake Mead's box otherwise swallows the head of Lake Mohave below Hoover Dam). Published figures mix conventions — Reclamation five-year operating averages in the Lower Basin, full pool in the Upper Basin — and full pool badly overstates reservoirs drawn down for years. Both are shown above.
Lake Mead (6.22 ft/yr) and Lake Mohave (5.64 ft/yr) are USGS direct eddy-covariance flux measurements: measured depths, independent of surface area, so applying them to a separately measured area is valid. The Mead record has since been extended past 2019, and the gauged years are set out below: they sit inside the flux uncertainty, so they confirm the rate rather than change it. Mohave has not been remeasured since 2019. Lake Powell's ~70 in/yr is likewise a measured flux. Lake Havasu has no flux station, and USGS confirms one is only in planning, so its depth is derived: Reclamation's LCRAS accounting covers Mead, Mohave and Havasu on a single convention and two of those three have measured flux, so the convention is calibrated where it can be checked. Lake Havasu's evaporation depth is 7.52 ft/yr, bracketed 7.05-7.99. The accounting volume over Reclamation's own area gives 7.00 ft/yr net of rain; adding the 0.43 ft/yr that falls on the lake gives 7.43 gross, and the calibration's own bias against measured flux at Mead and Mohave is -0.09 ft/yr with a per-year spread of 0.23. That replaces an asserted 5.2-7.4 ft/yr bracket 2.4 times wider, whose ends were two different readings of the same quotient rather than a measured range. Reclamation's alternative HDB figure for Havasu still uses 1950s pan coefficients and runs about 35% high by their own comparison. Upper Basin rates are screening estimates; those three reservoirs are only now being instrumented by Reclamation and the Upper Colorado River Commission.
| Year | Measured | Corrected (most probable) | EBR-adjusted | Months estimated | Energy closure | In mean |
|---|---|---|---|---|---|---|
| 2015 | 6.55 | 6.43 | 6.30 | — | 1.000 | in |
| 2016 | 6.78 | 6.44 | 6.12 | — | 0.999 | in |
| 2017 | 6.37 | 6.37 | 6.31 | — | 0.997 | in |
| 2018 | 6.20 | 6.20 | 6.13 | — | 1.001 | in |
| 2019 | 5.39 | 4.94 | 4.45 | 6 | 1.330 | excluded |
| 2020 | 6.28 | 6.28 | 6.28 | — | 1.000 | in |
| 2021 | 5.97 | 6.10 | 6.22 | 1 | 1.001 | in |
| 2022 | 5.99 | 6.32 | 6.66 | — | 1.002 | in |
| 2023 | 5.93 | 5.84 | 5.76 | 3 | 1.001 | in |
| 8-year mean | 6.26 | 6.25 | 6.22 | — | — | — |
Feet per year, from USGS eddy covariance at station 360500114465601 with an energy-balance correction. The model uses 6.22 ft/yr (Earp & Moreo 2021, OFR 2021-1022 (2011-2018 annual table), 1,896 mm/yr); the 8 qualifying years above average 6.25 ft/yr corrected, a difference of 0.5% against a flux uncertainty of 8%. Sources: doi:10.5066/P99GWPPG (2015–2020) and doi:10.5066/P15HFPHB (2021–2023).
Which column, and which years. Most probable. The OFR treats evaporation from measured latent-heat flux as a probable minimum and the energy-balance-closed value as a probable maximum, and states that 'most probable evaporation represents the average between minimum and maximum evaporation and is used for all monthly calculations in this study' (p. 17). That is the release's 'Corrected (most probable) evaporation' column. Unweighted mean of complete calendar years. The OFR's own annual table (table 8) runs January 2011 through December 2018 and reports the mean of those eight years; the partial years at either end of its record, 2010 and 2019, are excluded rather than scaled up. Years containing gap-filled months are kept at full weight, as gap filling is part of the published method: the OFR carries 2015 and 2016 at full weight despite multi-week outages in both. One test is ours and is NOT part of the OFR's method: a complete year is dropped only if the evaporation it reports disagrees with the latent-heat flux it reports by more than 5%. USGS prescribe no such rule and publish 2019 without qualification beyond its estimated-data flags. We add it because the two columns are two presentations of one measurement, so a disagreement of that size means at least one of them is unreliable. Which one we cannot say from here: both are outputs of a processing chain and the release does not expose enough to attribute the error. The alternative is to average a year the release contradicts itself about. The threshold is ours too, and the table below shows every year's ratio so a reader can set it differently. The energy-closure column above is the depth implied by the year’s own latent-heat flux divided by the depth it reports; every sound year in the record closes to better than 0.3%. 2019 is excluded: its own latent-heat flux implies 33% more evaporation than it reports (7.17 against 5.39 ft measured, the gap taken relative to the reported figure), and 6 of its 12 months are flagged estimated. Keeping it would pull the mean to 6.10 ft/yr on the strength of one year the release contradicts itself about. Method confirmed by USGS (Geoffrey Moret) personal communication, 2026-08-12, naming OFR 2021-1022 as the method used for the final Colorado River basin numbers and leaving the weighting to us.
| Share of annual, % | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Measured (USGS, Mead) | 5.0 | 4.8 | 5.4 | 7.1 | 9.2 | 10.7 | 10.8 | 11.0 | 10.8 | 9.7 | 8.7 | 6.9 |
| Penman, no heat storage | 4.3 | 5.1 | 7.3 | 9.5 | 11.3 | 12.9 | 12.7 | 11.0 | 9.1 | 7.5 | 5.3 | 4.0 |
The measured record peaks in month 8. A weather-driven Penman calculation of the same lake peaks in month 6, because it carries no heat-storage term: the lake spends spring storing energy and releases it in autumn, so evaporation lags radiation. Phase is exactly what a covariance term depends on, which is why the measured shape is used and the Penman shape is carried only as a check.
| Reservoir | Term, measured shape (%) | Term, Penman shape (%) | Worst single year (%) | Area swing 2024 (%) |
|---|---|---|---|---|
| Lake Mead | -0.40 | -0.28 | 1.13 | 7.1 |
| Lake Powell | +0.99 | +1.05 | 4.26 | 21.4 |
| Lake Mohave | +0.00 | +0.00 | 0.01 | 0.1 |
| Lake Havasu | static area, term zero by construction | |||
| Flaming Gorge | +0.46 | +0.70 | 2.17 | 3.6 |
| Navajo Reservoir | +0.85 | +1.85 | 4.45 | 12.6 |
| Blue Mesa | +1.36 | +2.69 | 5.86 | 18.2 |
Weighted by each reservoir's own evaporation volume, ignoring within-year seasonality moves basin evaporation by +0.3%. The largest per-reservoir mean is +1.4% at Blue Mesa, and the worst single year in the record is 5.9% at Blue Mesa. Both seasonal shapes agree on the direction at every reservoir, so the result does not rest on which shape is right. The term is positive at every reservoir except Lake Mead: the surface is largest in summer when the rate is highest, so an annual product UNDERSTATES evaporation there. Understating evaporation understates the water floating solar could save, which raises its cost per acre-foot. That is the direction that flatters our own conclusion, which is why it is stated rather than buried. At +0.3% it is far inside the flux and area uncertainties the model already carries. Whether it reorders the reservoirs is not something the size of the term settles on its own: the closest two are only 1.8% apart in cost per acre-foot against a largest term of 1.4%. Applying every term and re-sorting leaves the order unchanged, so the ranking stands.
| Lake | Period EBR | Mean closure spread (%) | Worst year (%) | Model sigma (%) | Source |
|---|---|---|---|---|---|
| Lake Mead | 0.98 | 2.1 | 5.3 | 5.0 | computed from the ScienceBase releases (all three columns published) |
| Lake Mohave | 0.82 | 10.8 | 22.1 | 10.8 | OFR 2021-1022 table 9; no data release covers 2014-2018 |
Closure uncertainty at Lake Mohave averages 10.8% of its annual evaporation against 2.1% at Lake Mead, 5 times as much, because a larger share of Mohave's measured turbulent flux comes off the surrounding desert (period energy balance ratio 0.82 against 0.98). The model now carries 10.8% at Mohave rather than the 5% it used to share with Mead. The sampled sigmas differ by less than that 5x, because Mead's is held at 5%: the report's own stated measurement uncertainty of 5-7% is wider than the 2.1% closure spread measured there, so it binds instead. At Mohave closure is the wider of the two and binds. Lake Mohave’s figures are transcribed from the report rather than computed from a data release, so the transcription is checked twice. That establishes we copied the right table correctly, not that the report is right: nothing here can audit USGS’s own numbers, and a Mohave data release covering 2014–2018 would be needed for that. Within a rounding tolerance of one percentage point, it reproduces the period means the report prints (1531, 1718, 1905 mm against 1531, 1718, 1905 mm) and the range the report quotes in words, 1.0–22.1% against 1–22%.
Real water polygons from OpenStreetMap, simplified. Drawn at full pool, so they show each reservoir's shape rather than today's water level — Lake Powell in particular is far smaller now than its outline suggests. Its water surface is 56,225 acres on 19 August 2026, 53% below the same day in 2019 and 35% of full pool, from the Reclamation daily record. The shaded panel band is not drawn by eye: each polygon is scanlined so the band's intersection with the water is exactly the stated share of the reservoir's area, verified to within a quarter of a percentage point against an independent raster.
Every capital cost is anchored to a real deployment or a published quote, never an estimate. Shade balls are Los Angeles's actual 2015 project ($34.5M over 175 acres, 96 million balls, ten-year life). The floating-cover figure is the same utility's own quote for the same reservoir ($250M over 175 acres). A research pass had estimated floating covers at $140,000 per acre, ten times too low, which would have inverted the ranking. Options are annualised at 7% over their own service lives; dividing undiscounted lifetime totals, as that pass did, understates capital-heavy long-lived options roughly threefold.
Findings both reviewers reached independently, in substance as written:
A third round of review, run after the fixes above, raised these:
A final round reviewed the published pages rather than the model. One reviewer returned do not show. Three findings were correct and are now fixed:
A second pass over the corrected pages found the fixes correct but caught a larger problem underneath them:
An eighth round attacked the newest and boldest claim, that reservoir solar fails on scale as well as on cost, and the correction that had just made the paper's favourite reservoir look better. It found something in the second that seven previous rounds would have been right to look for.
A general point this round makes better than any of the previous seven. The correction that looked most like good news was the one that needed most checking, and it got the least, because it arrived with an authoritative source attached. Every other correction here has cut against the technology and been scrutinised accordingly.
A seventh round reviewed the new material specifically, since replacing every surface area and reshaping dam output at six reservoirs had not been looked at by anyone. All four slices returned unsound, and the most serious finding was not about the physics.
Two criticisms did not survive checking. The wind conversion was called inconsistent: the code multiplies by 3.6 and then divides by 3.6, which looks wrong but round-trips exactly to the standard 10 m to 2 m factor of 0.748. And bank storage was called a calibrated free parameter introduced to move the residual toward the expected answer; it is a quantity Reclamation computes and publishes daily, and it was applied without any tuning.
The largest correction came from a question, not a review round. Mike asked why the water side of the model ran on annual averages when the energy side ran hourly. It did, and closing that gap turned up something bigger than the resolution itself.
A sixth round asked four questions none of the previous five had. The most productive was the simplest: five rounds had attacked what this work says floating solar cannot do, and not one had examined what it says floating solar should do. Both reviewers went straight at it and both were right.
What this round did not find is also worth saying: no error of arithmetic, no wrong number in the water analysis, and no challenge to the coverage bounds that survived checking. Six rounds in, the things still being found are about what the work claims rather than what it computes.
A fifth round changed tactics. Four rounds of the same four questions had flattened out, so this one attacked from four angles none of them used: a hydroclimatologist rather than a code reviewer, an advocate trying to show the negative conclusion was assumed rather than found, a reproducibility audit, and a pure units-and-dimensions check. The units check came back clean. The other three did not, and the advocate's angle produced the most useful criticism of the whole exercise.
One finding did not survive checking: that cost per acre-foot divides gross cost by water saved and ignores power revenue, which would guarantee the answer. It nets revenue explicitly, one line above the division. Being pushed from the opposite direction was still the most valuable round of the five, because every earlier round asked whether the negative result was correct and none asked whether it had been made inevitable.
A fourth pass returned two critical findings. One was real, one was not, and the difference is worth showing because it is the first round where checking a finding mattered more than acting on it.
Three of the four review slices no longer return critical findings that survive checking. The remaining criticism is about framing rather than arithmetic: that a cost ranking is being asked to carry an investability conclusion. That is a fair caution and the capital page now states its own limits, but it is a difference of emphasis rather than an error.
A third pass, again told what the first two had fixed and asked explicitly to say so if it found nothing rather than manufacture a finding, still found four. Two of them were the most substantive of any round:
A second end-to-end pass, run after those fixes and told what had changed so it would not re-litigate them, found four more. One changed a published number:
One earlier finding was itself wrong and worth recording. A reviewer said the model's own metadata still listed a parameter we had deleted. It did. The parameter was gone from the code but the published file had not been regenerated, so the reviewer was reading a stale artefact and was right about what it said. Fixing source without re-running output has now caused three separate errors in this project.
A final end-to-end pass reviewed the whole chain from satellite imagery to published sentence, in four slices across both vendors. Every slice returned unsound. Four findings were real:
One criticism did not survive checking: a reviewer argued the price shape-transfer is invalid because a multiplicative ratio breaks down for a variable that crosses zero. That is true in general and worth taking seriously, but the hourly means used here are positive at every hour of the day, and the resulting ratios run 0.54 to 1.18 and 0.59 to 1.79 with no sign changes.
The strongest counterargument they raised, which we think is fair: if the federal government funds these arrays as drought infrastructure rather than as a merchant energy play, then price nodes, transmission access and cost of capital all stop being the binding questions, and the institutional gates can be legislated away. That is a policy scenario this model does not represent.
Everything above is reproducible from public data. No private or licensed inputs.