Slab canopy Stage A: photosynthesis-coupled canopy conductance#401
Draft
xkykai wants to merge 1 commit into
Draft
Slab canopy Stage A: photosynthesis-coupled canopy conductance#401xkykai wants to merge 1 commit into
xkykai wants to merge 1 commit into
Conversation
Introduce a single-source (big-leaf) vegetation surface as a new specific-humidity formulation, `CanopyConductanceHumidity`, the vegetation analogue of `SkinHumidity`: it puts a canopy stomatal conductance `g_c = LAI·gₛ` in series with the aerodynamic conductance and solves the same surface vapor-flux balance for `qˢ` inside the Monin–Obukhov fixed point. This is the dominant lever on the Bowen ratio — the quantity an atmosphere-coupled LES most needs from the land (LAND_TRAINING_AND_CANOPY_PLAN.md, Part II). The stomatal conductance is the Medlyn (2011) optimality conductance driven by Farquhar (1980) C3 photosynthesis, solved as a coupled fixed point on the intercellular CO₂. Grounded in ClimaLand (Deck et al. 2026, App. C–E): the `r_stomata + r_ae` series network, Farquhar co-limitation, and the molar Medlyn form with grass defaults (g₁ = 166 √Pa, Vcmax25 = 5e-5). Following the plan's differentiability discipline, `min(A_c, A_j)` is the smooth quadratic (θ) minimum and every `√`/division is guarded, so the whole path is Enzyme/Reactant-friendly and allocation-free. The formulation runs live inside the coupled flux solver via the existing `SkinHumidity` seam, driven by per-cell leaf-to-air VPD, leaf temperature (= skin temperature Tₛ, single-source), and the moisture-stress factor β(𝒮) pulled from the ground hydrology exactly as `CriticalSaturation` does. Absorbed PAR and CO₂ are prescribed scalars because the radiation state is not carried to the humidity call site — no changes to shared ocean/ice flux code or the land exchanger are needed. Because the canopy vapor flux is transpiration, the existing flux → evaporation → water-storage plumbing routes it as a sink on the ground water store. Deferred to Stage B (documented in the source): per-cell absorbed-PAR fields, a prognostic canopy temperature, and canopy-height roughness/displacement. Tests: Farquhar–Medlyn physics unit tests (light/CO₂/VPD/stress responses, type stability) and a coupled single-column test showing the canopy resistance lowers latent heat vs a saturated bare surface and responds to LAI and stress. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
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.
Summary
First cut of the slab-canopy (Stage A) vegetation model from
LAND_TRAINING_AND_CANOPY_PLAN.md(Part II) — a single-source, resistance-only big-leaf canopy exposed as a new specific-humidity formulation,CanopyConductanceHumidity. It is the vegetation analogue ofSkinHumidity: a canopy stomatal conductanceg_c = LAI·gₛin series with the aerodynamic conductance, solving the same surface vapor-flux balance forqˢinside the Monin–Obukhov fixed point.This targets the dominant lever on the Bowen ratio — the quantity an atmosphere-coupled LES most needs from the land.
Per the plan's §10.3 decision, this ships the A1 scientific default: Medlyn (2011) optimality conductance coupled to Farquhar (1980) C3 photosynthesis (not the Jarvis bootstrap).
What's here
FarquharPhotosynthesis— C3 assimilation with Arrhenius temperature scaling and a smooth (θ-quadratic)min(A_c, A_j)co-limitation.MedlynConductance— molar optimality conductancegₛ = g₀ + 1.6(1 + g₁/√VPD)·Aₙ/cₐ.stomatal_conductance(...)— coupled Farquhar–Medlyn solve via a short, damped, allocation-free fixed point on intercellular CO₂ (GPU- and AD-safe; guarded√/divisions).CanopyConductanceHumidity— slots into the existing humidity formulation seam and runs the solve live inside the coupled flux solver, driven by per-cell leaf-to-air VPD, leaf temperature (= skin temperature, single-source), and the moisture-stress factorβ(𝒮)pulled from the ground hydrology exactly asCriticalSaturationdoes.beer_lambert_absorbed_fraction— helper to derive absorbed PAR from a downwelling PAR flux.Defaults and equations are grounded in ClimaLand (Deck et al. 2026, JAMES, App. C–E): the
r_stomata + r_aeseries network, Farquhar co-limitation, and the molar Medlyn form with US-Var grass values (g₁ = 166 √Pa,Vcmax25 = 5e-5).Design notes / scope
CanopySkinTemperatureR_n = H + LE solve), and canopy-height roughness + displacement.Testing
test/test_canopy_conductance.jl(auto-discovered by the runner):g₀; intercellular CO₂ stays in(Γ*, cₐ); type stability.All 30 assertions pass;
test/test_slab_land.jlstill passes (no regression).🤖 Generated with Claude Code