Documentation of the Changes in the COSMO-Model
Version 5.06

27.02.2019

Contents:

  1. Running the COSMO-Model in Single Precision
  2. Mire Parameterization
  3. Update of Turbulence Scheme with ICON
  4. Fix for Tiedtke-Bechtold Convection Scheme
  5. Latest Modifications for the GPU Version
  6. GNSS Standard Operator
  7. Additional Changes in the Data Assimilation
  8. Changes in the Latent Heat Nudging
  9. New Wind Gust Tuning
  10. Introducing Lockfile Mechanism
  11. Technical Changes and Bug Fixes
  12. Changes to the Namelists
  13. Changes of Results


1. Running the COSMO-Model in Single Precision

(by Erwan Brisson (Uni Frankfurt), Ulrich Schaettler (DWD))

There have been several fixes / modifications in the model, to run properly in single precision:

Fixes in TERRA

In COSMO-Model Version 5.01, some work has been invested by MeteoSwiss to implement different variants of epsilons into TERRA:

When implementing the ICON version of TERRA, this work was lost, because the ICON version was based on an earlier COSMO version, which only had the eps_soil. This work has been resurrected now.

Erwan Brisson noticed large differences appearing between a double precision and a single precision simulation for the year 1999 over Europe, especially over mountainous areas and the beginning of spring. After replacing some appearances of eps_soil by eps_temp, where temperatures where checked against the freezing point, these differences vanished.

Now we also checked all other occurences of eps_soil and replaced them, where necessary, according to the work in src_soil_multlay.f90.

For single precision runs, this will change the results.

For double precision results, all three epsilons have the same value as eps_soil, so there will be no changes of results.

Fix in radiation_utilities.f90

Introduced clipping to 0.0 for computation of cloud variables to avoid negative values when running in single precision.
(by M. Baldauf; also implemented in 5.05b1)

Interface to RTTOV

The RTTOV-library (and therefore also the interface library radiance) works only in double precision. The RTTOV library is used for the following tasks in the COSMO-Model:

Now the synthetic satellite pictures (lsynsat) can also be computed when COSMO is running in single precision and RTTOV10 or RTTOV12 is used. But the other tasks, which are necessary during data assimilation, cannot be performed then.

Computation of the lightning potential index (LPI)

Computing the LPI requires solving a Newton method. The implemented convergence criteria (ABS (f/f') < 1.0E-2) is not practicable for single precision. There are many cases where the Newton method does not converge then.

Nevertheless, the value of ABS(f) is going below 1.0E-6 in all these cases. Therefore the criterion ABS(f) < eps_for_null = 1.0E-6 has been implemented now.

Computations in subroutine radar_lm_ray

There are some power functions with q_rain and q_graupel, where the argument can have very small values (< 1.0E-15), which lead to floating point exceptions with Cray cce (altough everything runs fine for GNU).

Such small values can occur, because all q-values are only clipped at the end of the time loop. The computations have been modified in a way, that the result is set to 0.0, if the q-values are below 1.0E-15, otherwise, the power function a**b is computed with EXP (b * LOG(a)).

Back to Contents


2. Mire Parameterization

(by Alla Yurova, RosHydroMet; implemented by Jürgen Helmert)

Approach from Alla Yurova et al., 2014, https://doi.org/10.1002/2013WR014624

New namelist variable in /PHYCTL/:

Group Name Meaning Default
/PHYCTL/ itype_mire NEW
  1. no parameterization (default)
  2. Approach from Alla Yurova
0

NOTE: The mire parameterization only works with soil moisture dependent heat conductivity, i.e. itype_heatcond ≥ 2!

Changes of results due to a modification in sfc_terra:
An expression (eai(i)/sai(i)) was replaced by a local variable. Using the local variable instead of this expression in another computation changes the order of execution, which gives a different rounding.

Back to Contents


3. Update of Turbulence Scheme with ICON

(by Ulrich Schättler, DWD)

The turbulence modules have been aligned between COSMO and ICON and some cleanups have been done. The current versions are now implemented into ICON code.

Bug Fix for itype_vdif = 1

A bug has been fixed in the COSMO turbulence interface for itype_vdif = 1:
Variables, which are computed in turbdiff (zvari, rhon) have not been saved to pass them to the vertical diffusion in subroutine vertdiff, which is called after the physics for itype_vdif = 1.
This has been fixed now by using full 3D variables to save all values.

Back to Contents


4. Fix for Tiedtke-Bechtold Convection Scheme

(by Jochen Förstner (DWD) and Lucio Torrisi (ITAF))

The temperature tendencies from the microphysics are now also gathered in case of lgsp_first and given to the dynamics in src_runge_kutta.f90 for further treatment and vertical diffusion for itype_vdif = -1. A treatment of these tendencies for itype_vdif = 0 or = 1 has not been considered yet.

Back to Contents


5. Latest Modifications for the GPU Version

(by Philippe Marti, Valentin Clement, Xavier Lapillonne, Andreas Pauling, MCH)

CLAW directives to enhance OpenACC port performance

Add CLAW directives to enhance performance of some GPU ported parts: (in turb_utilities.f90)

Fixes for Pollen on GPU

Fixes in I/O

Boundary fields are now only saved once to GPU.
The transfer to GPU is controlled by bd_list (TYPE bd_field) in src_input.f90 and triggered in acc_utilities.f90 with:

IF ( ASSOCIATED( bd_list(i)%p2 ) ) THEN
  CALL acc_update_device( bd_list(i)%p2 )

Back to Contents


6. GNSS Standard Operator

(by Michael Bender, DWD)

Back to Contents


7. Additional Changes in the Data Assimilation

(by Christoph Schraff, DWD)

Changes of the namelist variables

New namelist entry in /NUDGING/:

Group Name Meaning Default
/NUDGING/ lredn_repro NEW if .true., then reproducibility of redundancy check ensured irrespective of domain decomposition by allowing for redundancy only between reports assigned to the same grid point. .FALSE.

Changes of the results

None for the use of conventional data, unless lredn_repro is switched on.

Back to Contents


8. Changes in the Latent Heat Nudging

(by Klaus Stephan, DWD)

Changes in src_lheat_nudge.f90, data_lheat_nudge.f90 and organize_assimilation.f90.

Add new features to LHN approach, which have been proofen beneficial when testing LHN within ICON model

Changes of the namelist variables

New namelist entry in /NUDGING/:

Group Name Meaning Default
/NUDGING/ lhn_tclim_only NEW If .TRUE., the old model climatological heating profile is used, if no surrounding grid point with suffient precipitation is found.
If .FALSE., an artificial heating profile can be determined with 3 additional new namelist variables zlev_clim_max, tt_clim_max and std_clim_max.
.TRUE.
lhn_artif_only NEW If .TRUE., apply only increments calculated with the climatological / artificial heating profile. .FALSE.
lhn_no_ttend NEW If .TRUE., only take into account increments in humidity, calculated when lhn_hum_adj=.TRUE.. .FALSE.
zlev_clim_max NEW Height of maximum value of atificial temperature profile. 3500.0
tt_clim_max NEW Maximum value of atificial temperature profile. 0.00015
std_clim_max NEW Parameter to define length of artifical temperature profile. 4.0

Back to Contents


9. New Wind Gust Tuning

(by Guy de Morsier, Christoph Heim, MCH)

This new tuning can be activated by setting the namelist variable itype_diag_gusts = 5 (new option) in the group /DIACTL/.

This parameterization is an empirically trained statistical linear model with four predictors: the model mean wind at 10m and three different gust estimates from the Brasseur wind gust parameterization (the main gust estimate and the lower and upper bounds of the bounding interval). The coefficients in the linear model were trained using COSMO at a horizontal grid-spacing of 1.1 km over Central Europe. itype_diag_gust=5 can thus be expected to work best under these conditions but to some degree the parameterization should generalize to other grid-spacing and to other areas. This parameterization was created with the goal to overcome the systematic underestimation of strong wind gusts as it occurs with the simple model itype_diag_gusts=1.

There are two cases of extrapolation that the statistical model does not handle well because it was not trained under such conditions:

Back to Contents


10. Introducing Lockfile Mechanism

(by Guy de Morsier, MCH)

Using the lockfile mechanism is an alternative approach (compared to READY files) to wait for input files, which is used by MeteoSwiss. It has been implemented into INT2LM some time ago and now also in the COSMO-Model.

Files are not written directly to a file called filename, but first to a file with name filename.lck. Only if the file is fully written and is closed, the name is changed to filename. For this the (non-standard) Fortran intrinsic RENAME is used. But this intrinsic nowadays is offered by (nearly) all compilers.

Using lockfiles is activated by setting the namelist variable (in /IOCTL/) llockfiles = .TRUE..

Back to Contents


11. Technical Changes and Bug Fixes

Back to Contents


12. Changes to the Namelists

Group Name Meaning Default
/PHYCTL/ itype_mire NEW
  1. no parameterization (default)
  2. Approach from Alla Yurova
0
/DIACTL/ itype_diag_gusts new option 5: empirically trained statistical linear model. 1
/IOCTL/ llockfiles NEW indicates whether to use lockfiles or not. .FALSE.
/NUDGING/ lredn_repro NEW if .true., then reproducibility of redundancy check ensured irrespective of domain decomposition by allowing for redundancy only between reports assigned to the same grid point. .FALSE.
lhn_tclim_only NEW If .TRUE., the old model climatological heating profile is used, if no surrounding grid point with suffient precipitation is found.
If .FALSE., an artificial heating profile can be determined with 3 additional new namelist variables zlev_clim_max, tt_clim_max and std_clim_max.
.TRUE.
lhn_artif_only NEW If .TRUE., apply only increments calculated with the climatological / artificial heating profile. .FALSE.
lhn_no_ttend NEW If .TRUE., only take into account increments in humidity, calculated when lhn_hum_adj=.TRUE.. .FALSE.
zlev_clim_max NEW Height of maximum value of atificial temperature profile. 3500.0
tt_clim_max NEW Maximum value of atificial temperature profile. 0.00015
std_clim_max NEW Parameter to define length of artifical temperature profile. 4.0
/STD_OBS/ Href NEW GNSS delay reference height above ground in [m] 0.0
ZTDminUse NEW minimum ZTD used for assimilation, delay in [m] 0.0
ZTDmaxUse NEW maximum ZTD used for assimilation, delay in [m] 3.0
StatBelowSurface NEW GNSS station height below model surface in [m] 500.0
StatAboveSurface NEW GNSS station height above model surface in [m] 1000.0
StatBelowColumn NEW GNSS station height below any model grid column used for interpolation in [m] 500.0
NStepOpt NEW Option for vertical distribution of supporting points along the signal path (integer); valid options are:
  1. vertical scaling with simple pressure profile: P(h) = P0*exp(-h/HscaleP).
    STDs: Mapping on signal path with 1/sin(elev).
    NStepVertMod supporting points are defined within the model domain, Heights, Hlevel, Hpoints are not used.
  2. vertical scaling as in (1),
    STDs mapping on signal path by defining at least on point per COSMO grid cell.
    NStepVertMod supporting points are defined within the model domain, Heights, Hlevel, Hpoints are not used.
  3. vertical scaling using Heights, Hlevel, Hpoints, the old parameters NStepVertMod and HScaleP are not used.
    If the arrays Heights, Hlevel, Hpoints are specified and reasonable settings are provided then NStepOpt = 3 is set automatically and the original setting is ignored.
2
Heights NEW Vertical model grid levels defining the upper bounds of the height intervals (REAL array of size 10); only the desired number of intervals needs to be specified. 2829.47, 6773.21, 12877.68, 21500.0
Hlevel NEW Number of model levels within the intervals (INTEGER array of size 10) 20, 10, 10, 10
Hpoints NEW Desired number of supporting points within each interval, should be greater than Hlevel (INTEGER array of size 10) 21, 11, 11, 11

Back to Contents


13. Changes of Results

If not activating the new namelist switches, there are only numerical changes:

Back to Contents