[PROBE: energy] Detect cancelling errors in hourly surface energy budgets - #16
Open
cehw wants to merge 2 commits into
Open
[PROBE: energy] Detect cancelling errors in hourly surface energy budgets#16cehw wants to merge 2 commits into
cehw wants to merge 2 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #15
What this probe asserts
A model with +20 W m-2 of surface-energy residual by day and -20 W m-2 by night passes the existing signed cumulative
energy_closure. This probe catches that temporal cancellation by requiring every contiguous day/night block to satisfyThe seeded hourly case contains two spinup days and fourteen scored days, starting at 06:00 local-solar time so all 28 scored blocks are complete. The new
energy_closure_by_phasereuses the existing window/segment machinery; the cumulative criterion is unchanged.reference_couplednow declares its verified PT1H support, andreference_diurnal_biaschanges only H using the current timestamp.The boundary is a snow-free, zero-capacity bare skin with G at the actual soil surface. Negative turbulent fluxes are permitted. Boundary compatibility needs adapter documentation/review; passing does not establish realistic partitioning, thermal inertia, or component accuracy.
Discrimination
reference_coupledreference_diurnal_biasenergy_closure_by_phaseBoth outcomes hold for the five declared gate seeds. An additional 20-seed check through the real adapter subprocess path found: positive control 20/20 passes, temporal-bias control 20/20 fails all 28 blocks, and the unchanged cumulative criterion still passes the bias control 20/20. Unit regressions also cover cancellation within a phase and weak-radiation allowances.
Validation
ht validate: 17 probes, 30 models.pytest -q: 233 passed.ht gate: all 17 probes separate their declared references.ht verify-adapter --model <reference> --probe energy/surface-energy-closure: both references pass with 384 rows.ht run --model <model> --probe energy/surface-energy-closure --gate-seeds --csv models/result.csvarchived all five existing evaluated models as INCOMPLETE for missing hfls/hfss/hfg; Google and dhbv2 additionally declare no PT1H support. No physical-violation claim is made for them.README, roadmap, contributor credit, the three-language site/flowchart and the probe-writing reference are synchronized. The focused tests verify deterministic forcing, complete blocks, annotation stripping, the minimum window, tolerance boundaries and spinup exclusion.
Checklist
acceptedproposal issue and this PR closes itht validatepassesht gate --probe energy/surface-energy-closurepassesprobe.yaml