Add EAM-generated dust deposition capability to ocean
Currently, the atmospheric dust and iron deposition to the surface ocean is specified to be a monthly climatology that has been used for all E3SM ocean BGC cases for the past decade. This PR now allows the use of a climatology generated by EAM from archival simulations with prognostic dust deposition and time-variable solubility for iron in dust, which requires extra fields to be read in. In addition, the wet and dry dust flux that EAM sends through the coupler can now also be used by the ocean in fully coupled runs so only the solubility is required to be read in from a file.
[NML] [BFB] - stealth feature
@maltrud : could you add the new stream fields to the buildnml?
--- a/components/mpas-ocean/cime_config/buildnml +++ b/components/mpas-ocean/cime_config/buildnml @@ -1811,6 +1811,11 @@ def buildnml(case, caseroot, compname): lines.append(' ') lines.append(' ') lines.append(' ')
-
lines.append(' <var name="dust_FLUZ_DRY"/>') -
lines.append(' <var name="dust_FLUZ_WET"/>') -
lines.append(' <var name="IRON_Zolubility_wet"/>') -
lines.append(' <var name="IRON_Zolubility_dry"/>') -
lines.append(' <var name="IRON_in_duzt_fraction"/>') lines.append(' <var name="dust_FLUZ_IN"/>') lines.append(' <var name="riverFluzNO3"/>') lines.append(' <var name="riverFluzPO4"/>')
@njeffery great idea--will do.
BTW, on the previous E3SM test, I had to rebase on the head of master to get through the setup on perlmutter. Submitting a job from the head of this PR, there is a library mismatch:
Finished SETUP for test SMS_Ld3.T62_oQU240.GMPAS-NYF.pm-cpu_gnu in 2.759769 seconds (FAIL). [COMPLETED 1 of 1]
Case dir: /pscratch/sd/m/mpeterse/e3sm_scratch/pm-cpu/SMS_Ld3.T62_oQU240.GMPAS-NYF.pm-cpu_gnu.20251003_102449_9pimzr
Errors were:
ERROR: module command /usr/share/lmod/lmod/libexec/lmod python load PrgEnv-gnu/8.5.0 gcc-native/12.3 cray-libsci/23.12.5 craype-accel-host craype/2.7.30 cray-mpich/8.1.28 cray-hdf5-parallel/1.12.2.9 cray-netcdf-hdf5parallel/4.9.0.9 cray-parallel-netcdf/1.12.3.9 cmake/3.24.3 evp-patch failed with message:
Lmod has detected the following error: These module(s) or extension(s) exist but cannot be loaded as requested: "evp-patch"
Try: "module spider evp-patch" to see how to load the module(s).
I added the shared constant and updated ocean streams changes and pushed to the branch. I did a local merge of master with the branch and it passed all except NML since we added new namelist variables. I think it's ready for the next step.
SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod (Overall: NLFAIL) details: PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod CREATE_NEWCASE PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod XML PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod SETUP PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod SHAREDLIB_BUILD time=225 FAIL SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod NLCOMP PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod MODEL_BUILD time=275 PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod SUBMIT PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod RUN time=1549 PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod BASELINE master: ERROR Could not interpret CPRNC output PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod MEMLEAK insufficient data for memleak test PASS SMS_D_Ld1.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.chrysalis_intel.allactive-wcprod SHORT_TERM_ARCHIVER
@maltrud -- I ran the semi-automated scripts to make the bld files consistent with what's in Registry. Most of the changes are in ordering of the new configs, but some of the documentation you added to namelist_definition_mpaso.xml will get lost. If any of it is important, please change the descriptions in Registry and I'll rerun the scripts
@maltrud -- since this is a stealth feature, we need to add a stealth test with this PR. I'm working on a testdef that just changes the values of these two new configs:
config_use_ecosysTracers_atm_dust_from_coupler
config_use_ecosysTracers_iron_solubility_file
Is that all that needs to be done? Does this need to be a marine BGC run in order for this to work?
Update: working on a test with @njeffery
Notes: needs more work.