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
3 changes: 0 additions & 3 deletions bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -4355,9 +4355,6 @@ if ($dyn =~ /se/) {
se_vert_remap_uvTq_alg
se_vert_remap_tracer_alg
se_fvm_supercycling
se_fvm_supercycling_jet
se_kmin_jet
se_kmax_jet
se_molecular_diff
se_pgf_formulation
se_dribble_in_rsplit_loop
Expand Down
29 changes: 14 additions & 15 deletions bld/namelist_files/namelist_defaults_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3240,17 +3240,13 @@

<se_hypervis_scaling se_refined_mesh="1" hypervis_type="tensor" >3.22D0 </se_hypervis_scaling>

<se_hypervis_subcycle > 3 </se_hypervis_subcycle>
<se_hypervis_subcycle >-1 </se_hypervis_subcycle>
<se_hypervis_subcycle waccm_phys="1" model_top="mt" > 3 </se_hypervis_subcycle>
<se_hypervis_subcycle waccm_phys="1" > 2 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne16np4" > 3 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne16np4" model_top="lt" > 1 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne16np4" waccm_phys="1" model_top="none"> 10 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne16np4" waccm_phys="1" waccmx="0" model_top="none"> 9 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne30np4" waccm_phys="1" waccmx="0" model_top="none"> 8 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne30np4" waccm_phys="1" waccmx="1" model_top="none"> 5 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne30np4" model_top="lt" > 2 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne30np4" model_top="mt" > 3 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne0np4.ARCTIC.ne30x4" > 2 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne0np4.POLARCAP.ne30x4" > 2 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne0np4CONUS.ne30x8" > 1 </se_hypervis_subcycle>
Expand All @@ -3262,16 +3258,15 @@
<se_hypervis_subcycle hgrid="ne30np4" model_top="ht" > 18</se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne30np4" model_top="xt" > 18</se_hypervis_subcycle>
<se_hypervis_subcycle waccmx="1" hgrid="ne120np4" nlev="273" > 30</se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne120np4" model_top="mt" > 2 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne3np4" > 3 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne0np4TESTONLY.ne5x4" > 3 </se_hypervis_subcycle>

<se_hypervis_subcycle_sponge > 1 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne30np4" model_top="mt" > 3 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge >-1 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne30np4" model_top="mt" waccm_phys="1" > 3 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne16np4" waccm_phys="1" waccmx="0" > 2 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne30np4" waccm_phys="1" waccmx="0" > 4 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge waccmx="1" > 20 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne30np4" waccmx="1" model_top="none" > 60 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne120np4" > 4 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4.ARCTIC.ne30x4" > 2 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4.POLARCAP.ne30x4" > 2 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4CONUS.ne30x8" > 5 </se_hypervis_subcycle_sponge>
Expand All @@ -3282,12 +3277,13 @@
<se_hypervis_subcycle_sponge hgrid="ne30np4" model_top="ht" > 4 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne30np4" model_top="xt" > 40 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge waccmx="1" hgrid="ne120np4" nlev="273" > 180</se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne120np4" model_top="mt" > 10 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4.ARCTIC.ne30x4" model_top="mt" > 3 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4.POLARCAP.ne30x4" model_top="mt" > 3 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4CONUS.ne30x8" model_top="mt" > 6 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4.ARCTICGRIS.ne30x8" model_top="mt" > 6 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4.NATL.ne30x8" model_top="mt" > 6 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne3np4" > 1 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4TESTONLY.ne5x4" > 1 </se_hypervis_subcycle_sponge>


<se_hypervis_subcycle_q>1 </se_hypervis_subcycle_q>
Expand Down Expand Up @@ -3372,25 +3368,28 @@
<se_nsplit hgrid="ne0np4.ARCTICGRIS.ne30x8" model_top="mt" > 4 </se_nsplit>
<se_nsplit hgrid="ne0np4.NATL.ne30x8" model_top="mt" > 4 </se_nsplit>

<se_rsplit > 3 </se_rsplit>
<se_rsplit >-1</se_rsplit>
<se_rsplit waccm_phys="1" model_top="mt" > 3 </se_rsplit>
<se_rsplit waccm_phys="1" waccmx="0" > 2 </se_rsplit>
<se_rsplit model_top="ht" > 2 </se_rsplit>
<se_rsplit waccmx="1" > 4 </se_rsplit>
<se_rsplit hgrid="ne16np4" waccmx="1" model_top="none" > 2 </se_rsplit>
<se_rsplit hgrid="ne0np4CONUS.ne30x8" waccm_phys="1" > 3 </se_rsplit>
<se_rsplit waccmx="1" hgrid="ne120np4" nlev="273" > 5 </se_rsplit>
<se_rsplit hgrid="ne120np4" model_top="mt" > 3 </se_rsplit>
<se_rsplit hgrid="ne0np4.ARCTIC.ne30x4" model_top="mt" > 6 </se_rsplit>
<se_rsplit hgrid="ne0np4.POLARCAP.ne30x4" model_top="mt" > 6 </se_rsplit>
<se_rsplit hgrid="ne0np4CONUS.ne30x8" model_top="mt" > 5 </se_rsplit>
<se_rsplit hgrid="ne0np4.ARCTICGRIS.ne30x8" model_top="mt" > 5 </se_rsplit>
<se_rsplit hgrid="ne0np4.NATL.ne30x8" model_top="mt" > 5 </se_rsplit>
<se_rsplit hgrid="ne3np4" > 3 </se_rsplit>
<se_rsplit hgrid="ne0np4CONUS.ne30x8" > 3 </se_rsplit>
<se_rsplit hgrid="ne0np4.ARCTIC.ne30x4" > 3 </se_rsplit>
<se_rsplit hgrid="ne0np4.POLARCAP.ne30x4" > 3 </se_rsplit>
<se_rsplit hgrid="ne0np4.ARCTICGRIS.ne30x8" > 3 </se_rsplit>
<se_rsplit hgrid="ne0np4.NATL.ne30x8" > 3 </se_rsplit>
<se_rsplit hgrid="ne0np4TESTONLY.ne5x4" > 3 </se_rsplit>

<se_fvm_supercycling>-1</se_fvm_supercycling>
<se_fvm_supercycling_jet>-1</se_fvm_supercycling_jet>
<se_kmin_jet>-1</se_kmin_jet>
<se_kmax_jet>-1</se_kmax_jet>

<se_statediag_numtrac>3</se_statediag_numtrac>

Expand Down
56 changes: 3 additions & 53 deletions bld/namelist_files/namelist_definition.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8601,12 +8601,14 @@ Default: 0 (i.e., not used)
<entry id="se_hypervis_subcycle" type="integer" category="se"
group="dyn_se_inparm" valid_values="" >
Number of hyperviscosity subcycles per dynamics timestep.
Set to -1 to have the value selected automatically at runtime from the CFL stability limits.
Default: Set by build-namelist
</entry>

<entry id="se_hypervis_subcycle_sponge" type="integer" category="se"
group="dyn_se_inparm" valid_values="" >
Number of hyperviscosity subcycles per dynamics timestep in sponge del2 diffusion.
Set to -1 to have the value selected automatically at runtime from the CFL stability limits.
Default: Set by build-namelist
</entry>

Expand Down Expand Up @@ -8756,31 +8758,6 @@ Number of SE rsplit time-steps CSLAM supercycles
rsplit/se_fvm_supercycling must be an integer
</entry>

<entry id="se_fvm_supercycling_jet" type="integer" category="se"
group="dyn_se_inparm" valid_values="" >
Number of SE rsplit time-steps CSLAM supercycles in the jet region
(which is specified by kmin_jet and kmax_jet)
rsplit/se_fvm_supercycling_jet must be an integer
se_fvm_supercycling_jet/se_fvm_supercyling must be an integer
</entry>

<entry id="se_kmin_jet" type="integer" category="se"
group="dyn_se_inparm" valid_values="" >
Min level index where CSLAM runs with se_fvm_supercycling_jet
(if se_fvm_supercycling_jet.ne.se_fvm_supercycling) or
min index where are Courant number increment is active
(se_large_Courant_incr=.true.)
</entry>

<entry id="se_kmax_jet" type="integer" category="se"
group="dyn_se_inparm" valid_values="" >
Max level index where CSLAM runs with se_fvm_supercycling_jet
(if se_fvm_supercycling_jet.ne.se_fvm_supercycling) or
max index where are Courant number increment is active
(se_large_Courant_incr=.true.)
</entry>


<entry id="se_qsplit" type="integer" category="se"
group="dyn_se_inparm" valid_values="" >
Tracer advection is done every qsplit dynamics timesteps.
Expand All @@ -8796,6 +8773,7 @@ Default: FALSE
<entry id="se_rsplit" type="integer" category="se"
group="dyn_se_inparm" valid_values="" >
Vertically lagrangian code vertically remaps every rsplit tracer timesteps.
Set to -1 to have the value selected automatically at runtime from the CFL stability limits.
Default: Set by build-namelist.
</entry>

Expand Down Expand Up @@ -8881,34 +8859,6 @@ differences into the simulation.
Default: .false.
</entry>

<!-- Nudging -->
<entry id="se_met_nudge_u" type="real" category="se"
group="dyn_se_inparm" valid_values="" >
Nudging factor for prescribed winds in SE dycore
Units: 1/sec
Default: 2e-5
</entry>

<entry id="se_met_nudge_t" type="real" category="se"
group="dyn_se_inparm" valid_values="" >
Nudging factor for prescribed temperature in SE dycore
Units: 1/sec
Default: 2e-5
</entry>

<entry id="se_met_nudge_p" type="real" category="se"
group="dyn_se_inparm" valid_values="" >
Nudging factor for prescribed surface pressure in SE dycore
Units: 1/sec
Default: 0.0
</entry>

<entry id="se_met_tevolve" type="integer" category="se"
group="dyn_se_inparm" valid_values="0,1" >
Switch to turn on/off time evolution of dynamics nudging
Default: 0
</entry>

<!-- Physics grid entries -->
<entry id="se_fv_nphys" type="integer" category="se"
group="dyn_se_inparm" valid_values="" >
Expand Down
114 changes: 114 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,119 @@
===============================================================

Tag name:
Originator(s): pel
Date: August 22, 2026
One-line Summary: Automatic dynamics-splitting defaults for the SE dycore; remove unused SE namelist options
Github PR URL:

Purpose of changes (include the issue number and title text for each relevant GitHub issue):

- #1655 Add automatic dynamics-splitting defaults to the SE dycore

- #969 Clean-up unused and/or unsupported namelist options in SE dycore

Describe any changes made to build system:
- bld/build-namelist: removed se_fvm_supercycling_jet, se_kmin_jet, and
se_kmax_jet from the SE dycore namelist variable list.

Describe any changes made to the namelist:

Changed defaults (automatic dynamics splitting):
- se_rsplit, se_hypervis_subcycle, se_hypervis_subcycle_sponge default
changed to -1 ("automatic"); the effective value is computed at runtime
from the CFL stability limits. WACCM, WACCM-X, variable-resolution, and
ne3 grids are pinned to their previous explicit values, so those
configurations are unchanged.

Removed namelist options (unused/untested):
- se_fvm_supercycling_jet, se_kmin_jet, se_kmax_jet
- se_met_nudge_u, se_met_nudge_t, se_met_nudge_p, se_met_tevolve

List any changes to the defaults for the boundary datasets: N/A

Describe any substantial timing or memory changes: N/A

Code reviewed by:

List all files eliminated:

List all files added and what they do:

List all existing files that have been modified, and describe the changes:

M bld/build-namelist
- remove se_fvm_supercycling_jet/se_kmin_jet/se_kmax_jet from the
SE dycore variable list
M bld/namelist_files/namelist_definition.xml
- document the -1 "automatic" sentinel for the split variables;
remove the jet-supercycling and se_met_nudge_* entries
M bld/namelist_files/namelist_defaults_cam.xml
- set se_rsplit/se_hypervis_subcycle/se_hypervis_subcycle_sponge
defaults to -1; pin WACCM/WACCM-X/variable-resolution/ne3 to
their prior values; remove jet-supercycling defaults
M src/dynamics/se/dyn_comp.F90
- accept the rsplit == -1 sentinel in dyn_readnl; remove the
se_fvm_supercycling_jet / se_kmin_jet / se_kmax_jet and
variable_nsplit plumbing
M src/dynamics/se/dyn_grid.F90
- dyn_grid_init: resolve automatic (-1) rsplit and the fvm
supercycling default from the CFL stability limits
M src/dynamics/se/dycore/global_norms_mod.F90
- compute the automatic hyperviscosity subcycle counts from the
grid stability constants in print_cfl
M src/dynamics/se/dycore/prim_driver_mod.F90
- remove variable_nsplit machinery; the CFL dt computation is now
done in print_cfl
M src/dynamics/se/dycore/prim_state_mod.F90
- remove variable_nsplit / nsplit_baseline / rsplit_baseline
M src/dynamics/se/dycore/se_dyn_time_mod.F90
- remove variable_nsplit plumbing
M src/dynamics/se/dycore/control_mod.F90
- remove 'variable_nsplit' and other unused control variables.
M src/dynamics/se/dycore/dimensions_mod.F90
- remove kmin_jet, kmax_jet, and fvm_supercycling_jet declarations
M src/dynamics/se/dycore/fvm_mod.F90
- remove jet-supercycling logic
M src/dynamics/se/dycore/fvm_consistent_se_cslam.F90
- large_Courant_incr now operates over the full column (1..nlev)
instead of the removed [kmin_jet, kmax_jet] jet region

If there were any failures reported from running test_driver.sh on any test
platform, and checkin with these failures has been OK'd by the gatekeeper,
then copy the lines from the td.*.status files for the failed tests to the
appropriate machine below. All failed tests must be justified.

derecho/intel/aux_cam:

derecho/nvhpc/aux_cam:

izumi/nag/aux_cam:

izumi/gnu/aux_cam:

CAM tag used for the baseline comparison tests if different than previous
tag: cam6_4_196

Summarize any changes to answers, i.e.,
- what code configurations: SE dycore. Low/mid-top uniform-grid
configurations whose automatically selected se_hypervis_subcycle is smaller
than the previous hard-coded value change answers. Observed in the aux_cam
SE suite for:
ERI_D_Ln18.ne16pg3_ne16pg3_mt232.FHIST_C4 (hypervis_subcycle 3 -> 1)
ERP_Ln9.ne30pg3_ne30pg3_mg17.FCnudged (hypervis_subcycle 3 -> 2)
SMS_Ld1.ne30pg3_ne30pg3_mg17.FC2010climo (hypervis_subcycle 3 -> 2)
All other SE configurations (including all WACCM, WACCM-X,
variable-resolution, and ne3 grids, which are pinned) are bit-for-bit.
The namelist-option cleanup (#969) is bit-for-bit by construction (removal
of unused/dead code and orphaned definition entries).
- what platforms/compilers: derecho/intel
- nature of change: larger than roundoff (fewer hyperviscosity subcycles where
the CFL stability estimate permits); same climate <CONFIRM / describe any
climate evaluation>.

===============================================================
===============================================================

Tag name: cam6_4_197
Originator(s): jimmielin
Date: August 22, 2026
Expand Down
15 changes: 0 additions & 15 deletions src/dynamics/se/dycore/control_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ module control_mod

integer, public :: tstep_type= 0 ! 0 = leapfrog
! 1 = RK (foward-in-time)
integer, public :: rk_stage_user = 0 ! number of RK stages to use
integer, public :: ftype = 2 ! Forcing Type
integer, public :: ftype_conserve = 1 !conserve momentum (dp*u)
integer, public :: dribble_in_rsplit_loop = 0
Expand All @@ -22,38 +21,26 @@ module control_mod
integer, public :: qsplit = 1 ! ratio of dynamics tsteps to tracer tsteps
integer, public :: rsplit =-1 ! for vertically lagrangian dynamics, apply remap
! every rsplit tracer timesteps
logical, public :: variable_nsplit=.false.

logical, public :: refined_mesh

integer, public :: vert_remap_q_alg = 10


integer, public :: cubed_sphere_map = -1 ! -1 = chosen at run time
! 0 = equi-angle Gnomonic (default)
! 1 = equi-spaced Gnomonic (not yet coded)
! 2 = element-local projection (for var-res)
! 3 = parametric (not yet coded)

!tolerance to define smth small, was introduced for lim 8 in 2d and 3d
real (kind=r8), public, parameter :: tol_limiter=1.0e-13_r8

integer , public :: limiter_option = 0

integer , public :: partmethod ! partition methods
character(len=MAX_STRING_LEN) , public :: topology ! options: "cube" is supported
integer , public :: tasknum
integer , public :: remapfreq ! remap frequency of synopsis of system state (steps)
character(len=MAX_STRING_LEN) :: remap_type ! selected remapping option
integer , public :: statefreq ! output frequency of synopsis of system state (steps)
integer , public :: runtype
integer , public :: timerdetail
integer , public :: numnodes
integer , public :: multilevel

character(len=MAX_STRING_LEN) , public :: columnpackage

integer , public :: maxits ! max iterations of solver
real (kind=r8), public :: tol ! solver tolerance (convergence criteria)

integer , public :: fine_ne = -1 ! set for refined exodus meshes (variable viscosity)
Expand Down Expand Up @@ -83,8 +70,6 @@ module control_mod
integer, public :: hypervis_subcycle=1 ! number of subcycles for hyper viscsosity timestep
integer, public :: hypervis_subcycle_sponge=1 ! number of subcycles for hyper viscsosity timestep in sponge
integer, public :: hypervis_subcycle_q=1 ! number of subcycles for hyper viscsosity timestep on TRACERS
integer, public :: psurf_vis = 0 ! 0 = use laplace on eta surfaces
! 1 = use (approx.) laplace on p surfaces

real (kind=r8), public :: hypervis_power=0 ! if not 0, use variable hyperviscosity based on element area
real (kind=r8), public :: hypervis_scaling=0 ! use tensor hyperviscosity
Expand Down
4 changes: 1 addition & 3 deletions src/dynamics/se/dycore/dimensions_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,7 @@ module dimensions_mod
integer, parameter, public :: ubc = nc+nhc
logical, public :: large_Courant_incr

integer, public :: kmin_jet,kmax_jet !min and max level index for the jet
integer, public :: fvm_supercycling
integer, public :: fvm_supercycling_jet
integer, public :: fvm_supercycling

integer, allocatable, public :: kord_tr(:), kord_tr_cslam(:)

Expand Down
Loading
Loading