-
Notifications
You must be signed in to change notification settings - Fork 92
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
Canopy aerodynamic scaling fixes #735
Conversation
biogeochem/EDCanopyStructureMod.F90
Outdated
do while(associated(currentCohort)) | ||
! weight dleaf by the relative totals of leaf and stem area | ||
weight = (currentCohort%treelai + currentCohort%treesai) * currentCohort%c_area / total_patch_leaf_stem_area | ||
bc_out(s)%dleaf_pa(ifp) = bc_out(s)%dleaf_pa(ifp) + & |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why does this part use the stem area for the weighting function? Is that to avoid strange things happening in winter when there are no leaves?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
was following this suggestion here: #690 (comment). but as it should in principle be the LAI rather than the LAI+SAI, and in principle if there is no LAI on the patch then that should be handled by the HLM robustly anyway, perhaps it is better to remove the LAI from the calculation entirely. relatedly: probably we should be doing an ELAI weighting, though that probably involves new science and would need more site-level testing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you mean remove LAI, or SAI? I think @rgknox has/had a point in his comment though, that there is still drag if there are no leaves. And rb is used in canopy conductance, i.e. in the efpot line:
https://github.com/ESCOMP/CTSM/blob/6fad071dce82ab4cbf42f6cd47399bd463bd126a/src/biogeophys/CanopyFluxesMod.F90#L1137
So I think we need some sort of value for rb relevant to the stem-only canopy?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, sorry, i meant remove sai. since we're only using the lai (or lai+sai) weighting for dleaf and not the other two terms, it should be safe to remove it, since if there's no leaf there wouldn't be an effect of leaf diameter?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i see, sorry, you're right. dleaf does go into rb so needs to have a valid value even if lai = 0. so I'll leave as-is then?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was waiting on me to say yes I think, so yes, that's fine...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ckoven I notice that we calculate update %c_area here:
But we use it right before the update here:
https://github.com/NGEET/fates/pull/735/files#diff-315c6d4746f5566a97a47acd7630dc085c4535691dd54fbcbcd2b4f1aa5f8700R1935
biogeochem/EDCanopyStructureMod.F90
Outdated
call carea_allom(currentCohort%dbh,currentCohort%n,sites(s)%spread,& | ||
currentCohort%pft,currentCohort%c_area) | ||
|
||
currentCohort%treelai = tree_lai(currentCohort%prt%GetState(leaf_organ, all_carbon_elements), & |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do treelai and treesai need to be re-calculated here?
3aa3dfc
to
343ab78
Compare
Hi All, Summary is that this code does reduce a high bias in displacement height as compared to the SP mode, but a high bias remains as compared to SP mode, especially in the mid- and high-latitude forests. Would be good to benchmark and calibrate against actual data, as in ESCOMP/CTSM#1316, and add capability to use a more sophisticated turbulence scaling model. Both SP modes produce the same results (which is good as they should). But I feel like this PR is (slightly) better than the existing code and should be merged. |
Do want to have a low bias relative to SP? I suppose if we have a lower bias compared to SP, than parameterizations generated through SP are more translatable over to FATES simulations, likewise FATES simulations are more comparable to SP simulations? |
@rgknox its a good question. In principle, the SP roughness height is qualitatively different from the full-FATES roughness height, because the SP is just an input dataset and based on a canopy of uniformly-sized trees, whereas the full-FATES is an emergent outcome. I guess, if we take the input dataset used by SP as being a good metric of the actual canopy height, then we do want them to be close, and we want to adjust the full-FATEs to be more like SP. So I think one interpretation is that we need to change the default height allometry for the non-tropical forest trees to be more representative of those forest types, and which should therefore reduce the bias outside of the tropics. But, yeah, I guess that for the SP-based calibration cascade to work as well as possible, then we do need to match the the aerodynamic properties between the two modes. |
So the FATES-SP mode is in fact looking the same as the big leaf SP mode? (that's good to know!) |
Testing is partially complete; due to a known MOSART issue, the single site tests need to be modified, rebuilt and rerun by hand. All tests returned DIFFs as expected, but two tests failed RUN: Currently investigating. The test folder is located here on Cheyenne: |
All single site tests were manually resubmitted and all returned DIFFs as expected. I manually resubmitted the Reviewing the |
We've been using the first-PFT values for three parameters related to the aerodynamic calculations: leaf characteristic diameter, displacement height, and canopy roughness length. this does a more sensible weighting.
Description:
per #690, we've been doing a weird thing for some of the scaling-up of turbulence parameters to the patch level. this code does a more proper scaling of the three boundary conditions. for leaf characteristic dimension, we calculate a weighted average, weighted by the total leaf plus stem of all cohorts. for displacement height and roughness length, we weight by the crown area of only cohorts that are in the canopy and multiply by that cohort's height.
fixes #690.
Collaborators:
@rgknox @rosiealice
Expectation of Answer Changes:
because the values of the three parameters are currently all the same, the scaling to of parameters from PFTs to cohorts shouldn't matter. however, because the displacement height and roughness length are being scaled per cohort rather than by the tallest cohort in the patch, this will change answers.
in discussion with @rgknox and @rosiealice we also though that dimensioning the displacement height, and canopy roughness length parameters by PFT doesn't necessarily make sense anyway, and possibly we should make both of these PFT-independent scalars. if so, we may do that as a subsequent change, possibly alongside a more in-depth reworking of how we calculate these quantities.
Checklist:
Test Results:
not yet tested formally.
CTSM (or) E3SM (specify which) test hash-tag:
CTSM (or) E3SM (specify which) baseline hash-tag:
FATES baseline hash-tag:
Test Output: