Skip to content

Complete the FATES-CLM nitrogen coupling#3409

Open
slevis-lmwg wants to merge 46 commits intoESCOMP:masterfrom
slevis-lmwg:fates-cn
Open

Complete the FATES-CLM nitrogen coupling#3409
slevis-lmwg wants to merge 46 commits intoESCOMP:masterfrom
slevis-lmwg:fates-cn

Conversation

@slevis-lmwg
Copy link
Copy Markdown
Contributor

@slevis-lmwg slevis-lmwg commented Aug 11, 2025

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.

  • Todo: add a modification to the PRT2 test, make sure that prescribed P uptake is set to 10. This will ensure that there are no P limitations in fates, when FATES becomes coupled to CLM's N cycle (in future PR). i:e: fates_cnp_prescribed_puptake=10

Initial testing performed
...with the first two commits in this PR:

PASS ERS_D_Ld30.1x1_brazil.I2000Clm60FatesCrujraRs.derecho_intel.clm-FatesColdPRT2
PASS ERS_D_Ld30.1x1_brazil.I2000Clm60FatesCrujraRs.derecho_intel.clm-FatesCold

Later comments point out that these two tests were inadequate at catching problems, and that I switched to two other tests.

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
@slevis-lmwg slevis-lmwg self-assigned this Aug 11, 2025
@slevis-lmwg slevis-lmwg added enhancement new capability or improved behavior of existing capability investigation Needs to be verified and more investigation into what's going on. science Enhancement to or bug impacting science test: aux_clm Pass aux_clm suite before merging test: fates Pass fates test suite before merging labels Aug 11, 2025
@slevis-lmwg slevis-lmwg linked an issue Aug 11, 2025 that may be closed by this pull request
1 task
@slevis-lmwg
Copy link
Copy Markdown
Contributor Author

slevis-lmwg commented Aug 13, 2025

With the latest commit, I repeated the two earlier tests and added another to check whether answers have changed from the baseline:

PASS ERS_D_Ld30.1x1_brazil.I2000Clm60FatesCrujraRs.derecho_intel.clm-FatesColdPRT2
PASS ERS_D_Ld30.1x1_brazil.I2000Clm60FatesCrujraRs.derecho_intel.clm-FatesCold
FAIL ERP_Ld9.f45_f45_mg37.I2000Clm50FatesRs.derecho_intel.clm-FatesColdAllVars -c /glade/campaign/cgd/tss/ctsm_baselines/ctsm5.3.065

The latter fails in case2, after reading the restart file, with a N balance error.

UPDATE

  • See below for suggestions to resolve FAIL
  • Add new test ERP_Ld9.f45_f45_mg37.I2000Clm50FatesRs.derecho_intel.clm-FatesColdPRT2 (sanity check first that it meets requirements set forth in the fourth checkbox here, which I think means pointing to an alternate fates paramfile)
  • Later comment explains why I decided to revert to preexisting ERS tests and skip adding this ERP test.

Comment thread src/soilbiogeochem/SoilBiogeochemCompetitionMod.F90 Outdated
Comment thread src/soilbiogeochem/SoilBiogeochemCompetitionMod.F90
@slevis-lmwg
Copy link
Copy Markdown
Contributor Author

slevis-lmwg commented Aug 26, 2025

Enabled fixation and ran the same tests:

PASS ERS_D_Ld30.f45_f45_mg37.I2000Clm50FatesCruRsGs.derecho_intel.clm-FatesColdPRT2 -c /glade/campaign/cgd/tss/ctsm_baselines/fates-sci.1.84.0_api.40.0.0-ctsm5.3.066
PASS ERS_D_Ld30.f45_f45_mg37.I2000Clm50FatesCruRsGs.derecho_intel.clm-FatesColdLUH2 -c /glade/campaign/cgd/tss/ctsm_baselines/fates-sci.1.84.0_api.40.0.0-ctsm5.3.066

PRT2 still b4b with the baseline.
LUH2 now DIFF from the baseline.

PASS The same tests with the code change for harvest (same results relative to the baseline).

@slevis-lmwg
Copy link
Copy Markdown
Contributor Author

slevis-lmwg commented Sep 20, 2025

Worked on the next checkbox in the issue (#3378), submitted the same tests, and after some troubleshooting:
PASS PRT2 and b4b with the baseline.
PASS LUH2 and DIFF from the baseline as before.

These variables originate in fates, so this renaming requires the same
renaming in fates; I will open the corresponding PR very soon
@slevis-lmwg
Copy link
Copy Markdown
Contributor Author

slevis-lmwg commented Sep 23, 2025

OK ./build-namelist_test.pl
OK ./run_sys_tests -s fates -c fates-sci.1.84.0_api.40.0.0-ctsm5.3.066/ --skip-generate
REDO ./run_sys_tests -s aux_clm -c ctsm5.3.066 --skip-generate

Notes:

  • Gnu and nvhpc tests needed a bug-fix that intel didn't catch (next commit).
  • Then the fates test-suite worked (I didn't repeat aux_clm for now)
  • Many tests DIFFer from the baseline.
  • The PRT2 test had the expected NLCOMP change, though no DIFFs from the baseline (even after rebuilding/rerunning):
  BASE: suplnitro = 'ALL'
  COMP: suplnitro = 'NONE'

@slevis-lmwg
Copy link
Copy Markdown
Contributor Author

slevis-lmwg commented Sep 23, 2025

Updated the fates paramfile (see next commit) and submitted these two again

./create_test ERS_D_Ld30.f45_f45_mg37.I2000Clm50FatesCruRsGs.derecho_intel.clm-FatesColdLUH2 -c /glade/campaign/cgd/tss/ctsm_baselines/fates-sci.1.84.0_api.40.0.0-ctsm5.3.066
./create_test ERS_D_Ld30.f45_f45_mg37.I2000Clm50FatesCruRsGs.derecho_intel.clm-FatesColdPRT2 -c /glade/campaign/cgd/tss/ctsm_baselines/fates-sci.1.84.0_api.40.0.0-ctsm5.3.066

The first (LUH2) same as before (DIFF from baseline) since nothing changed for it.
The second (ERS_D_Ld30.f45_f45_mg37.I2000Clm50FatesCruRsGs.derecho_intel.clm-FatesColdPRT2.C.20250923_141838_qjxqou) now:

  • DIFF from baseline and
  • FAIL COMPARE_base_rest suggesting variable(s) missing from restart, I suspect

@slevis-lmwg
Copy link
Copy Markdown
Contributor Author

slevis-lmwg commented Apr 13, 2026

Testing on derecho after the latest updates:

  • ./run_sys_tests -s fates -c fates-sci.1.92.0_api.44.0.0-ctsm5.4.031 --skip-generate
  • build-namelist_test.pl

Before I try ./run_sys_tests -s aux_clm -c ctsm5.4.032 --skip-generate, I will look into the diffs from baseline with this test from the above list of failures:
SMS_Ld5.f10_f10_mg37.I1850Clm45BgcCrop.derecho_intel.clm-crop
Largest diffs (grepped for "E-0") out of a total of 53 fields with non-zero diffs suggest roundoff diffs:

 RMS CH4_SURF_AERE_SAT                2.0582E-10            NORMALIZED  3.9956E-03
 RMS CH4_SURF_DIFF_SAT                8.6639E-14            NORMALIZED  1.6418E-04
 RMS FCH4                             4.7957E-15            NORMALIZED  1.3812E-04
 RMS FCH4TOCO2                        4.7907E-12            NORMALIZED  8.6788E-05
 RMS FCH4_DFSAT                       8.9717E-20            NORMALIZED  2.3733E-07
 RMS NEM                              4.7907E-12            NORMALIZED  1.2779E-04
 RMS SOM_C_LEACHED                    1.3173E-25            NORMALIZED  1.5688E-09
 RMS TOTCOLCH4                        6.1704E-10            NORMALIZED  1.9915E-09
 RMS CONC_O2_SAT                      4.7118E-03            NORMALIZED  4.4369E-02
  • The test gives similar/same diffs when I reverse the mods in SoilBiogeochemCompetitionMod.F90
  • The test returns b4b when I reverse the mods in CNNDynamicsMod.F90
  • Starting aux_clm to confirm all DIFFs go away, though Fates tests appear to fail now

Comment thread src/biogeochem/CNNDynamicsMod.F90
Comment thread src/soilbiogeochem/SoilBiogeochemCompetitionMod.F90
Comment thread src/soilbiogeochem/SoilBiogeochemCompetitionMod.F90
@slevis-lmwg
Copy link
Copy Markdown
Contributor Author

slevis-lmwg commented Apr 14, 2026

Now repeat ./run_sys_tests -s aux_clm -c ctsm5.4.032 --skip-generate with the latest commit:

  • izumi
  • derecho
    Three tests ran out of walltime that didn't fail before, so I will not spend additional time on them for now:
ERS_Ly5_Mmpi-serial.1x1_smallvilleIA.I1850Clm50BgcCrop.derecho_gnu.clm-ciso_monthly RUN
ERS_Ly5_Mmpi-serial.1x1_smallvilleIA.I1850Clm50BgcCrop.derecho_gnu.clm-ciso_monthly--clm-matrixcnOn RUN
ERS_Ly5_P128x1.f10_f10_mg37.IHistClm60BgcCrop.derecho_intel.clm-cropMonthOutput--clm-matrixcnOn_ignore_warnings RUN

Known issue #3840

@slevis-lmwg
Copy link
Copy Markdown
Contributor Author

slevis-lmwg commented Apr 14, 2026

@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.

@slevis-lmwg slevis-lmwg moved this from Todo to In Progress in LMWG: Sprint Planning Board Apr 14, 2026
@slevis-lmwg slevis-lmwg moved this from In Progress to Todo in LMWG: Sprint Planning Board Apr 14, 2026
@slevis-lmwg slevis-lmwg moved this from Todo to Stalled in LMWG: Sprint Planning Board Apr 14, 2026
@wwieder wwieder modified the milestone: FATES freeze for ctsm6 Apr 16, 2026
@wwieder wwieder requested review from glemieux April 16, 2026 16:59
@slevis-lmwg slevis-lmwg removed the request for review from rgknox April 16, 2026 20:35
@github-project-automation github-project-automation bot moved this to Ready to start (or start again) in CTSM: Upcoming tags Apr 20, 2026
@slevis-lmwg slevis-lmwg moved this from Ready to start (or start again) to In progress - master in CTSM: Upcoming tags Apr 20, 2026
@slevis-lmwg slevis-lmwg moved this from Stalled to In Progress in LMWG: Sprint Planning Board Apr 20, 2026
Copy link
Copy Markdown
Contributor

@glemieux glemieux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement new capability or improved behavior of existing capability investigation Needs to be verified and more investigation into what's going on. science Enhancement to or bug impacting science test: aux_clm Pass aux_clm suite before merging test: fates Pass fates test suite before merging

Projects

Status: In progress - master
Status: In Progress

Development

Successfully merging this pull request may close these issues.

Completing the FATES-CLM nitrogen coupling

5 participants