Repository navigation
Conversation
In most situations, this extra check of is_beg_curr_year should be
redundant with the way this land cover change was implemented. However,
it serves two purposes:
(1) Avoiding unnecessary work
(2) For a startup / hybrid run that starts mid-year, in some situations
we can get area changes in the first time step of the run without
this is_beg_curr_year check. This causes an error in annual flux
dribblers that are told to only expect fluxes at the year boundary.
This is_beg_curr_year suppresses any area changes until the first
year boundary of the run.
The main motivation for this change was to resolve (2). I am hoping that
this will resolve ESCOMP#4165.
I have also removed comments describing how to change the area change
behavior to be time-interpolated rather than uninterpolated. I don't
think this has actually been easy to change for a long time due to the
use of annual flux dribblers. And the introduction of is_beg_curr_year
even further bakes in the current behavior.
With the change on this branch, the allowTransientYearJump testmod should no longer need for_testing_allow_non_annual_changes = .true.
|
I struggled for a while with how to fix #4165 without causing at least as many issues as I was resolving. This is the best fix I could come up with. As noted in the accompanying design doc, it further bakes in some current behavior, which I don't love, but I think this is acceptable for now. If we ever want to loosen these restrictions, we could remove the check for non-annual changes from the dribblers, which would be another way to resolve #4165 so would allow removing this added Note that the change here changes behavior for a run starting mid-year... but in the situations where it changes behavior, previously you would have needed for_testing_allow_non_annual_changes to avoid an abort, so this change seems like it should be fine / good. It's probably best if this PR comes in for CESM3 because without it users could run into errors when trying to start a run mid-year. |
Description of changes
Add an is_beg_curr_year conditional around file-based land cover change.
In most situations, this extra check of is_beg_curr_year should be
redundant with the way this land cover change was implemented. However,
it serves two purposes:
(1) Avoiding unnecessary work
(2) For a startup / hybrid run that starts mid-year, in some situations
we can get area changes in the first time step of the run without
this is_beg_curr_year check. This causes an error in annual flux
dribblers that are told to only expect fluxes at the year boundary.
This is_beg_curr_year suppresses any area changes until the first
year boundary of the run.
The main motivation for this change was to resolve (2). This resolves #4165.
I have also removed comments describing how to change the area change
behavior to be time-interpolated rather than uninterpolated. I don't
think this has actually been easy to change for a long time due to the
use of annual flux dribblers. And the introduction of is_beg_curr_year
even further bakes in the current behavior. However, I now discuss this in a separate design doc, also part of this PR.
Specific notes
CTSM issues resolved or otherwise addressed, if any:
If answers are expected to change, describe (delete this line otherwise):
ERI_D_Ld20.f10_f10_mg37.IHistClm60Bgc.derecho_intel.clm-default--clm-midDecStart--clm-allowTransientYearJumpandERI_D_Ld20.f10_f10_mg37.IHistClm60Bgc.izumi_nag.clm-default--clm-midDecStart--clm-allowTransientYearJump.Any user interface changes (namelist or namelist defaults changes)? No (but the allowTransientYearJump testmod no longer sets for_testing_allow_non_annual_changes).
Testing planned or performed, if any:
Requirements before merge: