Zero-E branch derives its own temperature block - #117
Conversation
What was wrong
The temperature it read was not the air baseline. That is the part that made #112 separate from #105 rather than a repeat of it: the transpiring branch calls Reachability, since the issues asked for it firstFour routes, established by reading the callers and confirmed in the probe:
The measurementProbe built against The state the branch reports. Tair 30 °C, PPFD 900, ψ_soil 1 MPa, D_air 1.5 kPa. The branch's own leaf temperature is 39.325 °C against Tair 30, so there is a large gap to get wrong:
Two columns, two different histories, same call. Respiration was 36% low and the deficit 66% low at the worse of them, both in the direction that makes a shut leaf look cheaper than it is — the same direction #105 found, for the same physical reason (no latent cooling, so this is the hottest the leaf gets). The ProfitMax argmax moves, in both directions. Thermal cost on, PPFD 900, D_air 1.5:
At Tair 40 the closure candidate's carbon was too generous, so closure won when it should not have; correcting it hands the interior point the argmax and a higher profit. At Tair 50–55 it goes the other way — the objective is nearly flat there and the answer becomes exactly shut. Neither direction is a rounding difference. The prescribed-collar path, clamped onto the wet bound after a real solve had warmed the block:
Cost (hazard 5)This adds two transcendental blocks to a branch of a function the collar solve runs ~10³ times per solve, so it was measured rather than assumed cold. Both binaries built from their own trees, interleaved ×4 at load ~5.4, min-of-400:
The round-to-round scatter on the last three arms is wider than any difference between the arms, and the per-pair figure is dominated by the transpiring candidate that shares each iteration. Gate-off is unchanged by construction as well as by measurement: the recompute is inside Evidence and its limits
What this does not do
|
2d4e324 to
0925dad
Compare
set_leaf_states_rates_from_psi_stem's zero-transpiration branch wrote Tleaf_ but re-derived neither the Farquhar block nor the leaf-to-air deficit at it -- while ci_ is read off gamma_ and assim_colimited_ off the whole block. The transpiring branch re-derives per candidate by design, so this one inherited the last psi the optimiser probed, making the objective evaluation-order dependent. Both are derived now, before ci_ is read. Moves results on the PM path, the ProfitMax argmax among them (0.5.0 -> 0.5.1, NEWS has the table). Closes #110, #112.
0925dad to
027fe08
Compare
set_leaf_states_rates_from_psi_stem's zero-transpiration branch wrote
Tleaf_ but re-derived neither the Farquhar block nor the leaf-to-air
deficit at it -- while ci_ is read off gamma_ and assim_colimited_ off
the whole block. The transpiring branch re-derives per candidate by
design, so this one inherited the last psi the optimiser probed, making
the objective evaluation-order dependent. Both are derived now, before
ci_ is read.
Moves results on the PM path, the ProfitMax argmax among them (0.5.0 ->
0.5.1, NEWS has the table). Closes #110, #112.