ESCOMP / ESCOMP/CTSM

Plan to phase out LND_SETS_DUST_EMIS_DRV_FLDS

Open
#2,713 5 comments 0 reactions 1 assignee Claimed by @ekluzek View on GitHub
code health external usability
Dominant language
Fortran
Stars
352
Forks
361
Avg merge
6d 6h
Merged PRs (30d)
8

Description

LND_SETS_DUST_EMIS_DRV_FLDS was added to ctsm5.2.019 as a way to bridge between how dust emissions are currently handled between CAM and CTSM to a future way we want to handle it. Right now we want CAM to be able to act in a backwards compatible way and have control, until we can move the control all the way over to CTSM. Longer term CTSM should have control and CAM listens to it (with the ability for CAM users to change it if they need to).

The way it's working now in #2699 is that for CTSM standalone LND_SETS_DUST_EMIS_DRV_FLDS is set to TRUE and controlled by CTSM. When coupled to CAM (as in https://github.com/ESCOMP/CAM/pull/1104). It's set to FALSE and CAM controls it. However, when CAM is controlling it the CTSM namelist still needs to know what it's set to so that the Prigent streams can be appropriately set (#2687). Which means CTSM needs to read in the drv_flds_in settings (at least for dust_emis_method and zender_soil_erod_source) from the CAM namelist. This CAN be done -- but it relies on the fact that the CAM namelist is set first, and it relies on assuming the CAM namelist is going to be accessible from $CASEDIR/Buildconf/camconf/drv_flds_in. If any of this changes because of an update to CAM -- it'll break. Since, this has been stable over the last decade or so -- this might be acceptable though. But, in order to remove this dependence I think it would be good to phase this feature out.

There's a couple different paths that could be done to achieve this, but here I'll list what I plan to do for now. We should have a few people discuss this to decide on the best path forward especially for the longer term solution.

@fvitt

Definition of done:
- [x] CTSM tag with short term fix
- [x] CAM tag with short term fix
- [x] Think about the dust scaling knob (should it be in CTSM or CAM?) What should it look like? If in CAM you can have one knob for Zender and another for Leung and at runtime the appropriate one used. But, that means the user will have to realize which one to use, which isn't ideal. But, also this will likely need to be tuned for different physics, and chemistry options in CAM. Will go with dust scaling knob inside of CAM, and it will JUST be set for the tuned physics versions, when users deviate from that -- they may have unexpected things happen.
- [ ] CAM needs a tag where Leung is turned on IN CAM for CAM7 physics
- [ ] CTSM side, when coupled to CAM we need to set: --no-megan, --no-drydep --no-fire_emiss,.
- [ ] In CAM we need to turn off reading in Zender soil erod source files and use them from CTSM (so zender_soil_erod_source = 'lnd'). This will need to be tested to make sure it's correct.
- [x] Add an abort to CMEPS if the CLM and CAM drv_flds_in namelists are in conflict (identical or merge is OK).
- [ ] CAM tag where LND_SETS_DUST_EMIS_DRV_FLDS==TRUE, and isn't allowed to be FALSE, as well as NOT allowing CAM to set dust_emis_method nor zender_soil_erod_source.
- [ ] CTSM tag where LND_SETS_DUST_EMIS_DRV_FLDS is removed and remove the read of the CAM drv_flds_in namelist
- [ ] CAM tag where LND_SETS_DUST_EMIS_DRV_FLDS is removed

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.