Skip to content

[Dycore] Acoustic Substepping W/ Moisture#3169

Draft
AMLattanzi wants to merge 32 commits into
erf-model:developmentfrom
AMLattanzi:MoistSubStepping
Draft

[Dycore] Acoustic Substepping W/ Moisture#3169
AMLattanzi wants to merge 32 commits into
erf-model:developmentfrom
AMLattanzi:MoistSubStepping

Conversation

@AMLattanzi
Copy link
Copy Markdown
Collaborator

@AMLattanzi AMLattanzi commented May 12, 2026

Summary

This PR explores formulations for the acoustic sub-stepping algorithm with moisture. The approach taken here is to not transport theta_m but to construct theta_m by including q_v as a fast variable.

Approach

image image image

Additional Changes

Couple the acoustic solver with macrophysics. Tendencies computed for $$\theta_d; q_v; q_c$$

Todo

  • Protect against the case of MoistureType::None
  • Fully migrate qv update to slow pre (diffusion)
  • Implicit diffusion of qv as a fast variable
  • Correct the _NS sub-stepping file

AMLattanzi and others added 30 commits May 4, 2026 13:19
…ut update moist vars in place; improve qc advection stability.
* remora coupling inputs.

* more descriptive file name.
* add tagging and inputs file.

* oneway coupling.

* Fix refinement criteria and use surf layer with zero bulk coeff to leverage implicit diff.

* Fix supercell query.
@AMLattanzi
Copy link
Copy Markdown
Collaborator Author

Running WPS for 10 steps with development and this PR:

Dev: Cloud fraction 0.258 (oscillated in time)
PR : Cloud fraction 0.258 (oscillated in time; coupling = false)
PR : Cloud fraction 0.941 (monotonically grew in time; coupling = true)

WPS inputs changes:

erf.fixed_dt  = 10.0 
erf.fixed_mri_dt_ratio = 6

erf.macrophysics_acoustic_coupling = true/false

erf.dycore_horiz_adv_type    = Upwind_3rd
erf.dycore_vert_adv_type     = Upwind_3rd
erf.dryscal_horiz_adv_type   = Upwind_3rd_SL
erf.dryscal_vert_adv_type    = Upwind_3rd_SL
erf.moistscal_horiz_adv_type = Upwind_3rd_SL
erf.moistscal_vert_adv_type  = Upwind_3rd_SL

erf.implicit_before_substep     = true
erf.implicit_thermal_diffusion  = true
erf.implicit_moisture_diffusion = true
erf.implicit_momentum_diffusion = true
erf.vert_implicit_fac           = 1. 1. 0.


if (l_use_moisture) {
Real fast_rhs_rhoqv = -( temp_rhs_arr(i,j,k,RhoTheta_comp+1) + myhalf *
( zflux_hi * (prim(i,j,k,PrimQ1_comp) + prim(i,j,k+1,PrimQ1_comp)) -
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The vertical advection here often leads to negative $$q_v$$. The swing in $$\Omega$$ between substeps in this PR does not appear to be substantially larger than the development branch either.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant