-
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
leaf biophysics refactor and functional unit tests #1262
base: main
Are you sure you want to change the base?
Conversation
de09c8e
to
c7af3ef
Compare
Full model regression testing is now showing nigh-indistinguishable results with base: Test description: BCI, inventory initialization, ST3, 5 years, 2-stream rad, 1 tropical evergreen PFT, parameter defaults otherwise: https://drive.google.com/file/d/1HJadTpwo_MAdL5Sr8qWK4EFV98WPTlXy/view?usp=sharing Removing draft status Next steps:
|
I wanted to drop a note about expected changes with this refactor. There are a few places where results are changed with intent:
I think for many cases, the old solution that we have in main actually does get us a reasonable solution, but it breaks down and gives poor results in extreme conditions (particularly very dry conditions). This is probably due to a combination of points 1 and 3, and that we didn't offer a highly-stable alternative to the simple recursive numerical search of Ci (we now use bisection if a solution has not been achieved in 10 tries) I show two plots. Each plot looks at conductance, assimilation and Ci over a range of temperatures at BCI, for 4 combinations of absorbed PAR (high and low) and humidity (high and low). They both assume a boundary layer conductance of 2.5 mol/m2/s, which is on the high side for is experienced at BCI. They both use Medlyn conductance, and default parameters. *Note the turquoise line in the Ci plots is the compensation point. Using original code and Ci tolerance: Using new code and updated Ci tolerance: Here is the same comparison using Ball-Berry: Original code: New Code: |
…af_funcunit_tests
…ction final ci value
…revert case to smooth c3 AcAj
… a trivial conductance solve when gs2=0
I added a new test script that is a pure smoke test (ie pass/fail) on getting a solution for as many combinations as possible. The test output is as follows:
|
Description:
Leaf biophysics (photosynthesis, stomatal conductance and leaf respiration) has been refactored. Major objectives in this refactor were to 1) extract relevant routines that occur at the leaf-scale and place them in their own module that does not use the fates scaling data structures (cohort, patch and site agnostic) and 2) to have functional unit tests that exercise each of these functions.
These methods do not yet use features in our other brand of unit tests (but could!), particularly the use of cmake and parameter reading.
Design Notes
Notes on Bisection and finding bounding (starter) values
Notes on re-deriving the Medlyn solve with a boundary layer
Colab Notebook that runs the unit test: link
Fixes: #1222
Collaborators:
@adrifoster @ckoven
Expectation of Answer Changes:
There may be subtle differences in our standard integration tests. I do not expect the same results within round-off, but the diffs should be looked through to see if anything is very large.
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
Integrator
Documentation
Test Results:
TBD
CTSM (or) E3SM (specify which) test hash-tag:
CTSM (or) E3SM (specify which) baseline hash-tag:
FATES baseline hash-tag:
Test Output: