Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A new physically based dust emission scheme with more aeolian physics (updated) #1897

Merged
merged 112 commits into from
Aug 11, 2024

Conversation

dmleung
Copy link
Contributor

@dmleung dmleung commented Nov 10, 2022

This is an updated version of proposed code changes based on the recent ctsm version (ctsm5.1.dev106-7). This PR will replace the previous PR (#1712) with code changes based on the older clm version (release-clm5.0.35-14). PR #1712 will be closed later. The descriptions below are slightly modified but largely the same as those in PR #1712.

Description of changes
This is a scheme that builds upon issue #1230 and #1604 which switched CESM2's default dust emission scheme (Zender et al., 2003) to @jfkok's more physical and less empirical one (Kok et al., 2014). Based on #1230 's edits, #1604 's modifications add new aeolian physics to the Kok's scheme, most notably, by adding the roughness effect (or called drag partition effect) which discounts surface soil erosion by winds due to the presence of local-scale land-surface roughness elements (mostly plants and rocks). We use a hybrid approach to account for both roughness from rocks (with a 2-D time-invariant dataset provided by Prigent et al., 2005; 2012) and roughness from plants (time-varying, as a function of CLM's LAI). We further include the dust emission intermittency effects due to boundary-layer turbulence.

Changes in files mainly include:
src/biogeochem/DUSTMod.F90
src/biogeophys/SoilStateInitTimeConstMod.F90
(Updates on 3 Feb 2023:
Current method: reading in Prigent's small-scale roughness dataset following the streams approach)
src/cpl/share_esmf/PrigentRoughnessStreamType.F90
src/main/clm_inst.F90
bld/namelist_files/namelist_defaults_ctsm.xml
bld/CLMBuildNamelist.pm
bld/namelist_files/namelist_definition_ctsm.xml

(Old method to be removed: reading in Prigent's small-scale roughness dataset following the fsurdat approach)
src/biogeophys/SoilStateType.F90
src/main/controlMod.F90
src/main/clm_varctl.F90
bld/namelist_files/namelist_definition_ctsm.xml
user_nl_cam
user_nl_clm

Specific notes
CAM applies a source function (for Charlie Zender’s scheme) to the CLM dust emissions. In CESM, the dust emission calculation isn’t finished in CLM and is further processed in CAM before CAM calculates the transport. Because of this, when changing from Zender's scheme to our scheme one also needs to comment out the code block in CAM relevant to the source function. The relevant changes should be made in this file:
cam/src/chemistry/modal_aero/dust_model.F90
We also posted an issue (#1836 and ESCOMP/CAM#651) to propose moving the source function from CAM to CLM.
Francis Vitt has posted a PR (ESCOMP/CAM#748) to remove Zender's source function and global tuning factor from CAM (Updated on 3 Feb 2023).

Contributors other than yourself, if any:
@ekluzek

CTSM Issues Fixed (include github issue #):
Fixes #1604
Are answers expected to change (and if so in what way)? Yes

Any User Interface Changes (namelist or namelist defaults changes)?
Yes. For now, mainly
bld/namelist_files/namelist_definition_ctsm.xml

Testing performed, if any:
The changes above were used to simulate an I case (using GSWP3 met fields) and an F case (CAM6 nudged toward MERRA-2 met fields).
They have not been tested following the guideline yet.

Definition of ready:

  • Create a dataset based on the Prigent raw data
  • Move surface roughness data from surface dataset to streams file using above data
  • Convert the surface roughness units from the raw Prigent format to the drag partition needed
  • Make sure can turn new scheme on or off
  • Update to ctsm5.2.018
  • Run testing with Leung on for all and tag
  • Update CAM/CICE to latest cesm3_0_beta02 tag
  • Make a branch tag for that (have Danny test this one out after the gitfleximod issue is resolved)
  • Add specific testing for the new scheme
  • Remove CAM and CICE from .gitmodules
  • Handle bit-for-bit things to do in conversations
  • Run testing and make a branch tag showing that answers are identical to branch_tags/dustemisdev.n07_ctsm5.2.018
  • Make Zender2003 the default for all physics
  • Make sure all conversations are closed
  • Run all testing

ekluzek and others added 7 commits August 22, 2022 12:06
Do a diff of the dmleung DUSTEMIS branch based off of release-clm5.0.34
to ctsm5.1.dev106 and apply the diff after updating the paths for
namelist_definition and lnd_import_export.F90 in the diff.

git apply -3 dust.diff

Diffs with conflicts:
	modified:   src/biogeochem/DUSTMod.F90
	modified:   src/biogeophys/SoilStateInitTimeConstMod.F90
	modified:   src/main/controlMod.F90
	modified:   src/cpl/mct/lnd_import_export.F90

The changes in lnd_import_export were to change a check for negative
LW that seems to be removed in the latest version.
…abort, don't output USTAR as FV is already output in FrictionVelocity
…ybrid drag partitioning. (previous use of wt_lunit in DUSTMod was not working because wt_lunit was deallocated after CTSM initialization.)
@ekluzek ekluzek self-assigned this Nov 10, 2022
@ekluzek ekluzek added enhancement new capability or improved behavior of existing capability tag: enh - new science labels Nov 10, 2022
…orce the outgoing longwave radiation to be non-negative.
…gh_fct) since the stream methods is here (dmleung 31 Mar 2023)
@ekluzek
Copy link
Collaborator

ekluzek commented Apr 28, 2023

I ran the test list for the PR as it is, and ran into a bunch of problems on cheyenne, that will need to be resolved. Hopefully, most of these issues are cascading errors from one or two problems and not a long list of individual problems. There was 57 tests that passed, do

In this iteration the new scheme is hardcoded to on, so we don't have to have special tests for the new scheme. But, we want to ensure that the new scheme works in all cases so it's a good to run it in all configurations to see what it fails in.

================================================================================
These tests are pending (some tests may fail in the pending state)
================================================================================
ERP_P36x2_D_Ld5.f10_f10_mg37.I2000Ctsm50NwpSpGswp.cheyenne_intel.clm-default		
ERP_P36x2_Ld30.f45_f45_mg37.I2000Clm51FatesSpCruRsGs.cheyenne_intel.clm-FatesColdDefReducedComplexSatPhen		
FSURDATMODIFYCTSM_D_Mmpi-serial_Ld1.5x5_amazon.I2000Clm50SpRs.cheyenne_intel		
FUNITCTSM_P1x1.f10_f10_mg37.I2000Clm50Sp.cheyenne_intel		
LILACSMOKE_D_Ld2.f10_f10_mg37.I2000Ctsm50NwpSpAsRs.cheyenne_intel.clm-lilac		
PFS_Ld10_PS.f19_g17.I2000Clm50BgcCrop.cheyenne_intel		
SMS_Lm1_D.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_intel.clm-output_crop_highfreq		
SMS_Ly1_Mmpi-serial.1x1_brazil.IHistClm50BgcQianRs.cheyenne_intel.clm-output_bgc_highfreq		
================================================================================
These tests failed
================================================================================
DAE_C2_D_Lh12.f10_f10_mg37.I2000Clm50BgcCrop.cheyenne_intel.clm-DA_multidrv		
DAE_N2_D_Lh12_Vmct.f10_f10_mg37.I2000Clm50BgcCrop.cheyenne_intel.clm-DA_multidrv		
ERI_D_Ld9.T31_g37.I2000Clm50Sp.cheyenne_intel.clm-SNICARFRC		
ERI_D_Ld9.f10_f10_mg37.I1850Clm45Bgc.cheyenne_gnu.clm-default		
ERI_D_Ld9.f10_f10_mg37.I1850Clm51Bgc.cheyenne_gnu.clm-default		
ERI_D_Ld9.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_gnu.clm-default		
ERI_D_Ld9.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-default		
ERI_D_Ld9.ne30_g17.I2000Clm50BgcCru.cheyenne_intel.clm-vrtlay		
ERP_D.f10_f10_mg37.IHistClm51Bgc.cheyenne_gnu.clm-decStart		
ERP_D.f10_f10_mg37.IHistClm51Bgc.cheyenne_intel.clm-decStart		
ERP_D_Ld10.f10_f10_mg37.I1850Clm51BgcCrop.cheyenne_intel.clm-ADspinup		
ERP_D_Ld10_P36x2.f10_f10_mg37.IHistClm51BgcCrop.cheyenne_intel.clm-ciso_decStart		
ERP_D_Ld10_P36x2_Vmct.f10_f10_mg37.IHistClm51BgcCrop.cheyenne_intel.clm-ciso_decStart		
ERP_D_Ld3_P36x2.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_gnu.clm-default		
ERP_D_Ld3_P36x2.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-default		
ERP_D_Ld3_PS.f09_g17.I2000Clm50Sp.cheyenne_intel.clm-prescribed		
ERP_D_Ld3_Vmct_PS.f09_g17.I2000Clm50Sp.cheyenne_intel.clm-prescribed		
ERP_D_Ld5.f10_f10_mg37.I1850Clm50Bgc.cheyenne_gnu.clm-drydepnomegan		
ERP_D_Ld5.f10_f10_mg37.I1850Clm50BgcCropG.cheyenne_gnu.clm-glcMEC_changeFlags		
ERP_D_Ld5.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_gnu.clm-ciso_flexCN_FUN		
ERP_D_Ld5.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_gnu.clm-fire_emis		
ERP_D_Ld5.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-anoxia		
ERP_D_Ld5.f10_f10_mg37.I2000Clm50Sp.cheyenne_gnu.clm-reduceOutput		
ERP_D_Ld5.f10_f10_mg37.I2000Clm50Sp.cheyenne_intel.clm-reduceOutput		
ERP_D_Ld5.f10_f10_mg37.I2000Clm50Vic.cheyenne_intel.clm-vrtlay		
ERP_D_Ld5.f10_f10_mg37.I2000Clm51Sp.cheyenne_intel.clm-decStart		
ERP_D_Ld5.f10_f10_mg37.IHistClm45Sp.cheyenne_intel.clm-decStart		
ERP_D_Ld5.f10_f10_mg37.IHistClm50BgcCrop.cheyenne_intel.clm-allActive		
ERP_D_Ld5.f10_f10_mg37.IHistClm50SpCru.cheyenne_gnu.clm-drydepnomegan		
ERP_D_Ld5.f10_f10_mg37.IHistClm51Sp.cheyenne_intel.clm-default		
ERP_D_P36x2_Ld3.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_gnu.clm-default		
ERP_D_P36x2_Ld3.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_intel.clm-default		
ERP_D_P36x2_Ld3.f10_f10_mg37.I1850Clm51BgcCrop.cheyenne_gnu.clm-mimics		
ERP_D_P36x2_Ld3.f10_f10_mg37.I2000Clm45BgcCrop.cheyenne_gnu.clm-no_subgrid_fluxes		
ERP_D_P36x2_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_gnu.clm-default		
ERP_D_P36x2_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_gnu.clm-snowveg_norad		
ERP_D_P36x2_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-cn_conly		
ERP_D_P36x2_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-default		
ERP_D_P36x2_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-flexCN_FUN		
ERP_D_P36x2_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-luna		
ERP_D_P36x2_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-noFUN_flexCN		
ERP_D_P36x2_Ld3.f10_f10_mg37.I2000Clm51BgcCrop.cheyenne_intel.clm-coldStart		
ERP_D_P36x2_Ld30.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-default		
ERP_D_P36x2_Ld5.f10_f10_mg37.I2000Clm50BgcCropRtm.cheyenne_intel.clm-irrig_spunup		
ERP_D_P36x2_Ld5.f10_f10_mg37.I2000Clm51BgcCrop.cheyenne_intel.clm-irrig_spunup		
ERP_P36x2_D.f10_f10_mg37.I2000Clm50SpRtmFl.cheyenne_intel.clm-default		
ERP_P36x2_D_Ld10.f10_f10_mg37.IHistClm50SpG.cheyenne_intel.clm-glcMEC_decrease		
ERP_P36x2_D_Ld3.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_gnu.clm-extra_outputs		
ERP_P36x2_D_Ld5.f10_f10_mg37.I1850Clm45BgcCrop.cheyenne_intel.clm-crop		
ERP_P36x2_D_Ld5.f10_f10_mg37.I1850Clm45BgcCru.cheyenne_intel.clm-default		
ERP_P36x2_D_Ld5.f10_f10_mg37.I1850Clm50Bgc.cheyenne_intel.clm-ciso		
ERP_P36x2_D_Ld5.f10_f10_mg37.I2000Clm45Sp.cheyenne_intel.clm-default		
ERP_P36x2_D_Ld5.f10_f10_mg37.I2000Clm50Sp.cheyenne_gnu.clm-default		
ERP_P36x2_D_Ld5.f10_f10_mg37.I2000Ctsm50NwpBgcCropGswp.cheyenne_intel.clm-default		
ERP_P36x2_D_Ld5.f10_f10_mg37.IHistClm45BgcCru.cheyenne_intel.clm-decStart		
ERP_P72x2_D_Ld5.f19_g17_gris4.I1850Clm50BgcCropG.cheyenne_intel.clm-glcMEC_increase		
ERP_P72x2_Lm7_Vmct.f10_f10_mg37.I2000Clm50BgcCrop.cheyenne_intel.clm-irrig_alternate_monthly		
ERS_D.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_intel.clm-reseedresetsnow		
ERS_D_Ld10.f10_f10_mg37.IHistClm50Sp.cheyenne_intel.clm-collapse_pfts_78_to_16_decStart_f10		
ERS_D_Ld12.f10_f10_mg37.I1850Clm50BgcCropG.cheyenne_intel.clm-glcMEC_spunup_inc_dec_bgc		
ERS_D_Ld3.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_gnu.clm-default		
ERS_D_Ld3.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_intel.clm-clm50dynroots		
ERS_D_Ld3.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_intel.clm-default		
ERS_D_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-deepsoil_bedrock		
ERS_D_Ld3_PS.f09_g17.I2000Clm50FatesRs.cheyenne_intel.clm-FatesColdDef		
ERS_D_Ld5.f10_f10_mg37.I2000Clm50BgcCropRtm.cheyenne_intel.rtm-rtmOnFloodOnEffvelOn		
ERS_D_Ld5.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-default		
ERS_D_Ld5.f10_f10_mg37.I2000Clm50Fates.cheyenne_intel.clm-FatesColdDef		
ERS_D_Ld5.f10_f10_mg37.IHistClm50BgcQian.cheyenne_intel.clm-ciso_bombspike1963DecStart		
ERS_D_Ld5_Mmpi-serial.1x1_mexicocityMEX.I1PtClm50SpRs.cheyenne_gnu.clm-CLM1PTStartDate		
ERS_D_Ld5_Vmct.f10_f10_mg37.I2000Clm50BgcCropRtm.cheyenne_intel.rtm-rtmOnFloodOnEffvelOn		
ERS_D_Ld6.f10_f10_mg37.I1850Clm45BgcCrop.cheyenne_gnu.clm-clm50CMIP6frc		
ERS_D_Ld6.f10_f10_mg37.I1850Clm45BgcCrop.cheyenne_intel.clm-clm50CMIP6frc		
ERS_D_Mmpi-serial_Ld5.1x1_brazil.I2000Clm50FatesRs.cheyenne_gnu.clm-FatesColdDef		
ERS_D_Mmpi-serial_Ld5.5x5_amazon.I2000Clm50FatesRs.cheyenne_intel.clm-FatesColdDef		
ERS_D_Mmpi-serial_Ld5.5x5_amazon.I2000Clm51FatesRs.cheyenne_intel.clm-FatesColdDef		
ERS_Ld3_D.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_gnu.clm-rad_hrly_light_res_half		
ERS_Ly3_P72x2_Vmct.f10_f10_mg37.IHistClm50BgcCropG.cheyenne_intel.clm-cropMonthOutput		
LII2FINIDATAREAS_D_P72x2_Ld1.f09_g17.I1850Clm50BgcCrop.cheyenne_intel.clm-default		
LII_D_Ld3_PS.f19_g17.I2000Clm50BgcCrop.cheyenne_intel.clm-default		
LVG_Ld5_D.f10_f10_mg37.I1850Clm51Bgc.cheyenne_intel.clm-no_vector_output		
PEM_D_Ld5.ne30_g17.I2000Clm50BgcCru.cheyenne_intel.clm-default		
PET_P36x2_D.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_intel.clm-default		
REUSEINITFILES_D_Ld1.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_gnu.clm-default		
SMS_C2_D_Lh12.f10_f10_mg37.I2000Clm50Sp.cheyenne_intel.clm-pauseResume		
SMS_D.1x1_brazil.I2000Clm51FatesSpCruRsGs.cheyenne_gnu.clm-FatesColdDefDryDepReducedComplexSatPhen		
SMS_D.1x1_brazil.I2000Clm51FatesSpCruRsGs.cheyenne_gnu.clm-FatesColdDefMeganReducedComplexSatPhen		
SMS_D.f10_f10_mg37.I2000Clm51BgcCrop.cheyenne_nvhpc.clm-crop		EXPECTED
SMS_D_Ld1_Mmpi-serial.f45_f45_mg37.I2000Clm50SpRs.cheyenne_intel.clm-ptsRLA		
SMS_D_Ld1_PS.f09_g17.I1850Clm50BgcSpinup.cheyenne_intel.clm-cplhist		
SMS_D_Ld1_PS.f09_g17.I1850Clm50Sp.cheyenne_intel.clm-default		
SMS_D_Ld1_PS.f19_f19_mg17.I2010Clm50Sp.cheyenne_intel.clm-clm50cam6LndTuningMode		
SMS_D_Ld3.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_intel.clm-default		
SMS_D_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_gnu.clm-default		
SMS_D_Ld3.f10_f10_mg37.I2000Clm50BgcCru.cheyenne_intel.clm-default		
SMS_D_Ld3_PS.f09_g17.I1850Clm50BgcNoAnthro.cheyenne_intel.clm-decStart1851_noinitial		
SMS_D_Ld5.f10_f10_mg37.I2000Clm45Fates.cheyenne_intel.clm-FatesColdDef		
SMS_D_Ld5.f10_f10_mg37.I2000Clm50FatesRs.cheyenne_gnu.clm-FatesColdDef		
SMS_D_Ld5.f10_f10_mg37.I2000Clm50FatesRs.cheyenne_intel.clm-FatesColdDef		
SMS_D_Ld5.f10_f10_mg37.ISSP126Clm50BgcCrop.cheyenne_intel.clm-datm_ssp126_anom_forc		
SMS_D_Lm1_Mmpi-serial.CLM_USRDAT.I1PtClm50SpRs.cheyenne_intel.clm-USUMB_nuopc		
SMS_D_Lm6_P144x1.f45_f45_mg37.I2000Clm50FatesRs.cheyenne_intel.clm-FatesColdDef		
SMS_D_Ln9_P36x3.f19_g17.IHistClm50Sp.cheyenne_intel.clm-waccmx_offline		
SMS_D_Ln9_P36x3_Vmct.f19_g17.IHistClm50Sp.cheyenne_intel.clm-waccmx_offline		
SMS_D_Vmct_Lm1_Mmpi-serial.CLM_USRDAT.I1PtClm50SpRs.cheyenne_intel.clm-USUMB_mct		
SMS_Ld2_D_PS.f09_g17.I1850Clm50BgcCropCmip6.cheyenne_intel.clm-basic_interp		
SMS_Vmct_D_Ld1_PS.f09_g17.I1850Clm50BgcSpinup.cheyenne_intel.clm-cplhist		
SSP_D_Ld10.f10_f10_mg37.I1850Clm51Bgc.cheyenne_intel.clm-rtmColdSSP		
SSP_D_Ld4.f10_f10_mg37.I1850Clm50BgcCrop.cheyenne_intel.clm-ciso_rtmColdSSP

@ekluzek
Copy link
Collaborator

ekluzek commented May 26, 2023

@dmleung and I went over this today. I'm getting a floating point exception in the following line in the code when DEBUG=TRUE. As you can see at the top a divide by zero is already protected against. We are both going to work on this and come up with a solution that we'll agree on...

            if ((12_r8 - 0.5_r8 * stblty(p)) .GE. 0.001_r8) then
               u_sd_slt(p) = wnd_frc_slt * (12_r8 - 0.5_r8 * stblty(p))**0.333_r8
            else
               u_sd_slt(p) = 0.001_r8   ! should have used 0 theoretically; used 0.001 here to avoid undefined values
            end if

            ! threshold velocities
            ! Here wnd_frc_thr_slt is the fluid threshold; wnd_frc_thr_dry(p) is the dry fluid threshold; B_it*wnd_frc_thr_dry(p) is the impact threshold, -dml, 1 Mar 2021
            ! fluid threshold wind at 0.1 m saltation height
            u_fld_thr(p) = (wnd_frc_thr_slt/k) * log(0.1_r8 / 1e-4_r8)
            ! impact threshold wind at 0.1 m saltation height
            u_impct_thr(p) = (wnd_frc_thr_slt_it/k) * log(0.1_r8 / 1e-4_r8)  ! to avoid model error

            ! threshold crossing rate
            thr_crs_rate(p) = (exp((u_fld_thr(p)**2_r8 - u_impct_thr(p)**2_r8 - 2_r8 * u_mean_slt(p) * (u_fld_thr(p) - u_impct_thr(p))) / (2_r8 * u_sd_slt(p)**2_r8)) + 1_r8)**(-1_r8)

…exp is going to be large and thus end up with a very small term
@ekluzek
Copy link
Collaborator

ekluzek commented Aug 11, 2024

Tests look as expected. Izumi finished, while Derecho has some tests in the develop queue still running, but I'll let them finish and report on any problems afterwards.

@ekluzek ekluzek merged commit 289913e into ESCOMP:master Aug 11, 2024
2 checks passed
@wangbr2023
Copy link

Hi, I am using the default CESM 2.1.3.

I have recently read articles related to this code. I want to apply this solution to my model setup, can I know exactly how I should use the code he provided. Do I need to upload all the files in the Files Changed to the corresponding directory in my cesm. My email is [email protected] and I would appreciate any help I can get.

Best wishes!

@dmleung
Copy link
Contributor Author

dmleung commented Sep 21, 2024

Hi @wangbr2023 , thanks for your interest!
If you want to code the scheme yourself in your CESM2.1.3 sandbox, the modified files in PR #1712 are what you want to copy to your CESM2.1.3. The files there are from CESM2.1.0, so they are highly similar to CESM2.1.3. You might need to resolve some small conflicts to make sure the files in #1712 work in CESM2.1.3, but it should be quite easy. You can see what we have done in this PR #1897 in the modified files; a lot of works here are not too necessary for you if you just want to test your CESM with a new dust emission scheme. (e.g., you can see we built software infrastructure to split Zender_2003 and Leung_2023 schemes into two F90 files, which is not what you need). So, using #1712 files would be much better and easier.
This new dust emission scheme is now included in the latest CESM and CTSM tags. But it will take some time before CESM3 comes out (maybe a few more months). When CESM3 comes out the easiest way to use the scheme is to update your sandbox to CESM3.
I hope this helps! Let me know if you have more questions or if I could help in any other ways.

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 science Enhancement to or bug impacting science
Projects
Status: Ready to eat (Done!)
Status: Done
Development

Successfully merging this pull request may close these issues.

A new physically based dust emission scheme with more aeolian physics
5 participants