Documentation of the Changes in the COSMO-Model
Version 4.21


This version fixes a problem that occured with 4.20, that the amount of precipitation was much too low. Reasons for that were within the latent heat nudging, but also within the microphysics. Besides that, the Smagorinsky diffusion for u and v has been implemented.


  1. Changes in the Microphysics
  2. Changes in the Latent Heat Nudging
  3. Smagorinsky Diffusion
  4. Computation of Wind Gusts
  5. Bug Fixes
  6. Some Technical Modifications
  7. Changes of Results
  8. Changes to the Namelists

1. Changes in the Microphysics

(by Axel Seifert, Uli Blahak)

Introduction of a tuning factor rain_n0_factor in NL group /TUNING/: With this factor the intercept parameter n0 in the rain drop size distribution can be modified. This factor has to be set depending on the grid scale precipitation scheme used (hydci_pp or hydci_pp_gr) and the value of mu_rain. The following values are recommended: Explanation:
The parameter mu_rain generalizes the up to now assumed exponential size distribution for rain drops N(D) (with D = drop diameter) to a gamma-distribution
N(D) = N0(lambda) * Dmu_rain * EXP(-lambda*D).
(For mu_rain = 0.0, the old exponential distribution is recovered). The physically meaningful parameter range for mu_rain is about 0.0 - 5.0. However, because the cloud microphysics is a one-moment-parameterization, only one of the 3 parameters of N(D) is actually prognostic, which we choose to be lambda (the "shape" parameter). For the others, we choose to set mu_rain (the "shape" parameter) fixed and to assume a certain dependence of N0 on lambda (the "slope" parameter, [m-1]), as suggested by drop size distribution measurements. Here the relation of Ulbrich (1983) is used, which reads
N0 = N00 * EXP(3.2 * lambda)
with N00 = 8e6 m-4. In this way, the equation system is closed. However, because on average, the parameterization of the frozen-phase growth processes in the current graupel scheme seems to be too inefficient to produce "enough" precipitation sized particles, we artificially reduce the evaporation of raindrops to get the "correct" rain amount at the surface, by tuning the N00 parameter with a factor rain_n0_factor (<= 1),
N00_tuned = N00 * rain_n0_factor.
By this measure, the mean drop size is increased and larger drops evaporate less efficiently than smaller drops.

Back to Contents

2. Changes in the Latent Heat Nudging

(by Klaus Stephan)

In order to correct quickly for the negative impact of the bug fix in 4.20 and nevertheless a better accounting for blacklist information and bright band detection the check of those flags has been moved from Subroutine lhn_obs_prep to Subroutine lhn_pr_ana. In the case that the observation is blacklisted or detected as bright band the analysed precipitation rate is set to the modelled precipitation rate. As the analysed precipitation rate will be used for comparison with the modelled precipitation rate further on, no LHN will take place at those grid points.

This will be a temporally change until the approach is redesigned in a more sophisticated way.

Changes in diagnostics:
numblack = SUM(blacklist(:,:)) instead of counting it during a loop.

Back to Contents

3. Smagorinsky Diffusion

(by Michael Baldauf)

Sometimes the COSMO-Model aborts due to horizontal shear instabilities. Some of these crashes can be avoided by the 4th order artificial horizontal diffusion with a prescribed constant diffusion coefficient. But in rare events this diffusion is not strong enough and a more physically based diffusion mechanism is necessary.

The nonlinear Smagorinsky diffusion (Smagorinsky (1963) MWR) determines the diffusion coefficient by the horizontal shear (and tension) strain and therefore acts in particular to reduce too strong horizontal shear.

It is switched on by the new DYNCTL namelist parameter l_diff_Smag=.TRUE. (otherwise it has no impact to the results). (Default is .FALSE.)

An internal parameter, the Smagorinsky constant, is currently set to c_smag=0.03. This value is chosen to prevent shear instabilities in COSMO-DE applications, but otherwise to influence as less as possible the verification scores.

Back to Contents

4. Computation of Wind Gusts

(by Jan-Peter Schulz)

