EAM and SCREAM/EAMxx uses the HOMME dycore package. HOMME has both Fortran and C++ versions with different options for the prognostic thermodynamic variable (preqx use temperature while theta-l uses potential temperature) and those in turn have some additional capabilities.
...
NE30: dt_dyn = 300
NE60: dt_dyn = 150
NE120: dt_dyn = 75
NE240: dt_dyn = 40
NE256: dt_dyn <= 36
NE512: dt_dyn <= 18
NE1024 dt_dyn <= 9
dt_tracer: The tracer CFL condition is controlled by the maximum advective velocity (~200m/s) which usually occurs near the model top. For Eulerian advection HOMME uses a RK3 SSP and the CFL also depends on the mesh spacing. For SL tracers, the limit is governed by the The code prints an estimate of the viscous CFL condition in the log file, in the form "dt < S * max_eigen_value", where S depends on the timestepping method and for dt_dyn, assumes a gravity wave speed of 342 m/s. For KGU53 S=3.8. In practice, dt is often ~30% lower, so taking S=2.65 is a good target for new grids.
dt_tracer: The tracer CFL condition is controlled by the maximum advective velocity (~200m/s) which usually occurs near the model top. For Eulerian advection HOMME uses a RK3 SSP and the CFL also depends on the mesh spacing. For SL tracers, the limit is governed by the size of the halo exchange.
Eulerian tracers, dt_tracer = dt_dyn. (assuming the default RK3 SSP method)
SL tracers, dt_tracer = 6*dt_dyn.
...
With RRM grids, the timesteps will be controlled by the highest resolution region. So with an RRM grid with refinement down to NE120, the timesteps should be close to what we run on a uniform cubed-sphere NE120 grid. The timesteps may need to be slightly smaller because of the deformed elements in the transition region. With a hiqh quality RRM mesh ( Max Dinv-based element distortion metric <= 4, see Generate the Grid Mesh (Exodus) File for a new Regionally-Refined Grid) we can usually run with the expected dt_dyn and dt_tracer values, and only the viscosity timesteps need to be slightly reduced.
Tensor vs constant coefficient hyperviscosity
...
i.e. tensor nu=3.4e-8 when used at 1 degree resolution (dx=110,000m, np=4, rearth=6.376e6, hypervis_scaling=3) is equivalent to 1e15 m^4/s. Spreadsheet for looking at scaling with resolution of constant and tensor coefficient HV: https://docs.google.com/spreadsheets/d/1LHTl2_A065pfdWC69OHmXvNL_v1484cXg7ZowhyEbPU/edit?usp=sharing
For regular viscosity:
nu_tom_tensor = nu_tom_const *( 2*rearth /((np-1)*dx))^{hypervislaplace_scaling} * rearth^{-2.0}.
i.e. tensor nu=3.2e-7 when used at 3.25km (dx=3250m, np=4, rearth=6.376e6, hypervislaplace_scalingsscaling=1) is equivalent to 1e4 m^2/s.
Spreadsheet for looking at scaling with resolution of constant and tensor coefficient HV:
https://docs.google.com/spreadsheets/d/1LHTl2_A065pfdWC69OHmXvNL_v1484cXg7ZowhyEbPU/edit?usp=sharingTensor coefficient for regular viscosity is not currently in the model but may be added for use in the sponge layer.
Topo smoothing: The topo smoothing code uses hyperviscosity tensor (with hypervis_scalings=2) but with the regular laplace operator, not hyperviscosity. The coefficient is thus incorrectly scaled by rearth^4 instead of rearth^2. To convert that coefficient (4e-16) to a physical diffusion coefficient one must use rearth^{-4} in the above formula.
Recommended settings (THETA)
...
Resolution | Timesteps | Namelist settings | Notes | Tested? |
---|---|---|---|---|
7.5 degree | dtime=7200 dt_tracer=3600 | nu_top = 2.5e5 se_tstep=600 | Ultra low res for regression testing only. | |
1 degree (NE30) | dtime=1800 dt_tracer=1800 | nu_top = 2.5e5 se_tstep=300 E3SM v2 uses constant coefficient HV, enabled with: | With larger dt_remap( dt_remap=1800), we see occasional (every 2-3 years) dp3d limiter activation, meaning that the model levels are approaching zero. This appears to be due to strong divergence above tropical cyclones created by one of the parameterizations. | HS+topo(72L): H and NH (H can run at t 360s but not 400s with either tstep_type=4 or 5). dt_remap=600 runs with no limiter warnings, while dt_remap=900 crashes with dp3d<0 at surface. F-EAMv1-AQP1: H and NH FAV1C-L: H and NH |
NE45 | dtime=1200. dt_tracer=1200 dt_vis_tom=200 | nu_top=2.5e5 se_tstep=200 | ||
1/4 degree (NE120) | dtime=900 dt_remap=150 | nu_top=1e5 se_tstep=75 | CFL estimates suggest: dt_vis_tom*nu_top <= 31*2.5e5 nu_top=2.5e5 would need | HS+topo(72L): H and NH (with dt_remap=75 and theta limiter to handle unphysical boundary layer) F-EAMv1-AQP1: H and NH, both 72 and 128 levels (1+ years) FC5AV1C-H01B: NH 72L runs several years. |
12km (NE256) | dtime=600 dt_tracer=200 NOTE: these defaults were updated 2021/9 based on SCREAM v0.1 3km runs. But NE256 is known to run stably at slightly larger timsteps: dt_tracer=300 | nu_top=4e4 | nu_tom=4e4 is running at the code's estimate of the CFL limit with S=1.9 | F-EAMv1-AQP1:
FC5AV1C-H01B: NH 128L run for several months dt=37.5/75/300/600. Occasional problems near coastlines - considering ( ) reducing dtime, increasing HV, tunning CLUBB dtime=600 used in: https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2021MS002805 |
6km (NE512) | dtime=200 dt_tracer=100 | nu_top=2e4 | CFL estimates suggest: dt_vis_tom*nu_top <= 1.7*2.5e5, nu_top=2.5e5 needs hypervis_subcycle_tom=13 | F-EAMv1-AQP1:
FC5AV1C-H01B: NH 128L run for 1 day with dt=18.75/37.5/150/300, then NaNs in microphysics (not yet debugged) |
3km (NE1024) | dtime=100 dt_tracer=50 | nu_top=1e4 | CFL estimates suggest: dt_vis_tom*nu_top <= 0.43*2.5e5 with nu_top=2.5e5, | F-EAMv1-AQP1:
FC5AV1C-H01B: SCREAM v0: run for 40 days with constantHV, dt=9.375/18.75/75/75. SCREAM v0.1: switch to tensorHV (slightly less diffusion), needs dt_dyn<=9s, dt_tracer<60 |
RRM | dtime=??? dycore timesteps should be set based on the finest region in the RRM. | nu_top=Uncertain - needs more research. Should probably switch to tensor laplacian. For NE30→NE120 grids, start with NE120 constant coefficient value, 1e5. |
...