Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement grass allometric equations and update default allometric parameters for grass PFT #1206

Merged
merged 15 commits into from
Aug 14, 2024

Conversation

XiulinGao
Copy link
Contributor

Description:

This pull request implements new leaf and AGB allometric equations using basal diameter (cm) and plant height (m) as predictors for grass PFT. In addiiton, a new sapwood option was added in which I set bsap = bagw + bbgw - bdead and bdead is always zero by setting agb_frac to 1. This change will skip the bsap_ltarg_slatop routine for sapwood biomass calculation for grass, and basically make bsap = bagw and there won't be any dead biomass produced for grasses if agb_frac is set to be 1. Lastly, all default allometric parameters, including reproduction allocation, are updated for all three grass PFTs, based on data from Gao et al., 2024. (https://esajournals.onlinelibrary.wiley.com/doi/pdfdirect/10.1002/eap.2976)

Collaborators:

I have talked with @ckoven, @glemieux , and @mpaiao about implementing this new grass allometry and had discussions with them.

Expectation of Answer Changes:

This change will result in different model results for grass PFTs in terms of carbon allocation and the resulting impacts on PFT competitions.

Checklist

If this is your first time contributing, please read the CONTRIBUTING document.

All checklist items must be checked to enable merging this pull request:

Contributor

  • [ x ] The in-code documentation has been updated with descriptive comments
  • The documentation has been assessed to determine if updates are necessary

Integrator

  • FATES PASS/FAIL regression tests were run
  • Evaluation of test results for answer changes was performed and results provided

Documentation

Test Results:

CTSM (or) E3SM (specify which) test hash-tag:

CTSM (or) E3SM (specify which) baseline hash-tag:

FATES baseline hash-tag:

Test Output:

@rgknox rgknox requested a review from mpaiao June 10, 2024 19:27
Copy link
Contributor

@mpaiao mpaiao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@XiulinGao Thanks for submitting this pull request! I went through it and I think it looks great! I just have a couple of comments that are probably something for us to think in future pull requests:

  1. Many of these modes (especially for crown area and leaf/AG biomass) really could be simplified into 1 generic allometric mode. This may make the code a bit simpler overall.
  2. All the derivatives are fine, but in most cases, it could be rewritten in terms of the biomass itself, which saves come floating point operations. I've done this for a few allometric modes. I don't think it's high priority because it's not something computed multiple times a day, but it could save a few milliseconds ;).

Comment on lines 550 to 554
case(5)
dbh_eff = min(dbh,dbh_maxh)
call carea_2pwr(dbh_eff,site_spread,d2bl_p2,d2bl_ediff,d2ca_min,d2ca_max, &
crowndamage, c_area, do_inverse)
capped_allom = .true.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest removing case (5) and replacing case (3) with case(3,5). This way future changes to care_2pwr don't need to be applied twice.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Marcos! I have made changes in response to you comments on derivative calculation and the crown area function. But I haven't changed the agb and bleaf allometry to generic function yet. Hope now the code looks less redundant.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@XiulinGao Thanks for the follow up. My comment about the generic function was something for a future pull request, not yours. This would likely require significant changes in the parameter files for most users, so it's probably something we want to discuss with the broader FATES community before implementing.

@glemieux glemieux added the parameter file Pertaining to changes to the FATES parameter file label Jul 9, 2024
@glemieux glemieux self-assigned this Jul 11, 2024
@rgknox
Copy link
Contributor

rgknox commented Aug 12, 2024

@XiulinGao : "addiiton, a new sapwood option was added in which I set bsap = bagw + bbgw - bdead and bdead is always zero by setting agb_frac to 1."

My understanding of the code is that bdead is set to zero because allom_smode = 2. Is that correct?

This is a fantastic addition to the code, thanks for submitting this work. Looking forward to getting this in. Originally, I had one request, that we add more description to these new allometry functions in the parameter file, and/or the module that reads in the parameters. However, we don't really have a precedent for that, so we will have to get back to this.

! replicate the crown damage code
! Do we really need this for grass? I would think this can be helpful for
! grazing in the future. --XLG
if(crowndamage > 1)then
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tagging @JessicaNeedham

Copy link
Contributor

@JessicaNeedham JessicaNeedham Aug 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree @XiulinGao that we should think ahead about possible grazing functionality. But as written the crown damage module doesn't change plant height, only crown area and the biomass of aboveground tissues, so I'm not sure how applicable it is to grasses. Maybe we could skip this for now, but think about making the damage code more general so it could be used in the future?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per discussion in the fates software meeting today @rgknox will make a PR to this branch to remove this and include a graceful failure.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see. In that case then I think this is not that helpful for grass grazing. I agree that we can remove this for grasses for now.

@XiulinGao
Copy link
Contributor Author

@XiulinGao : "addiiton, a new sapwood option was added in which I set bsap = bagw + bbgw - bdead and bdead is always zero by setting agb_frac to 1."

My understanding of the code is that bdead is set to zero because allom_smode = 2. Is that correct?

This is a fantastic addition to the code, thanks for submitting this work. Looking forward to getting this in. Originally, I had one request, that we add more description to these new allometry functions in the parameter file, and/or the module that reads in the parameters. However, we don't really have a precedent for that, so we will have to get back to this.

Yes. The new sapwood function just calculate bsap as the sum of above- and belowground live woody biomass for grasses. But as we set agb_frac to 1, so bsap = agb. I get the logic backwards in documentation here... it's bdead that calculated as bagw + bbgw - bsap not the other way around.....

@rgknox
Copy link
Contributor

rgknox commented Aug 13, 2024

ok, thanks for confirming my understanding @XiulinGao . There are some small tweaks I'll submit to your fork as a PR, but we should be able to integrate this PR fairly soon.

remove damage and parameter changes, merge in main
@rgknox rgknox merged commit a683a00 into NGEET:main Aug 14, 2024
1 check was pending
glemieux added a commit to glemieux/fates that referenced this pull request Sep 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
parameter file Pertaining to changes to the FATES parameter file
Projects
Development

Successfully merging this pull request may close these issues.

5 participants