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)