Stretched vertical levels information?

jamesrup

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?

James

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.

cheers,
James