Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions components/eam/bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -4049,8 +4049,8 @@ add_default($nl, 'zmconv_accr_fac');
add_default($nl, 'zmconv_micro_dcs');
add_default($nl, 'zmconv_MCSP_heat_coeff');
add_default($nl, 'zmconv_MCSP_moisture_coeff');
add_default($nl, 'zmconv_MCSP_uwind_coeff');
add_default($nl, 'zmconv_MCSP_vwind_coeff');
add_default($nl, 'zmconv_MCSP_mom_coeff');
add_default($nl, 'zmconv_MCSP_use_full_shear');
#
# moist convection rainwater coefficients
# These no more needed for EAM, including uwshcu_rpen. No need to reset for 'cam5'
Expand Down
4 changes: 2 additions & 2 deletions components/eam/bld/namelist_files/namelist_defaults_eam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1270,8 +1270,8 @@
<!-- MCSP -->
<zmconv_MCSP_heat_coeff >0.0D0</zmconv_MCSP_heat_coeff>
<zmconv_MCSP_moisture_coeff >0.0D0</zmconv_MCSP_moisture_coeff>
<zmconv_MCSP_uwind_coeff >0.0D0</zmconv_MCSP_uwind_coeff>
<zmconv_MCSP_vwind_coeff >0.0D0</zmconv_MCSP_vwind_coeff>
<zmconv_MCSP_mom_coeff >0.0D0</zmconv_MCSP_mom_coeff>
<zmconv_MCSP_use_full_shear >.false.</zmconv_MCSP_use_full_shear>

<!-- Cloud sedimentation -->

Expand Down
10 changes: 6 additions & 4 deletions components/eam/bld/namelist_files/namelist_definition.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3075,15 +3075,17 @@ Multiscale Coherent System Parameterization (MCSP), moisture coefficient
Default: set by build-namelist
</entry>

<entry id="zmconv_MCSP_uwind_coeff" type="real" category="conv"
<entry id="zmconv_MCSP_mom_coeff" type="real" category="conv"
group="zmconv_nl" valid_values="" >
Multiscale Coherent System Parameterization (MCSP), zonal wind coefficient
Multiscale Coherent System Parameterization (MCSP), momentum coefficient
(dimensionless fraction of the storm-relative shear)
Default: set by build-namelist
</entry>

<entry id="zmconv_MCSP_vwind_coeff" type="real" category="conv"
<entry id="zmconv_MCSP_use_full_shear" type="logical" category="conv"
group="zmconv_nl" valid_values="" >
Multiscale Coherent System Parameterization (MCSP), meridional wind coefficient
Multiscale Coherent System Parameterization (MCSP), use the full (u,v) shear
vector instead of zonal-only shear. Default (.false.) preserves E3SMv3 behavior.
Default: set by build-namelist
</entry>

Expand Down
22 changes: 11 additions & 11 deletions components/eam/docs/user-guide/namelist_parameters.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@

| Parameter | Description | Default value |
| ------------------------- | ---------------------------------------------- | ------------------------------------------------- |
| `dust_emis_scheme`* | The v3 dust emission scheme (Kok et al., 2014) | `2` <!-- markdownlint-disable MD033 --><br> (set to 1 to switch to the v1/v2 scheme) |

Check failure on line 42 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:42:166 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md

Check failure on line 42 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:42:79 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md

Check failure on line 42 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:42:30 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md

*This parameter is set in `user_nl_drv`

Expand All @@ -47,13 +47,13 @@

| Parameter | Description | Default value |
| ---------------- | ------------------------------------------------------------------------------------------- | -------------- |
| `se_tstep` | Main dycore timestep. Additional parameters control the hyper viscsosity, trancer and vertical remap timesteps, which are derived from se_tstep. <!-- markdownlint-disable MD033 --><br> units = seconds | Scales linearly with horizontal resolution. <br> NE30 default: `300` |

Check failure on line 50 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:50:294 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md

Check failure on line 50 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:50:223 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md
| `nu` | Tensor hyperviscosity coefficient, independent of spatial resolution. <br> units = 1/s | `3.4e-8` |

Check failure on line 51 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:51:125 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md
| `nu_top` | Scalar viscosity at model top. <br> units = m^2/s | Horizontal resolution dependent <br> NE30 default: `2.5e5` |

