Documentation of the Changes in the COSMO-Model
Version 5.4a

12.05.2016

Version 5.4a is a development version, which will not be officially released. The most significant change is the implementation of the blocked version of the COSMO-ICON turbulence scheme, but per default, this is not activated yet.

Contents:

  1. COSMO-ICON Version of Prognostic TKE Turbulence Scheme
  2. Additional Changes in the Physics
  3. Changes in the Dynamics
  4. Technical Changes and Bug Fixes
  5. Changes to the Namelists
  6. Changes of Results


1. COSMO-ICON Version of Prognostic TKE Turbulence Scheme

(by M. Raschendorfer, U. Schättler)

Implemented latest ICON version to COSMO

In the last years the prognostic TKE scheme (TURBDIFF) has been further developed in the frame of the global model ICON by Matthias Raschendorfer and partly by Günther Zängl. This version is now implemented in the COSMO-Model including a major reorganization of the code.

Changes to the scheme are (among others):

The new generalized subroutine for vertical diffusion is now part of the common COSMO-ICON physics and it substitutes the diffusion routines (specific for each quantitiy) in the dynamics. The organization of vertical diffusion in COSMO can be chosen by the NAMELIST selectors itype_vdif and imode_mdif.

Most of the various modifications compared to the previous version can be switched on or off, and even additional options can be selected by means of the following switches, selectors or tuning variables, which are all contained and explained in module turb_data, such as:

Only few of them are also contained in COSMO-namelists, the others are so far fixed coded.

Code Structure of the New Scheme

There are 5 new modules in the COSMO-Model:

Changes to the Namelist Variables

There are four new Namelist variables. With itype_vdif the type of vertical diffusion can be chosen. For the moment being also the old scheme can be chosen by itype_vdif=-2 (which is the default value).

Group Name Meaning Default
/PHYCTL/ itype_vdif NEW To choose the type of vertical diffusion calculation:
  1. Call the old non-blocked prognostic TKE scheme without vertical diffusion.
  2. Turbulent diffusion is calculated by the previous routines of the dynamics.
  3. Turbulent diffusion is computed just after the calculations of the turbulence model by using the same routine as in ICON from turb_utilities.f90 applied to vertical profiles defined at (or interpolated to) horizontal mass positions.
  4. This option is not yet available, but will be added later:
    Turbulent diffusion is computed at the end of the physics using collected explicit tendencies (and also using the same routine as in ICON) In this case the mode of momentum diffusion can be further controlled by imode_mdif.
-2
imode_mdif NEW
eliminated again
in 5.04d
To further control vertical diffusion of momentum:
  1. Same as "0", but using the explicit wind tendencies already present at mass-positions (if requested).
  2. Diffusion of momentum (together with that of scalars) on horizontal mass positions and never using any explicit wind tendencies in implicit diffusion equation.
  3. Extra call for diffusion of each wind-component applied to the staggered wind positions.
0
ltkeshs NEW Consider separated horizontal shear production for TKE. .TRUE.
lsflcnd NEW Lower surface flux condition. .TRUE.

