ctsm5.4.036: Complete the FATES-CLM nitrogen coupling#3409
ctsm5.4.036: Complete the FATES-CLM nitrogen coupling#3409slevis-lmwg wants to merge 46 commits intoESCOMP:masterfrom
Conversation
PASS ERS_D_Ld30.1x1_brazil.I2000Clm60FatesCrujraRs.derecho_intel.clm-FatesColdPRT2 FAIL ERS_D_Ld30.1x1_brazil.I2000Clm60FatesCrujraRs.derecho_intel.clm-FatesColdPRT2--clm-mimicsFatesCold--clm-nofireemis The latter needs "nofireemis" to work with Fates, but it then dumps core in line 1180 SoilBiogeochemDecompCascadeMIMICSMod.F90
...calculating these variables: nf_soil%decomp_npools_sourcesink_col nf_soil%fates_litter_flux
|
With the latest commit, I repeated the two earlier tests and added another to check whether answers have changed from the baseline: The latter fails in case2, after reading the restart file, with a N balance error. UPDATE
|
|
Enabled fixation and ran the same tests: PRT2 still b4b with the baseline. PASS The same tests with the code change for harvest (same results relative to the baseline). |
|
Worked on the next checkbox in the issue (#3378), submitted the same tests, and after some troubleshooting: |
These variables originate in fates, so this renaming requires the same renaming in fates; I will open the corresponding PR very soon
Notes:
|
|
Updated the fates paramfile (see next commit) and submitted these two again The first (LUH2) same as before (DIFF from baseline) since nothing changed for it.
|
|
@rgknox testing seems satisfactory to me, so this PR and its fates counterpart are ready for your final review, unless you think of anything else that we need to work on here. |
glemieux
left a comment
There was a problem hiding this comment.
This looks good. Thanks again to @slevis-lmwg for the walkthrough. I just have two questions/comments that should be dealt with via other PRs (if at all).
| 'FATES_DEMOTION_CARBONFLUX', 'FATES_PROMOTION_CARBONFLUX', | ||
| 'FATES_MORTALITY_CFLUX_CANOPY', 'FATES_MORTALITY_CFLUX_USTORY', | ||
| 'FATES_NEP', 'FATES_HET_RESP', 'FATES_FIRE_CLOSS', 'FATES_FIRE_FLUX_EL', | ||
| 'FATES_CBALANCE_ERROR', 'FATES_ERROR_EL', 'FATES_LEAF_ALLOC', |
There was a problem hiding this comment.
Do we have an issue to note why this shouldn't be included here? I could find anything specific outside of a conflict with using it during ST3 or SP mode tests.
| <test name="ERS_D_Ld30" grid="f45_f45_mg37" compset="I2000Clm60FatesRs" testmods="clm/FatesColdPRT2_suplnAll"> | ||
| <machines> | ||
| <machine name="derecho" compiler="intel" category="fates"/> | ||
| <machine name="lawrencium-lr3" compiler="intel" category="fates"/> |
There was a problem hiding this comment.
@rgknox do you use lawrencium? We should instances of lawrencium if we don't think we're going to be using it anytime soon, but that's out of scope for this PR so I'd just make an issue if you agree.
ekluzek
left a comment
There was a problem hiding this comment.
I did a fairly quick skim, and only have a few suggestions. There was one thing I was concerned about, but realized it was done on purpose. So I only wonder if more comments might help with the supplemental nitrogen setting?
@glemieux had some comments to handle. And we should have him and @samsrabin finish a review as well.
The other thing I wondered about this is how FATES carbon_nitrogen will interact with other parts of Nitrogen in CLM like LUNA? That likely will take some scientific validation, but we might want to have some warnings or comments about some of that?
|
|
||
| <!-- Supplmental Nitrogen mode --> | ||
| <suplnitro >NONE</suplnitro> | ||
| <suplnitro fates_parteh_mode="carbon_only" >ALL</suplnitro> |
There was a problem hiding this comment.
Doesn't this need the addition of:
| <suplnitro fates_parteh_mode="carbon_only" >ALL</suplnitro> | |
| <suplnitro use_fates=".true." >ALL</suplnitro> | |
| <suplnitro use_fates=".true." fates_parteh_mode="carbon_only" >ALL</suplnitro> |
There was a problem hiding this comment.
OK, it looks like this was an intentional change. I only wonder about making this more obvious in comments though.
| integer, public :: fates_parteh_mode = -9 ! 1 => carbon only | ||
| ! 2 => C+N+P (not enabled yet) | ||
| ! no others enabled | ||
| character(len=256), public :: fates_parteh_mode = '' ! FATES Plant Allocation Reactions and Transport Hypotheses |
There was a problem hiding this comment.
I really love upgrading this to a character description. So much easier to understand!
|
|
||
| <entry id="fates_parteh_mode" type="integer" category="physics" | ||
| group="clm_inparm" valid_values="1,2"> | ||
| <entry id="fates_parteh_mode" type="char*256" category="physics" |
There was a problem hiding this comment.
You could make the string shorter. If you use SHR_KIND_CS it would be 80 characters which is still longer than needed for this. But, you could use it in the code and have it consistent here.
| <entry id="fates_parteh_mode" type="char*256" category="physics" | |
| <entry id="fates_parteh_mode" type="char*256" category="physics" |
| integer, public :: fates_parteh_mode = -9 ! 1 => carbon only | ||
| ! 2 => C+N+P (not enabled yet) | ||
| ! no others enabled | ||
| character(len=256), public :: fates_parteh_mode = '' ! FATES Plant Allocation Reactions and Transport Hypotheses |
There was a problem hiding this comment.
I do suggest either hardcoding the length to something shorter (and agree with the value in the namelist defintion above), or use SHR_KIND_CS which has a length of 80.
You can add a use statement to shr_kind, for it, and then use it similar to other string lengths.
| character(len=256), public :: fates_parteh_mode = '' ! FATES Plant Allocation Reactions and Transport Hypotheses | |
| character(len=CS), public :: fates_parteh_mode = '' ! FATES Plant Allocation Reactions and Transport Hypotheses |
use shr_kind_mod, only: CS=>SHR_KIND_CS| end do | ||
| end do | ||
|
|
||
| bgc_soilc_loop2: do fc = 1, num_bgc_soilc |
There was a problem hiding this comment.
Add a comment to say what this loop is doing.
| <entry id="fates_parteh_mode" type="char*256" category="physics" | ||
| group="clm_inparm" valid_values="carbon_only,carbon_nitrogen"> | ||
| Switch deciding which nutrient model to use in FATES. | ||
| (Only relevant if FATES is on) |
There was a problem hiding this comment.
The other thing I wonder about is making a note to say that this is experimental.
| (Only relevant if FATES is on) | |
| (Only relevant if FATES is on) | |
| (fates_parteh_mode='carbon_nitrogen' is EXPERIMENTAL and UNSUPPORTED) |
|
Hi @ekluzek thanks for this. I just wanted to say that this code does not intersect with LUNA, as Vcmax is an input oarameter in FATES and so we don't for now handle any of the acclimation processes that LUNA predicts. This also goes for FUN and the 'Flex-CN' (I'm unsure if we still call it that) functionality. |
|
Note to self: Open new documentation issues to update Technote and User's Guide. |
|
Blocked by NGEET/fates#1472 for now. |
Description of changes
For now see the issue #3378
Corresponding mods on the FATES side:
NGEET/fates#1472
Nutrient enabled FATES handbook
FATES CLM N coupling
Specific notes
Contributors other than yourself, if any:
@rgknox @adrifoster @wwieder
CTSM Issues Fixed (include github issue #):
#3378
Are answers expected to change (and if so in what way)?
For non-fates tests expect roundoff diffs due to a change in the order of operations in CNNDynamicsMod.F90 as documented below.
Any User Interface Changes (namelist or namelist defaults changes)?
Yes, see changes to CLMBuildNamelist and namelistdefaults.
Does this create a need to change or add documentation? Did you do so?
Yes, no.
Initial testing performed
...with the first two commits in this PR:
Later comments point out that these two tests were inadequate at catching problems, and that I switched to two other tests.