Closed form is prescribed-temperature only - #121
Conversation
What settled itThe issue offered three options and said option 3 (gate it) "is cheap and honest and may be the right answer". It is — but the measurement changes the framing from drift to wrong answer, and it disqualifies the mechanism the header points at as its safety net. Closed form against a 4000-point argmax of the exact TF24 objective, single layer with the collar at zero (matching the header's own limitation), PPFD 900: Gate ON:
Gate OFF (the accuracy the header claims, and gets):
Two things follow. 1. 2. The sign is consistent and explains itself. The closed form divides by Why not repair it insteadThe substitution is a rename off the gate and is not one on it. The USO relation needs Working through the issue's option 2 (linearise But Option 1 (one Picard pass over The change
Tests
677 C++ checks, 0 failures. Both golden files bit-identical. Interaction with #120#120 (temperature-dependent longwave) changes PM-path leaf temperatures, so the exact percentages above shift once it lands. The conclusion does not — the error is driven by the deficit ratio, not by the absolute temperature — and after this PR the path refuses anyway, so the numbers are historical rather than load-bearing. This branch is cut from master, i.e. pre-#120. |
Its four deficits divided by atm_vpd_ where #93 moved the live model to vpd_leaf_. All four now read vpd_leaf_, which off the energy-balance path IS atm_vpd_ exactly, so no number moves and the drift is gone by construction. On that path both entry points now refuse: the deficit depends on the leaf temperature, which depends on the transpiration they solve for, so the form is not closed -- and the error, up to 178% in assimilation against a 4000-point argmax, passes within_guard. Dormant header, nothing calls it by default; both golden files bit-identical. Closes #116.
8f7e9e3 to
65b2b22
Compare
|
Renumbered 0.5.4 → 0.5.5 (patch), sequencing after #120. This one genuinely is a patch: no numbers move, and the header it touches is dormant. |
Its four deficits divided by atm_vpd_ where #93 moved the live model to
vpd_leaf_. All four now read vpd_leaf_, which off the energy-balance path
IS atm_vpd_ exactly, so no number moves and the drift is gone by
construction. On that path both entry points now refuse: the deficit
depends on the leaf temperature, which depends on the transpiration they
solve for, so the form is not closed -- and the error, up to 178% in
assimilation against a 4000-point argmax, passes within_guard.
Dormant header, nothing calls it by default; both golden files
bit-identical. Closes #116.