Check failure on line 52 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:52:175 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md
| `transport_alg` | Select between semi-lagrangian and Eulerian based transport schemes | `12` = semi-lagranian method with monotinicity and mass preservation |

Check failure on line 53 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:53:185 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md
| `statefreq` | print a varieity of dycore metrics to the atm.log file every “statefreq” timesteps | `480` |
| `vert_remap_alg` | Algorithm used to remap the vertically lagrangian levels back to the reference levels | `10` = strict monotonicity applied on top of a 2nd order accurate PPM method |

Check failure on line 55 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:55:194 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md
| `se_ftype` | Controls how physics tendencies are applied. 0=”dribbled” in during dynamics timesteps. 1=”hard adjustment” after each physics timestep. 2=hybrid approach: hard adjustment for tracers, dribbled for remaining tendencies | `2` |

Check failure on line 56 in components/eam/docs/user-guide/namelist_parameters.md

View workflow job for this annotation

GitHub Actions / linter

Table column style

components/eam/docs/user-guide/namelist_parameters.md:56:244 MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"] https://github.com/DavidAnson/markdownlint/blob/v0.41.1/doc/md060.md

## Modal Aerosol Module

Expand Down Expand Up @@ -135,20 +135,20 @@
| Conv. micro. Parameters | Description | Default value |
| ------------------------- | ----------------------------------------------------------------- | ---------------------- |
| `zmconv_microp` | Convective microphysics option in ZM convection scheme | `true` |
| `zmconv_auto_fac` | Cloud droplet-rain autoconversion enhancement factor in the convective microphysics scheme | `7.0` |
| `zmconv_accr_fac` | Cloud droplet-rain accretion enhancement factor in the convective microphysics scheme | `1.5` |
| `zmconv_micro_dcs` | Autoconversion size threshold for cloud ice to snow (m) | `150.E-6` |
| `zmconv_auto_fac` | Cloud droplet-rain autoconversion factor in the ZM microphysics | `7.0` |
| `zmconv_accr_fac` | Cloud droplet-rain accretion factor in the ZM microphysics | `1.5` |
| `zmconv_micro_dcs` | Autoconversion size threshold for cloud ice to snow (m) | `150.E-6` |

| Mass flux adj. Parameters | Description | Default value |
| ------------------------- | ----------------------------------------------------------------- | ---------------------- |
| `zmconv_clos_dyn_adj` | Apply mass flux adjustment to ZM convection scheme | `true` |

| MCSP Parameters | Description | Default value |
| ---------------------------- | ----------------------------------------------------------------- | ---------------------- |
| `zmconv_mcsp_heat_coeff` | MCSP heating coefficient | `0.3` |
| `zmconv_mcsp_moisture_coeff` | MCSP moisture coefficient | `0.0` |
| `zmconv_mcsp_uwind_coeff` | MCSP zonal wind coefficient | `0.0` |
| `zmconv_mcsp_vwind_coeff` | MCSP meridional wind coefficient | `0.0` |
| `zmconv_clos_dyn_adj` | Apply mass flux adjustment to ZM convection scheme | `true` |

| MCSP Parameters | Description | Default value |
| ---------------------------- | ---------------------------------------------------------------| ---------------------- |
| `zmconv_mcsp_heat_coeff` | MCSP heating coefficient | `0.3` |
| `zmconv_mcsp_moisture_coeff` | MCSP moisture coefficient | `0.0` |
| `zmconv_mcsp_mom_coeff` | MCSP momentum coefficient (fraction of storm-relative shear) | `0.0` |
| `zmconv_mcsp_use_full_shear` | MCSP use full (u,v) shear vector instead of zonal-only shear | `.false.` |

## Cloud Feedback Model Intercomparison Project (CFMIP) Observation Simulator Package

Expand Down
15 changes: 6 additions & 9 deletions components/eam/src/physics/cam/zm/zm_conv.F90
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ module zm_conv
public zm_conv_main_init ! ZM scheme initialization
public zm_conv_main ! ZM scheme calculations
public zm_conv_evap ! ZM scheme evaporation of precip
#ifdef SCREAM_CONFIG_IS_CMAKE ! Public for testing only
#ifdef SCREAM_CONFIG_IS_CMAKE
! Public for testing only
public zm_calc_fractional_entrainment
public zm_downdraft_properties
public zm_cloud_properties
Expand Down Expand Up @@ -110,16 +111,14 @@ end subroutine zm_conv_main_init

