EAM has relied in two types of dissipation at the model top. With the lack of a robust non-reflecting boundary condition for the nonlinear dynamics, vertically propagating waves which should leave the model can instead be reflected off the model top. The sponge layer damps these waves to minimize the reflection. It also prevents pileup of KE at the model top.
The first sponge layer is Rayleigh damping, implemented in the physics and turned on in EAMv1 when we transitioned from 30 to 72L.
The second sponger layer is a Laplacian dissipation term implemented in the dycore.
Both approaches are inherited from CAM.
Rayleigh Damping
namelist parameter: raytay0 = 5.0 (default starting with v1)
Algorithm?
Laplacian smoothing:
namelist parameter: nu_top
Laplacian smoothing applied at the model top with coefficient nu_top*nu_top_scale(k)
preqx dycore (EAM v0,v1). Sponge layer modeled after that used by CAM-EUL
nu_top=2.5e5
nu_top_scale(1:nlev)=4,2,1,0,0,0….. (applied in top 3 model layers)
Laplacian term added to RHS of hyperviscosity operator
Theta dycore (EAM v2, SCREAM). Sponge layer modeled after CAM-FV ( Lauritzen et al., https://doi.org/10.1177/1094342011410088 )
nu_top = Resolution dependent. See https://acme-climate.atlassian.net/wiki/spaces/DOC/pages/1044644202/EAM+s+HOMME+dycore
Laplacian term applied independently from hyperviscosity, and with it’s own timestep controlled by hypervis_subcycle_tom. Default 1.
nu_top_scale(:) uses reference pressure based formula
Formula in terms of reference pressure computed from “eta” coordinate:
p_ratio = eta(1)/eta(k)
nu_top_scale = 16*( 1 ./ ( 1 + (p_ratio)^-2)).
(mathematically equivalent to the 8*(1+ tanh(log(p_ratio))) formula used in CAM-FV)where (nu_top_scale>8) nu_top_scale=8
where (nu_top_scale<0.15) nu_top_scale=0
This formula creates a sponge layer that is active from [ptop/10,ptop]. For EAM’s 72L configuration, ptop=0.1 mb, meaning that the sponge layer starts at 1mb which might be too high. For SCREAM’s L128 configuration, ptop=2mb, so the sponge layer starts an 20mb, which might be too low. At NE256 and 72L, the model is unstable in the sponge layer.
Simplified option with control over sponge layer thickness:
To address the instabilities seen at high resolution, we propose to add namelist variable
tom_sponge_start
, specified in mbtom_sponge_start>0
will replace the default with a simplified version of the above formula that makes it easy to control the sponge layer thickness:p_ratio = (tom_sponge_start/100) / eta(k)
nu_top_scale = .15 * p_ratio^2
Plots of the CAM-FV / EAMv2 sponge layer profile:
The plot shows the scaling factor, with a cutoff at 8.0. These values, multiplied by nu_top
determine the sponge layer Laplacian coefficient as function of model layer k. The cutoff at 0.15 is shown via the black vertical line. The curves are shown extending beyond this in the plot, but in the model values below 0.15 are set to 0, disabling sponge layer in those layers. The “NEW” label shows the simplified option, with the tom_sponge_start=10
. If the simplified version is set to start at 1mb (EAMv2) or 20mb (SCREAM), it provides a good approximation to the original formula.
Experiments
Some aqua planet experiments looking at zonal wind and EKE at model top: /wiki/spaces/NGDNA/pages/1060077843
At NE256 (and probably higher) with EAM’s 72L configuration, the model is unstable and the sponge layer needs to be larger (but not stronger):
atm.log.* output:
V2 sponge layer with EAM’s 72L configuration, as a function of model level k
sponge layer nu_top viscosity scaling factor nu_scale_top 1 6.31593940963493 nu_scale_top 2 3.68438395258885 nu_scale_top 3 1.93067935592485 nu_scale_top 4 0.947489176847158 nu_scale_top 5 0.449005601189953 nu_scale_top 6 0.209135512288980 nlev_tom 6
72L, tom_sponge_start=1
nu_scale_top 1 8.00000000000000 nu_scale_top 2 4.48745361513254 nu_scale_top 3 2.05839281223852 nu_scale_top 4 0.944183791713705 nu_scale_top 5 0.433096650568544 nu_scale_top 6 0.198661225049463
72L, tom_sponge_start=5
nu_scale_top 1 8.00000000000000 nu_scale_top 2 8.00000000000000 nu_scale_top 3 8.00000000000000 nu_scale_top 4 8.00000000000000 nu_scale_top 5 8.00000000000000 nu_scale_top 6 4.96653062623658 nu_scale_top 7 2.27814520652286 nu_scale_top 8 1.04498410914579 nu_scale_top 9 0.479333707632238 nu_scale_top 10 0.219870140858203
V2 sponge layer with SCREAM’s 128L configuration, as a function of model level k
sponge layer nu_top viscosity scaling factor nu_scale_top 1 6.92938665202230 nu_scale_top 2 5.24308179845195 nu_scale_top 3 4.03996081024441 nu_scale_top 4 3.10359169059755 nu_scale_top 5 2.32272228570900 nu_scale_top 6 1.70442520504892 nu_scale_top 7 1.26207319730247 nu_scale_top 8 0.952199042385671 nu_scale_top 9 0.717276924434574 nu_scale_top 10 0.536309905915625 nu_scale_top 11 0.404311076629692 nu_scale_top 12 0.311695543485728 nu_scale_top 13 0.242880418339046 nu_scale_top 14 0.189128525227522 nlev_tom 14