Merging soil NO into the new vertical movement scheme for soil nitrate
Description of changes
This PR merges the soil NO from https://github.com/ESCOMP/CTSM/pull/2290 into the NO3 vertical movement scheme in https://github.com/ESCOMP/CTSM/pull/2992.
The soil NO scheme is based on Parton et al (2001), and includes canopy reduction (Yan et al, 2005) and rain pulses (Yan et al 2005; Hudman et al 2012).
The scheme uses a fixed soil pH value of 6.5, as defined in SoilBiogeochemCompetitionMod.F90
In addition, the scheme does not includes the dependency of the N mineralization-based term on potential nitrification rates proposed in Parton et al. (2001), which is missing in CLM5 as pointed out by Nevison et al., (2022). Although that was implemented in https://github.com/ESCOMP/CTSM/pull/2290, it is now removed because it substantially affected N plant uptake and the broader carbon cycle.
A more complex version of this scheme, which includes spatially distributed soil pH, weathering effects on denitrification and soil NH3 volatilization, is described and validated in Val Martin et al (2023).
References
Hudman, R. C., Moore, N. E., Mebust, A. K., Martin, R. V., Russell, A. R., Valin, L. C., and Cohen, R. C.: Steps towards a mechanistic model of global soil nitric oxide emissions: implementation and space based-constraints, Atmos. Chem. Phys., 12, 7779–7795, https://doi.org/10.5194/acp-12-7779-2012, 2012.
Nevison, C., Goodale, C., Hess, P., Wieder, W. R., Vira, J., and Groffman, P. M.: Nitrification and Denitrification in the Community Land Model Compared with Observations at Hubbard Brook Forest, Ecol. Appl., 32, e2530, https://doi.org/10.1002/eap.2530, 2022
Parton, W. J., Holland, E. A., Del Grosso, S. J., Hartman, M. D., Martin, R. E., Mosier, A. R., Ojima, D. S., and Schimel, D. S.: Generalized model for NOx and N2O emissions from soils, J. Geophys. Res.-Atmos., 106, 17403–17419, https://doi.org/10.1029/2001JD900101, 2001.
Val Martin, M., Blanc-Betes, E., Fung, K. M., Kantzas, E. P., Kantola, I. B., Chiaravalloti, I., Taylor, L. L., Emmons, L. K., Wieder, W. R., Planavsky, N. J., Masters, M. D., DeLucia, E. H., Tai, A. P. K., and Beerling, D. J.: Improving nitrogen cycling in a land surface model (CLM5) to quantify soil N2O, NO, and NH3 emissions from enhanced rock weathering with croplands, Geosci. Model Dev., 16, 5783–5801, https://doi.org/10.5194/gmd-16-5783-2023, 2023.
Yan, X., Ohara, T., and Akimoto, H.: Statistical modelling of global soil NOx emissions, Global Biogeochem. Cy., 19, GB3019, https://doi.org/10.1029/2004GB002276, 2005.
Specific notes
Contributors other than yourself, if any: @lkemmons, @slevis-lmwg & @wwieder
CTSM Issues Fixed (include github issue #): Unknown
Are answers expected to change (and if so in what way)? I don't think so
Any User Interface Changes (namelist or namelist defaults changes)? The soil NO scheme can be turned on and off within the user_nl_clm as use_soil_nox=.true. or .false. As indicated by Jinmu Luo, the soil NO3 vertical movement scheme can also be turned on and off, but the switch is hardwire within SoilNitrogenMovementMod.F90
Does this create a need to change or add documentation? Did you do so? To be determined
Testing performed, if any: We performed 15-year runs using the new configuration, with the first 5 year treated as a pseudo-spin up, using the compset 2000_DATM%GSWP3v1_CLM50%BGC-CROP_SICE_SOCN_MOSART_CISM2%NOEVOLVE_SWAV
For evaluation we analyzed global annual timeseries and spatial distributions including changes between runs. Simulations were:
- Control (no NO3 vertical movement and no soil NOx)
- NO3VertMov (only soil NO3 vertical movement activated)
- NO3VertMov+SoilNOx (both soil NO3 vertical movemennt and soil NOx activated).
The main changes in the N cycle (eg soil NO2, denitrification and nitrfication) are driven by the NO3 vertical movement implementation. No significant changes are noticed in the carbon cycle (eg NPP, TOTECOSYSC).
This is based off of: ctsm5.3.040
There is new work to update this to a newer version of CTSM.
This is based off of: ctsm5.3.040
There is new work to update this to a newer version of CTSM.
True and, more precisely, Maria's branch starts from @jinmuluo's branch #2992 that is based off of ctsm5.3.040.
Adding next to make sure we know what is happening with all this work.
@wwieder and @slevis-lmwg will review. @slevis-lmwg meets with the group Monday, and will get more information then.
@wwieder (in case you want to look)
I made a diff file that compares this PR to #2992, because that's where Maria started from. The diff file is:
/glade/work/slevis/git_people/mvalmartin/ctsm_soilno/dif_from_jinmu
@mvalmartin I will need "collaborator access" to your branch for when I end up working on it. This is how you give me access:
- At the top of your PR, click on your branch: mvalmartin:ctsm_soilno
- Now at the top-middle click Settings and then Collaborators and follow the prompts to add me (@slevis-lmwg) as a collaborator
@slevis-lmwg, I added you as collaborator in the PR, you should have received an invitation. Please let me know if you can't still access it. Thanks!
@mvalmartin thank you. I confirmed my access by merging the latest updates from @jinmuluo's branch to your branch here. A few points:
- I will make such merges a few more times occasionally, including after merging @jinmuluo's branch to master eventually.
- Do "git pull" in your local copy of
ctsm_soilnoto have the latest code from here. - Then modify
ctsm_soilnoas necessary (e.g. revisions in response to the code reviews above) andgit pushback to here, so that I can in turngit pullto my local copy ofctsm_soilnoand that way stay up-to-date.
Updated to ctsm5.3.073 and started ./run_sys_tests -s aux_clm -c ctsm5.3.073 --skip-generate
So far I see many RUN failures in the following tests, so debugging likely comes next...
- [ ] izumi
- [ ] derecho, still NLCOMP diffs? Troubleshooting with SMS.f10_f10_mg37.I2000Clm50BgcCrop.derecho_intel.clm-crop (see latest submit 2025/12/5)
@mvalmartin
other activities have lowered this PR's priority for me right now. If you could investigate why tests like SMS.f10_f10_mg37.I2000Clm50BgcCrop.derecho_intel.clm-crop fail, that would help move this work forward. To run this test, go to the /cime/scripts directory and run
create_test SMS.f10_f10_mg37.I2000Clm50BgcCrop.derecho_intel.clm-crop
The failure has been in the RUN phase.
UPDATE 2025/12/5
I started the failing test with some write statements included:
FAIL SMS.f10_f10_mg37.I2000Clm50BgcCrop.derecho_intel.clm-crop.20251205_155955_dcs1wl
UPDATE 2025/12/9
I rebuilt + resubmitted with a new initialization but may need to move the latter even further out of if-blocks because the test still failed.