diff --git a/bld/build-namelist b/bld/build-namelist
index 4d1c61eb8a..cdcd77ff50 100755
--- a/bld/build-namelist
+++ b/bld/build-namelist
@@ -3195,7 +3195,11 @@ if ($waccmx) {
add_default($nl,'ionos_xport_nsplit');
add_default($nl,'steady_state_ion_elec_temp', 'val'=>'.false.');
add_default($nl,'oplus_ring_polar_filter');
+ add_default($nl,'oplus_shapiro_const');
add_default($nl,'rxn_rate_sums');
+ if ($cfg->get('hgrid') =~ /ne120/) {
+ add_default($nl,'se_min_temperature', 'val'=>'105.D0');
+ }
}
# Chemistry options
diff --git a/bld/configure b/bld/configure
index 7f7e6a3f4c..2b7f5d2202 100755
--- a/bld/configure
+++ b/bld/configure
@@ -1227,7 +1227,9 @@ if ($phys_pkg eq 'cam7') {
}
}
elsif ($waccmx) {
- if ($phys_pkg eq 'cam6') {
+ if ($hgrid =~ /ne120/) {
+ $nlev = 273;
+ } elsif ($phys_pkg eq 'cam6') {
$nlev = 130;
} else {
$nlev = 126;
diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml
index a8be732e63..86e88d1dbb 100644
--- a/bld/namelist_files/namelist_defaults_cam.xml
+++ b/bld/namelist_files/namelist_defaults_cam.xml
@@ -212,6 +212,7 @@
atm/cam/inic/se/ape_cam5_ne120np4_L30_c170419.nc
atm/cam/inic/se/F2000climo_ne120pg3_mt13_01-01-00000_c200420.nc
atm/cam/inic/se/ape_cam6_ne120np4_L32_c170908.nc
+atm/waccm/ic/fx2000_ne120pg3L273.001.cam.i.0002-01-01-00000.noBRCL_c250522.nc
atm/cam/inic/homme/cami_1850-01-01_ne240np4_L26_c110314.nc
atm/cam/inic/homme/cami_0000-09-01_ne240np4_L26_c061106.nc
@@ -880,7 +881,10 @@
30
30
90
+180
.true.
+3.d-2
+6.d-3
144,96
@@ -888,11 +892,13 @@
288,192
288,192
576,384
+ 576,384
80x97
160x193
160x193
320x385
+320x385
atm/cam/coords/fv0.47x0.63_esmf_c210305.nc
@@ -905,6 +911,7 @@
share/meshes/ne16pg3_ESMFmesh_cdf5_c20211018.nc
atm/cam/coords/ne30np4_esmf_c210305.nc
atm/cam/coords/ne30pg3_esmf_20200428.nc
+share/meshes/ne120pg3_ESMFmesh_cdf5_c20211018.nc
1.00D0
@@ -1978,6 +1985,7 @@
atm/cam/chem/trop_mam/atmsrf_ne60np4_110920.nc
atm/cam/chem/trop_mam/atmsrf_ne120np4_110920.nc
atm/cam/chem/trop_mam/atmsrf_ne120np4.pg2_200109.nc
+atm/cam/chem/trop_mam/atmsrf_ne120np4.pg3_c210324.nc
atm/cam/chem/trop_mam/atmsrf_ne240np4_110920.nc
atm/cam/chem/trop_mam/atmsrf_ne0np4conus30x8_161116.nc
@@ -3178,6 +3186,7 @@
18
18
18
+ 30
1
3
@@ -3191,6 +3200,7 @@
2
4
40
+ 180
1
2
@@ -3225,13 +3235,16 @@
1.0
-1
+ 3.0
-1
7.5
7.5
+ 5.0
-1
30
30
30
+ 100
1
2
@@ -3258,6 +3271,7 @@
10
7
+ 10
3
2
@@ -3265,6 +3279,7 @@
4
2
3
+ 5
-1
-1
diff --git a/bld/namelist_files/namelist_definition.xml b/bld/namelist_files/namelist_definition.xml
index a2946cd243..c427d1837d 100644
--- a/bld/namelist_files/namelist_definition.xml
+++ b/bld/namelist_files/namelist_definition.xml
@@ -3226,7 +3226,7 @@ Default: .false.
- The fraction of the boundary layer (PBL) depth, over which to mix the initial ZM convective parcel properties (fraction).
+ The fraction of the boundary layer (PBL) depth, over which to mix the initial ZM convective parcel properties (fraction).
Default: 0.5
@@ -8191,6 +8191,14 @@ multiplied by a factor of se_molecular_diff.
Default: 0.
+
+Used by spectral element dynamical core to apply floor to temperature.
+If set to a value greater than zero the floor is applied.
+Otherwise, no floor is applied.
+Default: 0.
+
+
Number of hyperviscosity subcycles done in tracer advection code.
diff --git a/cime_config/config_pes.xml b/cime_config/config_pes.xml
index fe5db44ecf..32c719dfce 100644
--- a/cime_config/config_pes.xml
+++ b/cime_config/config_pes.xml
@@ -542,6 +542,26 @@
+
+
+
+ -100
+ -100
+ -100
+ -100
+ -100
+ -100
+
+
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+
+
+
none
diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml
index 7e1a969f62..9307a1901f 100644
--- a/cime_config/testdefs/testlist_cam.xml
+++ b/cime_config/testdefs/testlist_cam.xml
@@ -2332,6 +2332,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq1h_wcmxhires/shell_commands b/cime_config/testdefs/testmods_dirs/cam/outfrq1h_wcmxhires/shell_commands
new file mode 100644
index 0000000000..a371a33c20
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/cam/outfrq1h_wcmxhires/shell_commands
@@ -0,0 +1 @@
+./xmlchange ROF_NCPL=\$ATM_NCPL
diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq1h_wcmxhires/user_nl_cam b/cime_config/testdefs/testmods_dirs/cam/outfrq1h_wcmxhires/user_nl_cam
new file mode 100644
index 0000000000..c4dc484285
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/cam/outfrq1h_wcmxhires/user_nl_cam
@@ -0,0 +1,25 @@
+mfilt=1,1,1,1,1,1
+ndens=1,1,1,1,1,1
+nhtfrq=-1,-1,-1,-1,-1,-1
+write_nstep0 = .true.
+
+ avgflag_pertape= 'I', 'I', 'A', 'I', 'I'
+
+ empty_htapes=.true.
+ fincl1= 'Z3GM', 'T', 'U', 'V', 'OMEGA', 'ElecColDens', 'PS', 'O', 'O2', 'H',
+ 'QRS_TOT', 'QRL_TOT', 'KVM', 'EKGW', 'TTGW', 'UTGW_TOTAL', 'VTGW_TOTAL'
+ fincl2= 'Z3GM', 'T', 'U', 'V', 'OMEGA', 'UI', 'VI', 'WI', 'EDens', 'PS', 'O', 'O2', 'H',
+ 'OH', 'NO', 'O3', 'SIGMAHAL', 'SIGMAPED'
+ fincl3 ='T_24_COS', 'T_24_SIN', 'T_12_COS', 'T_12_SIN',
+ 'U_24_COS', 'U_24_SIN', 'U_12_COS', 'U_12_SIN',
+ 'V_24_COS', 'V_24_SIN', 'V_12_COS', 'V_12_SIN',
+ 'QRS_TOT_12_SIN', 'QRS_TOT_12_COS'
+ fincl4 = 'ED1', 'ED2', 'PHIM2D', 'PHIHM', 'HALL_CONDUCTANCE', 'PED_CONDUCTANCE'
+ fincl5 = 'ElecColDens', 'PSL'
+ fincl6 = ' '
+ fincl7 = ' '
+ fincl8 = ' '
+ fincl9 = ' '
+ fincl10= ' '
+
+ ionos_npes = 3200
diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq1h_wcmxhires/user_nl_clm b/cime_config/testdefs/testmods_dirs/cam/outfrq1h_wcmxhires/user_nl_clm
new file mode 100644
index 0000000000..6c044e9a7b
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/cam/outfrq1h_wcmxhires/user_nl_clm
@@ -0,0 +1,28 @@
+!----------------------------------------------------------------------------------
+! Users should add all user specific namelist changes below in the form of
+! namelist_var = new_namelist_value
+!
+! Include namelist variables for drv_flds_in ONLY if -megan and/or -drydep options
+! are set in the CLM_NAMELIST_OPTS env variable.
+!
+! EXCEPTIONS:
+! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting
+! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting
+! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting
+! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting
+! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting
+! Set irrigate by the CLM_BLDNML_OPTS -irrig setting
+! Set dtime with L_NCPL option
+! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options
+! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases
+! (includes $inst_string for multi-ensemble cases)
+! Set glc_grid with CISM_GRID option
+! Set glc_smb with GLC_SMB option
+! Set maxpatch_glcmec with GLC_NEC option
+! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable
+!----------------------------------------------------------------------------------
+hist_nhtfrq = -1
+hist_mfilt = 1
+hist_ndens = 1
+
+flanduse_timeseries = ' '
diff --git a/src/dynamics/se/dycore/control_mod.F90 b/src/dynamics/se/dycore/control_mod.F90
index 92f9509d43..a5b2c95db0 100644
--- a/src/dynamics/se/dycore/control_mod.F90
+++ b/src/dynamics/se/dycore/control_mod.F90
@@ -121,11 +121,13 @@ module control_mod
!
! molecular diffusion
- !
+ !
real(r8), public :: molecular_diff = -1.0_r8
integer, public :: vert_remap_uvTq_alg, vert_remap_tracer_alg
-
integer, public :: pgf_formulation = -1 !PGF formulation - see prim_advance_mod.F90
+
+ real(r8), public :: min_temperature = 0._r8
+
end module control_mod
diff --git a/src/dynamics/se/dycore/prim_advance_mod.F90 b/src/dynamics/se/dycore/prim_advance_mod.F90
index 5d239b654e..25323df956 100644
--- a/src/dynamics/se/dycore/prim_advance_mod.F90
+++ b/src/dynamics/se/dycore/prim_advance_mod.F90
@@ -444,7 +444,7 @@ subroutine advance_hypervis_dp(edge3,elem,fvm,hybrid,deriv,nt,qn0,nets,nete,dt2,
use dimensions_mod, only: nu_scale_top,nu_lev,kmvis_ref,kmcnd_ref,rho_ref,km_sponge_factor
use dimensions_mod, only: nu_t_lev
use control_mod, only: nu, nu_t, hypervis_subcycle,hypervis_subcycle_sponge, nu_p, nu_top
- use control_mod, only: molecular_diff,sponge_del4_lev
+ use control_mod, only: molecular_diff,sponge_del4_lev, min_temperature
use hybrid_mod, only: hybrid_t!, get_loop_ranges
use element_mod, only: element_t
use derivative_mod, only: derivative_t, laplace_sphere_wk, vlaplace_sphere_wk, vlaplace_sphere_wk_mol
@@ -688,6 +688,18 @@ subroutine advance_hypervis_dp(edge3,elem,fvm,hybrid,deriv,nt,qn0,nets,nete,dt2,
enddo
enddo
enddo
+ if (min_temperature>0._r8) then
+ ! apply floor to temperature
+ do ie=nets,nete
+ do k=sponge_del4_lev+2,nlev
+ do j=1,np
+ do i=1,np
+ elem(ie)%state%T(i,j,k,nt) = max(elem(ie)%state%T(i,j,k,nt),min_temperature)
+ end do
+ end do
+ end do
+ end do
+ end if
call tot_energy_dyn(elem,fvm,nets,nete,nt,qn0,'dAH')
end do
diff --git a/src/dynamics/se/dyn_comp.F90 b/src/dynamics/se/dyn_comp.F90
index 53ff8b87df..bdddbf4df4 100644
--- a/src/dynamics/se/dyn_comp.F90
+++ b/src/dynamics/se/dyn_comp.F90
@@ -116,6 +116,7 @@ subroutine dyn_readnl(NLFileName)
use control_mod, only: max_hypervis_courant, statediag_numtrac,refined_mesh
use control_mod, only: molecular_diff, pgf_formulation, dribble_in_rsplit_loop
use control_mod, only: sponge_del4_nu_div_fac, sponge_del4_nu_fac, sponge_del4_lev
+ use control_mod, only: min_temperature
use dimensions_mod, only: ne, npart
use dimensions_mod, only: large_Courant_incr
use dimensions_mod, only: fvm_supercycling, fvm_supercycling_jet
@@ -173,6 +174,8 @@ subroutine dyn_readnl(NLFileName)
real(r8) :: se_molecular_diff
integer :: se_pgf_formulation
integer :: se_dribble_in_rsplit_loop
+ real(r8) :: se_min_temperature = 0.0_r8
+
namelist /dyn_se_inparm/ &
se_fine_ne, & ! For refined meshes
se_ftype, & ! forcing type
@@ -218,7 +221,8 @@ subroutine dyn_readnl(NLFileName)
se_kmax_jet, &
se_molecular_diff, &
se_pgf_formulation, &
- se_dribble_in_rsplit_loop
+ se_dribble_in_rsplit_loop, &
+ se_min_temperature
!--------------------------------------------------------------------------
! defaults for variables not set by build-namelist
@@ -293,6 +297,8 @@ subroutine dyn_readnl(NLFileName)
call MPI_bcast(se_molecular_diff, 1, mpi_real8, masterprocid, mpicom, ierr)
call MPI_bcast(se_pgf_formulation, 1, mpi_integer, masterprocid, mpicom, ierr)
call MPI_bcast(se_dribble_in_rsplit_loop, 1, mpi_integer, masterprocid, mpicom, ierr)
+ call MPI_bcast(se_min_temperature, 1, mpi_real8, masterprocid, mpicom, ierr)
+
if (se_npes <= 0) then
call endrun('dyn_readnl: ERROR: se_npes must be > 0')
end if
@@ -361,6 +367,8 @@ subroutine dyn_readnl(NLFileName)
molecular_diff = se_molecular_diff
pgf_formulation = se_pgf_formulation
dribble_in_rsplit_loop = se_dribble_in_rsplit_loop
+ min_temperature = se_min_temperature
+
if (fv_nphys > 0) then
! Use finite volume physics grid and CSLAM for tracer advection
nphys_pts = fv_nphys*fv_nphys
@@ -496,6 +504,11 @@ subroutine dyn_readnl(NLFileName)
se_write_restart_unstruct
write(iulog, '(a,e9.2)') 'dyn_readnl: se_molecular_diff = ', molecular_diff
+
+ if (min_temperature>0._r8) then
+ write(iulog, '(a,e9.2)') 'dyn_readnl: se_min_temperature = ', min_temperature
+ end if
+
end if
call native_mapping_readnl(NLFileName)