Some variables will have a different default (and range of acceptable values) in the old and the new version of the scheme. For the moment being all defaults are set as before, because per default the old scheme is still running. If the new scheme is activated (with itype_vdif = -1 / 0, it is recommended to set the "new" values per namelist settings.

Group Name Old Value and Range New Value and Range
/PHYCTL/ ltkesso .FALSE. n.a. .TRUE. n.a.
itype_sher 1 [1..3] 0 [0..3]
imode_tran 1 [1..2] 0 [-1..2]
imode_turb 1 [0..4] 1 [-1..2]
icldm_tran 0 [0..2] 2 [-1..2]
/TUNING/ tkhmin 0.4 [0.0..2.0] 0.75 [0.0..2.0]
tkmmin 0.4 [0.0..2.0] 0.75 [0.0..2.0]
rat_sea 20.0 [1.0..100.0] 10.0 [1.0..100.0]
pat_len 500.0 [0.0..10000.0] 100.0 [0.0..10000.0]
a_hshr 0.2 ?? 1.0 ??

Old Scheme and how to Switch on the New Scheme

The old (non-blocked) version of the prognostic TKE scheme is still available in the source code and can be activated by a namelist switch. The new namelist switch itype_vdif has been chosen for this purpose:

Possible values for itype_vdif:

Note that the module names of the old scheme start with turbulence_xxx instead of turb_xxx!

Influences to other Modules

The module turb_data.f90 replaces the existing data module turbulence_data.f90. As some of the other COSMO modules need to use variables from this module, there are also changes to these modules:

Implemented Blocking Version of this Scheme (by U. Schättler)

The copy-in/copy-out mechanism has been implemented for the variables used in the turbulence scheme. Also, all local memory used in the turbulence scheme is now allocated / deallocated by routines turb_wkarr_alloc/_dealloc. All local memory is declared in the module turb_data.f90 as THREADPRIVATE for usage in the hybrid implementation of ICON.

Back to Contents


2. Additional Changes in the Physics

(by Xavier Lapillonne)

Changes to src_block_fields.f90

Adapted code to support INTEGER and LOGICAL fields. This does not affect the user interface. Internal type specific routines have been renamed with real / int / logical

Back to Contents


3. Changes in the Dynamics

Bugfix in the Slope-Dependent Divergence Damping Coefficient (by Michael Baldauf)

A missing metric correction term in subroutine init_div_damping_coeff has been inserted. The effect is an increase of the divergence damping coefficient in the middle troposphere over steep terrain and a further reduction directly over mountains. This Bugfix will improve numerical stability in steep terrain.

The model results will be slightly changed, but relevant influence to the forecast quality is not expected.

Important: A change in the Namelist-group /DYNCTL/ is necessary:
For the variable divdamp_slope values of 20.0...100.0 have been recommended up to now. Due to this change, divdamp_slope should now always be 1.0 for all resolutions. See the new default value and acceptable range in the following table.

Group Name Meaning Default
/DYNCTL/ divdamp_slope changed default and range Exceed the theoretical slope stability criterion of the divergence damping.
Range of acceptable values is 0.1 ... 3.0
1.0

Added Namelist Variable l_satad_dyn_iter (by P. Spoerri)

The number of iterations for the saturation adjustment is determined dynamically in the Runge-Kutta and in the Leapfrog dynamical cores. This number depends on the maximal vertical velocity in the surrounding of a grid point. In order not to have a different number of iterations for every grid point (which would disturb vectorization) a single number is determined for all grid points in a subdomain by computing the maximal vertical velocity in the subdomain. If reproducible results are desired, a global communication is done to determine the maximal vertical velocity over the full domain.

Because global communications are very expensive (at least when using a large number of subdomains), a namelist variable has been introduced to switch off the dynamical determination of the number of iterations. A fixed number of 3 iterations is done then. This is the maximum number of iterations that can be done by the dynamical determination of this number.

This flag is needed for the C++ dycore because global reductions are expensive and not needed in most cases.

Group Name Meaning Default
/DYNCTL/ l_satad_dyn_iter NEW If set to .FALSE., this disables the dynamical number of iterations for the saturation adjustment in the runge kutta dynamical core and a fixed number of 3 iterations is done then. .TRUE.

The default setting does not change the behavior of the code.

Minor Changes to Dynamical Core for Serialization (by P. Spoerri)

These changes were necessary for verifying the FastWavesSC Unit test (with the exception of the Runge-Kutta solver and advection pd).

Back to Contents


4. Technical Changes and Bug Fixes

Back to Contents


5. Changes to the Namelists

Group Name Meaning Default
/DYNCTL/ divdamp_slope changed default and range Exceed the theoretical slope stability criterion of the divergence damping.
Range of acceptable values is 0.1 ... 3.0
1.0
l_satad_dyn_iter NEW If set to .FALSE., this disables the dynamical number of iterations for the saturation adjustment in the runge kutta dynamical core and a fixed number of 3 iterations is done then. .TRUE.
/PHYCTL/ itype_vdif NEW To choose the type of vertical diffusion calculation:
  1. Call the old non-blocked prognostic TKE scheme without vertical diffusion.
  2. Turbulent diffusion is calculated by the previous routines of the dynamics.
  3. Turbulent diffusion is computed just after the calculations of the turbulence model by using the same routine as in ICON from turb_utilities.f90 applied to vertical profiles defined at (or interpolated to) horizontal mass positions.
  4. This option is not yet available, but will be added later:
    Turbulent diffusion is computed at the end of the physics using collected explicit tendencies (and also using the same routine as in ICON) In this case the mode of momentum diffusion can be further controlled by imode_mdif.
-2
imode_mdif NEW To further control vertical diffusion of momentum:
  1. Same as "0", but using the explicit wind tendencies already present at mass-positions (if requested).
  2. Diffusion of momentum (together with that of scalars) on horizontal mass positions and never using any explicit wind tendencies in implicit diffusion equation.
  3. Extra call for diffusion of each wind-component applied to the staggered wind positions.
0
ltkeshs NEW Consider separated horizontal shear production for TKE. .TRUE.
lsflcnd NEW Lower surface flux condition. .TRUE.

Back to Contents


6. Changes of Results

The bug fix in fast_waves_sc for the slope-dependent divergence damping coefficient changes the results.

If the new blocked version of the prognostic TKE turbulence scheme is used (itype_vdif > -2), this will also change the results.

Back to Contents