NGEET / fates

repository for the Functionally Assembled Terrestrial Ecosystem Simulator (FATES)
Other
105 stars 92 forks source link

Move growth respiration to daily timestep #1197

Closed ckoven closed 1 week ago

ckoven commented 6 months ago

This PR moves the calculation of growth respiration (GR) to the daily timestep, as a tax on daily integrated max(0,(GPP - MR)), instead of half-hourly max(0,(GPP-MR)). This will lead to a decrease in growth respiration because it includes the nighttime respiration in the loss term.

Description:

By moving the GR to daily, it means that NPP is also only defined at the daily timestep as well. With one exception, I moved all history variables that depend on growth respiration to also be daily. The one exception was I kept NEP as a high frequency output for the case where a user wants to compare directly to NEE data; however this requires (1) making the assumption that GR is constant on timescales less than a day, and (2) using a given cohort's GR from the prior day (which thus introduces some slight error since cohort n will have changed since the GR was actually applied).

fixes #1194 potentially: fixes #1229

Collaborators:

Discussed on 4/29 FATES SW call, and further discussions with @JessicaNeedham and @rgknox.

Expectation of Answer Changes:

This will be answer-changing.

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:

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

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

FATES baseline hash-tag:

Test Output:

rgknox commented 5 months ago

This may or may not fit into this PR @ckoven, but I did want to point out that we have another carbon flux that is triggered daily. When the nutrient model is active, if carbon is not the limiting resource, any carbon that was available for growth but was not allocated to tissues and storage will be respired off. The variable is cohort%resp_excess, and it is resolved at the end of the calls to growth, here:

https://github.com/NGEET/fates/blob/main/main/EDMainMod.F90#L595

Ideally, the plant's dynamic root allocation schemes should nudge the plant's resource allocation balance so that it is not wasting resources, but nonetheless this is a term that should be accounted for if anyone is tracking NEE or other carbon flux balancing while the nutrient model is active.

JessicaNeedham commented 4 months ago

Results from a global nocomp simulation with the default parameter file. Growth respiration decreased by about 10% with this change. This is just the mean over a 10 year simulation from bare ground so definitely not spun up yet.

Screenshot 2024-06-28 at 19 58 11 Screenshot 2024-06-28 at 20 01 12

rgknox commented 4 months ago

@JessicaNeedham , that 10% decrease seems about what I would had expected, do you see it the same way?

JessicaNeedham commented 4 months ago

@JessicaNeedham , that 10% decrease seems about what I would had expected, do you see it the same way?

I think so

rgknox commented 3 weeks ago

I believe this PR is content complete and has had a thorough examination.

glemieux commented 1 week ago

Initial regression testing underway on derecho.

glemieux commented 1 week ago

Testing on derecho against fates-sci.1.79.2_api.36.1.0-ctsm5.3.008 shows no unexpected test failures. As expected all fates test mods result in DIFFs.

Spot checking the FatesColdAllVars differences shows what I believe is expected behavior with the following variables being the only differences in the first fates dynamics timestep (i.e. t_index = 2):

FATES_AUTORESP
FATES_AUTORESP_CANOPY
FATES_GROWTH_RESP
FATES_MAINT_RESP_UNREDUCED
FATES_NEP
FATES_NPP
FATES_NPP_AP
FATES_GROWAR_CANOPY_SZ
FATES_AUTORESP_SZPF
FATES_GROWAR_SZPF

Beyond this timestep, more differences show up in additional variables. The differences for the variables above are on the order of E-09.

Results: /glade/u/home/glemieux/scratch/ctsm-tests/tests_pr1197

glemieux commented 1 week ago

Checking the FatesColdSatPhen tests, the only diffs I'm seeing are with FATES_MAINT_RESP_UNREDUCED which are around E-08.