Skip to content

refactor(LIU_AN_ET): canopy scaling fixes + full documentation#81

Open
braghiere wants to merge 1 commit into
mainfrom
fix/canopy-scaling-review
Open

refactor(LIU_AN_ET): canopy scaling fixes + full documentation#81
braghiere wants to merge 1 commit into
mainfrom
fix/canopy-scaling-review

Conversation

@braghiere

Copy link
Copy Markdown
Contributor

Issues:

  • canopy_scale denominator: /(VegK) -> /(VegKclumping) Beer's law integral requires 1/(kOmega), not 1/k; de Pury & Farquhar (1997) PCE 20:537; Bonan (2019) Ch.14 Eq.14.6
  • Introduce PAR_leaf = PAR*(1-refl)kOmega (leaf-level) replacing PAR = (1-refl)(1-exp(-kOmegaL)) (canopy APAR); keeps a2 (RuBP-limited) at leaf level, consistent with a1 (Rubisco-limited)
  • J uses PAR_leaf instead of canopy APAR; single canopy_scale applied at output

Documentation pass (no numerical changes):

  • Physical constants (rho_air, Cp_air, eps_mol) extracted and named
  • All magic numbers explained with units and references: 1.6 (H2O/CO2 diffusivity ratio; Jones 1992), 0.02405 (molar volume of air at 20 C; mol->m/s conversion), 1.26 (Priestley-Taylor alpha; Priestley & Taylor 1972), kai1=0.9 / kai2=0.3 (FvCB curvature/quantum yield), 12e-6 (g C per umol CO2), 86400 s/day, 209 mmol/mol O2
  • Variable declarations annotated with units and physical meaning
  • Section headers for FvCB, canopy scaling, Vcmax/Jmax, C3/C4, PM
  • References: Farquhar et al. 1980, Bernacchi et al. 2001, Leuning 1997, Medlyn et al. 2011, Monteith 1965, Bonan 2019

Issues:
- canopy_scale denominator: /(VegK) -> /(VegK*clumping)
  Beer's law integral requires 1/(k*Omega), not 1/k;
  de Pury & Farquhar (1997) PCE 20:537; Bonan (2019) Ch.14 Eq.14.6
- Introduce PAR_leaf = PAR*(1-refl)*k*Omega (leaf-level) replacing
  PAR *= (1-refl)*(1-exp(-k*Omega*L)) (canopy APAR);
  keeps a2 (RuBP-limited) at leaf level, consistent with a1 (Rubisco-limited)
- J uses PAR_leaf instead of canopy APAR; single canopy_scale applied at output

Documentation pass (no numerical changes):
- Physical constants (rho_air, Cp_air, eps_mol) extracted and named
- All magic numbers explained with units and references:
  1.6 (H2O/CO2 diffusivity ratio; Jones 1992),
  0.02405 (molar volume of air at 20 C; mol->m/s conversion),
  1.26 (Priestley-Taylor alpha; Priestley & Taylor 1972),
  kai1=0.9 / kai2=0.3 (FvCB curvature/quantum yield),
  12e-6 (g C per umol CO2), 86400 s/day, 209 mmol/mol O2
- Variable declarations annotated with units and physical meaning
- Section headers for FvCB, canopy scaling, Vcmax/Jmax, C3/C4, PM
- References: Farquhar et al. 1980, Bernacchi et al. 2001,
  Leuning 1997, Medlyn et al. 2011, Monteith 1965, Bonan 2019
@ebilir

ebilir commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

I looked this over and it checks out for me!

I want to flag a philosophical difference between the two-leaf and the big leaf formulations in terms of where clumping goes in PAR_leaf and canopy_scale-- both work as far as PAR_leaf×canopy_scale=Total APAR, but might have slightly different biases. I like what Renato's put here, I think it's most consistent with the transpiration formulation, and with data constraints we currently have. But we might want to chat further about the tradeoffs so that if we ever want to switch these up to better engage things like hyperspectral data we have more intuition here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants