Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

Stretched vertical levels information?


New member
Hi all,

I'm having a hard time finding any good background information about the stretched vertical grid option: auto_levels_opt = 2 and what the corresponding settings represent, what their bounds are, etc. I'm getting strange behavior with the defaults. E.g., setting

e_vert = 65,
max_dz = 500,
dzbot = 40,
dzstretch_s = 1.3,
dzstretch_u = 1.1,

I get stretched levels with a maximum dz > max_dz reached in the lower/mid troposphere and then decreasing back to max_dz in the upper trop.

Is there more information on these settings that I'm just not finding?

Thanks in advance!

Setting Model Vertical Levels​

Eta levels are automatically computed by the real program, based on the number of levels set by the namelist option “e_vert.” However, full eta levels may be explicitely defined with the namelist option “eta_levels.” The number of levels must agree with the number of eta surfaces allocated (e_vert).

The method used is designated by namelist option “auto_levels_opt.” By default, auto_levels_opt=2, which uses surface and upper stretching factors (dzstretch_s and dzstretch_u) to stretch levels according to log p, up to the point of maximum thickness (max_dz), and starting from thickness “dzbot.” The stretching transitions from “dzstretch_s” to “dzstretch_u” by the time the thickness reaches max_dz/2.
The alternate option is to set auto_levels_opt=1, which assumes a known first several layers, then generates equi-height-spaced levels up to the top of the model.
Given are two distributions for 28 and 35 levels.

  • 1.3 reaches 1 km thickness below about 5 km (level 13) - * usually not recommended
  • 1.2 reaches 1 km thickness at around 7 km (level 19)
  • 1.1 reaches 1 km thickness at around 13 km (level 36)
  • dzstretch = 1.1 has 12 levels in lowest 1 km, 34 levels below 10 km
  • dzstretch = 1.2 has 9 levels in lowest 1 km, 22 levels below 10 km
  • dzstretch = 1.3 has 8 levels in lowest 1 km, 18 levels below 10 km


To avoid max thickness in the upper troposphere, stretching levels must extend above the tropopause before going to constant d (logp). This can be done by using low “dzstretch_u” values (but larger than ~1.02) to reach the tropopause, while also stretching fast enough to compensate the lapse rate.

For additional flexibility, use namelist options
  • dzbot: the thickness of the first model layer between full levels (default value is 50 m)
  • max_dz: the maximum layer thickness allowed with the default value of 1000 m.

Thanks a lot HathewayWill for all this great info.

I ended up checking out the code from dyn_em/module_initialize_real.F and playing around with it in a jupyter notebook for the number of vertical levels I'm working with.