Skip to content

add namelist option for dust emission scheme#8342

Draft
mingxuanwupnnl wants to merge 1 commit into
masterfrom
mingxuanwupnnl/eamxx/mamxx_option_for_v3dustemiss
Draft

add namelist option for dust emission scheme#8342
mingxuanwupnnl wants to merge 1 commit into
masterfrom
mingxuanwupnnl/eamxx/mamxx_option_for_v3dustemiss

Conversation

@mingxuanwupnnl
Copy link
Copy Markdown
Contributor

@mingxuanwupnnl mingxuanwupnnl commented Apr 30, 2026

Add a namelist option for dust emission scheme, 1 being the default Zender et al. (2003), 2 being Kok et al. (2014).

There are a few issues here.

  1. Currently, we don't have tuning factor for dust and sea salt emission in namelist. They are fixed and hardcoded in MAMxx.
    If we switch to K14 scheme, it need a different tuning factor.

  2. I reset soil_erodibility to be one, in that case, it will be always larger than the threshold in dust emission calculation. We can also pass the emission option to dust_emis and change the if statement
    if (soil_erodibility >= soil_erod_threshold) {

  3. initial test show large amount of dust emission in the Antarctic costal regions. Need to check land soil moisture/land inital condition
    DUEM.tiff

@mingxuanwupnnl mingxuanwupnnl added Atmosphere EAMxx C++ based E3SM atmosphere model (aka SCREAM) MAM4xx MAM4xx related changes labels Apr 30, 2026
@github-actions
Copy link
Copy Markdown
Contributor

PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://E3SM-Project.github.io/E3SM/pr-preview/pr-8342/

Built to branch gh-pages at 2026-04-30 05:13 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

//-----------------------------------------------------------------
// This data is time-independent, we read all data here for the
// entire simulation
soilErodibilityFunc::update_soil_erodibility_data_from_file(
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.

@mingxuanwupnnl, this call only populates soil_erodibility_. Is that correct? If so, we can skip the computation and just set soil_erodibility_ to 1.

if (dust_emis_scheme == 1) {
  soilErodibilityFunc::update_soil_erodibility_data_from_file(...);
} else if (dust_emis_scheme == 2) {
  Kokkos::deep_copy(soil_erodibility_, 1.0);
}

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.

Yes, this works too:
soilErodibilityFunc::update_soil_erodibility_data_from_file(...);
if (dust_emis_scheme == 2) Kokkos::deep_copy(soil_erodibility_, 1.0);

I don't know which way is better from the software engineering perspective

<!-- scale factors (applied to data read from file) -->
<srf_emis_scale_factor_for_dms type="real" doc="Surface emissions scale factor for DMS">1.0</srf_emis_scale_factor_for_dms>

<dust_emis_scheme type="integer" doc="Dust emission scheme, 1: Zender et al. (2003), 2: Kok et al. (2014)">1</dust_emis_scheme>
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.

I wonder if, instead of type="integer", we could use type="string" and labels instead of 1 or 2. In the code, we can then use an enum.

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.

we used integer for this option in v3. I'd prefer the consistency, if no other differences. I suspect the option 1 will be used often, as it is more of a backup.

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

Labels

Atmosphere EAMxx C++ based E3SM atmosphere model (aka SCREAM) MAM4xx MAM4xx related changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants