Skip to content

Conversation

@sunt05
Copy link

@sunt05 sunt05 commented Jan 28, 2026

Summary

Corrects the grass albedo update formula in the daily state module. Grass has a reversed LAI-albedo relationship compared to trees: increasing LAI should decrease albedo, not increase it.

Problem

The Fortran code (suews_phys_dailystate.f95, line 502) was using the same albedo update formula for all vegetation types:

albChangeGrass = (AlbMax_Grass - AlbMin_Grass)*deltaLAIGrass

This incorrectly increases grass albedo during the growing season, contradicting the physics (dense grass canopy absorbs more light than sparse grass over bright soil/litter).

Solution

Reversed the formula for grass to correctly model the negative LAI-albedo relationship:

albChangeGrass = (AlbMin_Grass - AlbMax_Grass)*deltaLAIGrass

Impact

Annual sample simulation (1-year, 2012 London/Swindon):

  • Bulk albedo range narrows from 0.0021 to 0.0012
  • Summer: albedo decreases by ~0.0009 (correct: dense canopy less reflective)
  • Winter: albedo increases by ~0.0009 (correct: exposed soil more reflective)
  • Energy balance changes: QN +0.06 W/m², QH +0.03 W/m², QS +0.04 W/m²

See issue #1134 for detailed impact analysis and plots.

Closes #1134

Grass has a reversed LAI-albedo relationship compared to trees: increasing
LAI should decrease albedo (bright soil/litter background replaced by
absorbing canopy). The Fortran code was incorrectly using the same formula
for all vegetation types.

This fix reverses the sign in the grass albedo update formula to correctly
model the physics. Updated reference test output reflects the corrected
energy balance.

Fixes #1134

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@sunt05
Copy link
Author

sunt05 commented Jan 28, 2026

Impact analysis: 1-year sample simulation (2012, sample data based on London)

45 of 85 output variables changed; 40 unchanged. Changes are small but physically consistent with the corrected grass LAI-albedo relationship.

Bulk albedo seasonal pattern

Image
  • May-Sep (full foliage): AlbBulk decreases by ~0.0009 — old code wrongly had grass albedo at max; new code correctly places it at min (dense canopy absorbs more)
  • Nov-Dec (dormant): AlbBulk increases by ~0.0009 — sign reverses as expected (exposed bright soil/litter)
  • Annual range narrows from 0.0021 to 0.0012

Energy balance differences (daily)

Image

Monthly summary

Image

Annual mean changes

  • Kup: -0.07 W/m² (less reflection in summer)
  • QN: +0.06 W/m² (more energy absorbed)
  • QS: +0.04 W/m², peak |diff| = 2.23 W/m² (June)
  • QH: +0.03 W/m², peak |diff| = 1.87 W/m²
  • QE: +0.002 W/m²

Impact is modest for this sample site due to small grass fraction and narrow albedo range. Sites with larger grass fractions would show proportionally larger corrections.

@sunt05 sunt05 added the 4-needs-discussion Agenda item for weekly catch-up meeting label Jan 30, 2026
@MatthewPaskin
Copy link

@sunt05 Is this ready for review? We are interested to get this grass albedo behavior into some of the current model runs.

@sunt05 sunt05 requested a review from MatthewPaskin February 6, 2026 10:46
@sunt05
Copy link
Author

sunt05 commented Feb 6, 2026

@MatthewPaskin yes, please go ahead with further testing and then merge it. Note the sample output will be changed, so it’s good you can pick this up with more meticulous checking. Thank you!

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

Labels

4-needs-discussion Agenda item for weekly catch-up meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Grass albedo update uses wrong LAI-albedo relationship in daily state

2 participants