!===================================================================================================

subroutine zm_get_gather_index(pcols, ncol, pver, pverp, is_first_step, cape, dcape, &
subroutine zm_get_gather_index(pcols, ncol, is_first_step, cape, dcape, &
cape_threshold_loc, gather_index, lengath)
!----------------------------------------------------------------------------
! Purpose: determine length of gathered arrays
!----------------------------------------------------------------------------
! Arguments
integer, intent(in ) :: pcols ! maximum number of columns
integer, intent(in ) :: ncol ! actual number of columns
integer, intent(in ) :: pver ! number of mid-point vertical levels
integer, intent(in ) :: pverp ! number of interface vertical levels
logical(btype), intent(in ) :: is_first_step ! flag for first step of run
real(r8), dimension(pcols), intent(in ) :: cape ! conv. avail. potential energy [J]
real(r8), dimension(pcols), intent(in ) :: dcape ! CAPE generated by dycor (dCAPE) [J]
Expand All @@ -128,7 +127,7 @@ subroutine zm_get_gather_index(pcols, ncol, pver, pverp, is_first_step, cape, dc
integer, intent( out) :: lengath ! number of columns for gathered arrays
!----------------------------------------------------------------------------
! Local variables
integer :: i, ii
integer :: i
!----------------------------------------------------------------------------
! set local threshold to be used for zm_closure()
if ( zm_param%trig_dcape .and. (.not.is_first_step) ) then
Expand Down Expand Up @@ -239,15 +238,13 @@ subroutine zm_conv_main(pcols, ncol, pver, pverp, is_first_step, time_step, &
real(r8), dimension(pcols) :: t_pcl_lcl ! parcel temperature at lcl [K]
integer, dimension(pcols) :: lcl ! base level index of deep cumulus convection
integer, dimension(pcols) :: lel ! index of highest theoretical convective plume
integer, dimension(pcols) :: lon ! index of onset level for deep convection
integer, dimension(pcols) :: msemax_klev ! index of level with largest moist static energy

real(r8), dimension(pcols,pver) :: t_pcl_m1 ! time n-1 parcel temperatures
real(r8), dimension(pcols,pver) :: q_pcl_sat_m1 ! time n-1 parcel saturation specific humidity
real(r8), dimension(pcols) :: t_pcl_lcl_m1 ! time n-1 parcel Temperature at LCL
integer, dimension(pcols) :: lcl_m1 ! time n-1 base level index of deep cumulus convection
integer, dimension(pcols) :: lel_m1 ! time n-1 index of highest theoretical convective plume
integer, dimension(pcols) :: lon_m1 ! time n-1 index of onset level for deep convection
integer, dimension(pcols) :: msemax_klev_m1 ! time n-1 index of level with largest moist static energy
real(r8), dimension(pcols) :: cape_m1 ! time n-1 CAPE

Expand Down Expand Up @@ -295,7 +292,7 @@ subroutine zm_conv_main(pcols, ncol, pver, pverp, is_first_step, time_step, &

type(zm_microp_st) :: loc_microp_st ! local (gathered) convective microphysics state and tendencies

integer i, ii, k, kk ! loop iterators
integer i, k ! loop iterators
integer msg ! number of missing moisture levels at the top of model

real(r8) qdifr
Expand Down Expand Up @@ -440,7 +437,7 @@ subroutine zm_conv_main(pcols, ncol, pver, pverp, is_first_step, time_step, &

!----------------------------------------------------------------------------
! determine whether active columns for gathering
call zm_get_gather_index(pcols, ncol, pver, pverp, is_first_step, cape, dcape, &
call zm_get_gather_index(pcols, ncol, is_first_step, cape, dcape, &
cape_threshold_loc, gather_index, lengath)
if (lengath.eq.0) then
! Deallocate local microphysics arrays before returning
Expand Down
26 changes: 12 additions & 14 deletions components/eam/src/physics/cam/zm/zm_conv_intr.F90
Original file line number Diff line number Diff line change
Expand Up @@ -109,17 +109,17 @@ subroutine zm_conv_readnl(nlfile)
real(r8) :: zmconv_micro_dcs = unset_r8
real(r8) :: zmconv_MCSP_heat_coeff = 0._r8
real(r8) :: zmconv_MCSP_moisture_coeff = 0._r8
real(r8) :: zmconv_MCSP_uwind_coeff = 0._r8
real(r8) :: zmconv_MCSP_vwind_coeff = 0._r8
real(r8) :: zmconv_MCSP_mom_coeff = 0._r8
logical :: zmconv_MCSP_use_full_shear = .false.
!----------------------------------------------------------------------------
namelist /zmconv_nl/ zmconv_tau, zmconv_alfa, zmconv_ke, zmconv_dmpdz, &
zmconv_tpert_fix, zmconv_tp_fac, zmconv_tiedke_add, &
zmconv_c0_lnd, zmconv_c0_ocn, &
zmconv_c0_lnd, zmconv_c0_ocn, &
zmconv_cape_cin, zmconv_mx_bot_lyr_adj, &
zmconv_trig_dcape, zmconv_trig_ull, zmconv_clos_dyn_adj, &
zmconv_microp, zmconv_auto_fac, zmconv_accr_fac, zmconv_micro_dcs, &
zmconv_MCSP_heat_coeff, zmconv_MCSP_moisture_coeff, &
zmconv_MCSP_uwind_coeff, zmconv_MCSP_vwind_coeff
zmconv_MCSP_mom_coeff, zmconv_MCSP_use_full_shear
!----------------------------------------------------------------------------

if (masterproc) then
Expand Down Expand Up @@ -157,12 +157,12 @@ subroutine zm_conv_readnl(nlfile)
zm_param%micro_dcs = zmconv_micro_dcs

! mesoscale coherent structure parameterization (MCSP) parameters
zm_param%mcsp_t_coeff = zmconv_MCSP_heat_coeff
zm_param%mcsp_q_coeff = zmconv_MCSP_moisture_coeff
zm_param%mcsp_u_coeff = zmconv_MCSP_uwind_coeff
zm_param%mcsp_v_coeff = zmconv_MCSP_vwind_coeff
zm_param%mcsp_t_coeff = zmconv_MCSP_heat_coeff
zm_param%mcsp_q_coeff = zmconv_MCSP_moisture_coeff
zm_param%mcsp_mom_coeff = zmconv_MCSP_mom_coeff
zm_param%mcsp_use_full_shear = zmconv_MCSP_use_full_shear
if ( abs(zm_param%mcsp_t_coeff)>0._r8 .or. abs(zm_param%mcsp_q_coeff)>0._r8 .or. &
abs(zm_param%mcsp_u_coeff)>0._r8 .or. abs(zm_param%mcsp_v_coeff)>0._r8 ) then
abs(zm_param%mcsp_mom_coeff)>0._r8 ) then
zm_param%mcsp_enabled = .true.
else
zm_param%mcsp_enabled = .false.
Expand Down Expand Up @@ -483,8 +483,7 @@ subroutine zm_conv_tend(pblh, mcon, cme, tpert, dlftot, pflx, zdu, &
! flags for MCSP tendencies
logical :: do_mcsp_t = .false.
logical :: do_mcsp_q(pcnst) = .false.
logical :: do_mcsp_u = .false.
logical :: do_mcsp_v = .false.
logical :: do_mcsp_mom = .false.

! MCSP history output variables
real(r8), dimension(pcols,pver) :: mcsp_dt_out ! MCSP tendency for DSE
Expand Down Expand Up @@ -674,11 +673,10 @@ subroutine zm_conv_tend(pblh, mcon, cme, tpert, dlftot, pflx, zdu, &
! a problem with bridging to this routine from C++ for porting ZM to EAMxx
do_mcsp_t = .true.
do_mcsp_q(1) = .true.
do_mcsp_u = .true.
do_mcsp_v = .true.
do_mcsp_mom = .true.

call physics_ptend_init( ptend_mcsp, state%psetcols, 'zm_conv_mcsp_tend', &
ls=do_mcsp_t, lq=do_mcsp_q, lu=do_mcsp_u, lv=do_mcsp_v)
ls=do_mcsp_t, lq=do_mcsp_q, lu=do_mcsp_mom, lv=do_mcsp_mom)

call zm_conv_mcsp_tend( pcols, ncol, pver, pverp, &
ztodt, jctop, zm_const, zm_param, &
Expand Down
Loading
Loading