Another option was added for computing the maximal wind gusts (itype_diag_gust=4), where the gust factor weakly depends on the mean wind speed at 10 meters. This method is also used in GME.

Back to Contents

5. Bug Fixes

  • src_advection_rk.f90; lmorg.f90: (reported by Oli Fuhrer)
    In the calls to exchg_boundaries within the ifdef POLLEN loops, the argument num_compute was missing.
  • src_lheat_nudge.f90: (reported by Oliver Fuhrer)
    The variables numlast, numnext were not used and have been eliminated.
  • src_obs_proc_cdf.f90: (reported by Oliver Fuhrer)
    In two print statements, the variables had a wrong order.
  • src_output.f90, SR calc_sdi: (reported by Oliver Fuhrer)
    Variable izerror was not initialized.
  • src_output.f90: (reported by Uli Blahak)
    There were bugs in the calls to the subroutine radar_lm_ray: This routine requires hydrometeor densities (kg/m3), not specific values (kg/kg), so added necessary multiplications with density rho.
  • src_output.f90, SR p_int: (reported by Uli Blahak)
    Bug fixes for linear vertical interpolation (itype_vertint=2):
    • monotonically increasing (dummy) p-values are also required below the surface for routine lininterp2D_xinter1D_vec().
    • error in field dimension when calling lininterp2D_xinter1D_vec (-> model crashes) was corrected.
  • pp_utilities.f90, SR cal_conv_ind:
    Fixed allocation/deallocation of zsli: it has also to be computed in case of derivation of swiss12-Index even when optional input parameter sli is not present.
  • pp_utilities.f90, SR calhzero: (reported by Daniel Leuenberger)
    If no 0-degree isotherm can be found, the height of this isotherm was set to about 8000 meters. That no isotherm can be found can have two reasons:
    1. in the unlikely case that the 0-degree isotherm really is above 8000 meter
    2. or if the 0-degree height is below model topography, what of course will happen in winter time.
    The height of the 0-degree isotherm is now set to a missing value (-999.0), if this is the case.

Back to Contents

6. Some Technical Modifications

  • organize_physics.f90
    Added some more debug output.
  • pp_utilities.f90, SR radar_lm_ray: (by Uli Blahak)

    This subroutine has been updated to reflect recent changes in the microphysics (SR hydci_pp and hydci_pp_gr, provided by Axel Seifert. The reflectivities of cloud ice and cloud droplets have been added to radar_lm_ray, based on a monodisperse size distribution with D_i = 200 (cloud ice) and D_i = 20 (cloud droplets) microns.

    A bug has been fixed: A factor involving N0_snow (n0s(1-p_s)) was doubled and lead to underestimation of dbz_snow of 40-50 dB. This has been corrected.

  • src_flake.f90 (by Dmitrii Mironov)
    Technical changes in few subroutines to allow for inlining and vectorization on the NEC SX systems.

Back to Contents

7. Changes of Results

The changes in the microphysics and the Latent Heat Nudging again do change the results slightly.

Also the Smagorinsky diffusion does change the results, if it is switched on. If the new option for the wind gust computation is activated, the wind gusts will change.

Back to Contents

8. Changes to the Namelists

There were the following changes for the Namelist variables:

Group Name Meaning Default
/DYNCTL/ l_diff_Smag to switch on/off the Smagorinsky diffusion .FALSE.
/TUNING/ rain_n0_factor to reduce the evaporation of raindrops
(0.0 ≤ rain_n0_factor ≤ 1.0)

Changed default value!
shape parameter of the rain drop size distribution
(0.0 ≤ mu_rain ≤ 5.0)
New default value is 0.0

The namelist parameter mu_rain can now also be used for the subroutine hydci_pp, which is used in coarser grid applications. Because these applications are still in the majority, we decided to set the default of mu_rain for these applications, which is 0.0! For higher resolutions, which do use the graupel scheme (subroutine hydci_pp_gr), a value of mu_rain=0.5 is recommended and has to be changed in the namelists!!!

Back to Contents