How to calculate crop yield (tonnes/ha) simulated by CLM5?

Qi Ran

Qi Ran
New Member
What version of the code are you using?
CESM2.2 (CLM5, CAM6-chem/MOSAIC)
Composet: FCnudged

Have you made any changes to files in the source tree?
./xmlchange CLM_BLDNML_OPTS="-bgc bgc -crop" #turn on BGC and crop model
user_nl_cam: Nudge_Model =.false.
user_nl_clm: use_ozone = .true. #Turn on ozone damage

Describe every step you took leading up to the problem:
  • I output the variable GRAINC_TO_FOOD at monthly frequency
  • I then post-process the output to calculate annual crop yield (tonnes/ha)
My calculation steps are:
1. Convert monthly mean flux (GRAINC_TO_FOOD) to annual accumulated grain carbon:
  • For each month:
    Screenshot 2026-04-16 at 22.39.08.png
Δtm is seconds in month, and crop_frac represents the fraction (%) of cropland within the grid cell. "0.01" is unit conversion factor from g/m2 to tonnes/ha.
According to the CLM documentation (Section 2.26.2.4.4, Harvest), crop yield is calculated as:
Screenshot 2026-04-16 at 22.45.35.png
I think the unit for this calculation method is g/m2.

Describe your problem or question:
  1. Should crop fraction (PCT_LANDUNIT) be applied in yield calculation?
    • Or is GRAINC_TO_FOOD already normalized over crop area?
  2. When I compare my annual crop yield (left panel) with that from Lawrence et al., (2019) (the right panel):
The spatial pattern matches well, but the magnitude is much smaller (significantly underestimated).
1776373281130.pngScreenshot 2026-04-16 at 23.02.01.png
I would appreciate any comments on the discrepancy in my results. Could this be related to an issue in how I calculated crop yield (tonnes/ha)?
 

samrabin

Sam Rabin
Member
I don't, unfortunately, especially not for versions before CTSM 5.3 or so.

The figure in Lawrence et al. (2019) is probably tonnes per hectare of cropland. I think if you saved crop yield at gridcell level, you actually need to multiply by 100/crop_frac, not its inverse.
 
Vote Upvote 0 Downvote

Qi Ran

Qi Ran
New Member
I don't, unfortunately, especially not for versions before CTSM 5.3 or so.

The figure in Lawrence et al. (2019) is probably tonnes per hectare of cropland. I think if you saved crop yield at gridcell level, you actually need to multiply by 100/crop_frac, not its inverse.
Hi, Sam. Thank you for your reply. I tried multiply by 100/crop_frac, but the spatial distribution (the figure below) can be quite different with that in Lawrence et al. (2019). And it is so strange that Amazon Rainforest has a relatively high yield.
I would really appreciate it if you have any thoughts or suggestions regarding this strange result.

Screenshot 2026-04-17 at 22.26.36.png
 
Vote Upvote 0 Downvote

samrabin

Sam Rabin
Member
What does it look like if you just remove the crop_frac/100 term? I can't think of why that would be necessary.
  • If non-agricultural land was getting averaged in, you'd need to multiply by 100/crop_frac
  • If not, you shouldn't need to multiply by anything, because you should already be getting the mean over crop area
 
Vote Upvote 0 Downvote

Qi Ran

Qi Ran
New Member
What does it look like if you just remove the crop_frac/100 term? I can't think of why that would be necessary.
  • If non-agricultural land was getting averaged in, you'd need to multiply by 100/crop_frac
  • If not, you shouldn't need to multiply by anything, because you should already be getting the mean over crop area
If remove the crop_frac/100, and just use the below formula from the CLM documentation:
1776459875462.pngX 0.01 (for converting to tonnes/ha)
The annual mean crop yield is still be largely underestimated, but the spatial distribution looks good:
Screenshot 2026-04-17 at 23.05.57.png
 
Vote Upvote 0 Downvote
Back
Top