Skip to content

Conversation

@mpaiao
Copy link
Contributor

@mpaiao mpaiao commented Apr 23, 2025

Description:

This pull request is part of the #1385 task, and it introduces multiple changes in the phenology code aiming at making the logic and the code itself a bit simpler. Because there were (mostly minor) changes in the logic, this is not expected to be bit-for-bit, though these are not expected to cause major changes in results.

In short, these are the changes implemented:

  1. Moved the updates for days since last flushing and abscission events to the cumulative time subroutine.
  2. Changed the initialisation of the dates of the last flushing/abscission deciduous events, so they can start at negative values. This change should eliminate the need for a few if statements in the main phenology subroutine.
  3. Added a fourth case for cold deciduous phenology, which forces leaf flushing if plants remain dormant due to cold for a very long time. This should cause these plants to be vulnerable to frost in climates that are too cold for them to survive.
  4. Saved some phenology transition tests to logical variables to make the code a bit more readable.
  5. Restructured the cold-deciduous phenology code so the different checks are inside an if/elseif/else block (so only one change can happen at any time).
  6. Replaced some additional checks for growing degree days that should be taken care by change 2 plus the definition of a growing season.

In addition, the phenology status constants (stored in currentSite%phen_status(ipft)) were updated, and cold-deciduous state names were renamed similarly to the drought deciduous so the code is more easily interpretable (I personally found the original naming a bit confusing). The table below includes all the statuses, original names (except for new statuses) and new names, along with the description.

Code New name Original name Description
0 phen_estat_evergreen Dummy phenology state for evergreen PFTs
1 phen_cstat_timeoff phen_cstat_nevercold Leaves off, leaves exceeded life span without cold days
2 phen_cstat_tempoff phen_cstat_iscold Leaves off after reaching multiple cold days
3 phen_cstat_tempon phen_cstat_notcold Leaves on after exceeding the growing degree day threshold
4 phen_cstat_timeon Leaves on after extended cold period, forced flushing
5 phen_dstat_timeoff phen_dstat_timeoff Leaves off, leaves exceeded life span without desiccation
6 phen_dstat_moistoff phen_dstat_moistoff Leaves off, moisture availability fell below the threshold
7 phen_dstat_moiston phen_dstat_moiston Leaves on, moisture availability went above the threshold
8 phen_dstat_timeon phen_dstat_timeon Leaves on after extended dry period, forced flushing
9 phen_dstat_pshed phen_dstat_pshed Leaves partially abscissing due to drying conditions

This pull request should be integrated only after #1355 #1389 and #1392 are integrated.

Collaborators:

@glemieux @rgknox @rosiealice @XiulinGao @lmkueppers @ckoven

Expectation of Answer Changes:

There are some minor changes in logic, so this is unlikely to be bit-for-bit.

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

  • 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
  • FATES-CLM6 Code Freeze: satellite phenology regression tests are b4b

If satellite phenology regressions are not b4b, please hold merge and notify the FATES development team.

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:

mpaiao added 27 commits May 10, 2025 11:35
…values used by

phenology from phenology. This will help to modularise the code, and allow other parts of
the code to use these averages.
…ogy to become

PFT-specific. In the next commit, several cold-deciduous parameters will become PFT-
specific parameters too.
…asonal (cold)

deciduous into PFT-specific. This allows different cold-deciduous PFTs to have different
thresholds.
…y both cold deciduous

and drought deciduous.
…ngle, multi-option

flag. This change simplifies the PFT set up and by default resolves possible incorrect
settings of 3 mutually exclusive flags. Some of the associated code was also updated from
if statements to select case, to ensure that options do not overlap.
mpaiao added 2 commits May 10, 2025 16:37
…at making the code a

bit simpler. This is not intended to be bit-for-bit, because some of the changes impact
the logic. However, the results shouldn't be dramatically different.

1. Moved the updates for days since last flushing and abscission events to the cumulative
   time subroutine.
2. Changed the initialisation of the dates of the last flushing/abscission deciduous
   events, so they can start at negative values. This change should eliminate the need
   for a few "if" statements in the main phenology subroutine.
3. Added a fourth case for cold deciduous phenology, which forces leaf flushing if plants
   remain dormant due to cold for a very long time. This should cause these plants to be
   vulnerable to frost in climates that are too cold for them to survive.
4. Saved some phenology transition tests to logical variables to make the code a bit more
   readable.
5. Restructured the cold-deciduous phenology code so the different checks are inside an
   if/elseif/else block (so only one change can happen at any time).
6. Replaced some additional checks for growing degree days that should be taken care by
   change 2 plus the definition of a growing season
@mpaiao mpaiao force-pushed the mpaiao-pr-decid-streamline branch from ba52a24 to f96f2ff Compare May 10, 2025 23:56
…hat happened, but maybe

this was a rebase issue.
@glemieux glemieux added science: phenology parameters: new Pertaining to adding new parameters to the parameter file labels May 19, 2025
@glemieux glemieux added the inputs: parameter file Pertaining to changes to the FATES parameter file label Oct 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

inputs: parameter file Pertaining to changes to the FATES parameter file parameters: new Pertaining to adding new parameters to the parameter file science: phenology

Projects

Status: Finding Reviewers

Development

Successfully merging this pull request may close these issues.

2 participants