Documentation of the Changes in the COSMO-Model
Version 5.05

23.02.2018

After implementing several development versions 5.04a-h, the new version COSMO-Model 5.05 is finally available. There have been some more modifications compared to 5.04h, which are documented below.

Now all physical parameterizations are in blocked data format and most packages are shared with the global model ICON. However, tests at DWD to use the ICON settings also for COSMO have not been successful. Therefore, DWD now uses a model configuration which reproduces the settings of the old ijk physics as close as possible. But of course it is also possible to run and test the new ICON-like setup for the physics. How to choose these setups is described in an extra documentation Different Configurations for the COSMO-ICON Physics.

Together with the COSMO-ICON Physics (but also due to other developments) several changes to the Namelist variables have been introduced. We summarize the most important changes in Summary of Namelist Changes.

Contents:

  1. Latest Modifications (on 25.05.18)
  2. Porting Additional COSMO Parts to GPU
  3. GCL Communication Library for GPU Communication
  4. Update STELLA and Serialbox Version
  5. Optimization of Global Communication in Latent Heat Nudging
  6. New Output Variables for Maximum Echotops between Output Steps
  7. New Output Variables for Low-Level Moisture Convergence
  8. Using src_lbc in lmorg (SR initialize_loop)
  9. Radar Forward Operator
  10. New Option for Targeted Cold Pool Diffusion
  11. Modifications to the Turbulence Scheme
  12. Technical Changes and Bug Fixes
  13. Changes to the Namelists
  14. Changes of Results


0. Latest Modifications (on 25.05.18)

Some problems could still be identified when running the Technical Test Suite and also when running in single precision. These modifications came to late for the release at DWD, therefore at DWD they are implemented in a version 5.05_1, while for the public release they are contained in Version 5.05.

Problems in the Single Precision Version

Allocation of working arrays in Nudging

Deactivating SPPT for GPU runs

Back to Contents


1. Porting Additional COSMO Parts to GPU

(by Xavier Lapillonne and the MCH GPU Team: Katherine Silverthorne-Osterried, Stephanie Westerhuis, Daniel Regenass, Pascal Spoerri, Valentin Clement, Hannes Vogt, Carlos Osuna, Oliver Fuhrer, et al.)

Now nearly all physical parameterizations (with the exception of the seaice scheme), the nudging and the latent heat nudging have been ported to GPU. Additional modifications to organize_physics.f90 and the interface routines for the parameterizations were necessary to run all parameterizations on the GPU without GPU-CPU synchronization.

Special work packages are:

Back to Contents


2. GCL Communication Library for GPU Communication

(by Pascal Spoerri and Valentin Clement, MCH)

Introduce calls in the Fortran part of COSMO to the GPU-GPU communication library GCL which is part of the STELLA library. This allows for direct communication between GPUs without requiring to copy data back to the host.

Back to Contents


3. Update STELLA and Serialbox Version

(by Hannes Vogt and Xavier Lapillonne, MCH)

Back to Contents


4. Optimization of Global Communication in Latent Heat Nudging

(by Ulrich Schättler, DWD)

If requested (with lhn_search=.TRUE.) the latent heat nudging searches for a grid point with a suitable precipitation rate in the vicinity of a given grid point. The vicinity is determined by a "radius" around the considered grid point (rlhn_search: number of grid points for search radius, usually about 10). This radius usually is larger than the number of grid points used for nearest neighbour exchange, so a special communication is necessary to pass values of all necessary grid points to a subdomain.

Up to now a global communication is done to gather three global fields (orography, precipitation rate, precipipation corresponding to climatological heating profile) onto all PEs in every time step. But if using many cores, this global communication destroys scalability, therefore an alternative communication method has been implemented that only passes necessary values by point-to-point communication.

A new module lhn_utilities.f90 has been implemented with methods to organize this special point-to-point communication (to gather a "pseudo-total" field):

Back to Contents


5. New Output Variables for Maximum Echotops between Output Steps

(by Ulrich Blahak, DWD)

The new variables can be accessed with the new shortnames:

If these variables appear in different GRIBOUT namelists, the result will always be the maximum respectively minimum since the last output time step, regardless in which GRIBOUT namelist it appeared, similar to other existing "cell track" variables (UH_MAX, W_CTMAX, LPI_MAX, DBZ_CTMAX, etc.)

It is possible to specify several different dBZ-thresholds for each of the two variables via the new namelist parameter dbzthresh_echotop" (namelist IOCTL). dbzthresh_echotop is a list of integers (at most 10) in dBZ and is used equally for both parameters. If this list contains N thresholds, ECHOTOPinM and ECHOTOP will have N different "levels" of the new leveltype echoTopInDBZ. In grib2 the corresponding level value is stored in the key scaledValueOfFirstFixedSurface in units of dBZ. Note that to output ECHOTOPinM and ECHOTOP in grib2 using grib_api, the newest local definitions from DWD (> 1.23.1) are needed.

Group Name Meaning Default
/IOCTL/ dbzthresh_echotop NEW (Vector of at most 10 integers)
Threshold(s) for which to compute ECHOTOPinM and ECHOTOP if one or both are specified in the list of model level output variables (yvarml in GRIBOUT).
18,-1000,...,-1000

Back to Contents


6. New Output Variables for Low-Level Moisture Convergence

(by Ulrich Blahak, DWD)

The new variables can be accessed with the new shortnames:

Back to Contents


7. Using src_lbc in lmorg (SR initialize_loop)

(by Katherine Osterried, Ulrich Schättler, DWD)

For setting the boundaries for the atmospheric fields, the routine lbc_interpolate from module src_lbc is used now. This subroutine only sets the boundaries, and not the full fields, as was done before. Therefore the subroutine calps cannot be called anymore, but this is also not necessary at this place.

The implementation has been taken from a work done by Katherine Osterried in 2016. But only the "atmospheric part" is taken. The corresponding work for setting the boundaries of several surface fields has not been taken, because for special runs (artificial test cases without physics or at least without TERRA) we need to set the full fields, not only the boundaries. These would lead to a mixture of different calls (init_copy, lbc_interpolate) and would make the code even more difficult to read as it is now.

Back to Contents


8. Radar Forward Operator

(by Ulrich Blahak, DWD)

The interfaces to the radar forward operator have been adapted to the new version. Note that the radar forward operator itself is not yet part of the COSMO-Model.

Back to Contents


9. New Option for Targeted Cold Pool Diffusion

(by Guy De Morsier, MCH)

Implemented a switch (in /DYNCTL/) for a new scheme for cold pool diffusion: l_diff_cold_pools_uv (Default: .FALSE.)

Note that both namelist variables concerned with cold pool diffusion have to be set to .TRUE., to activate the new method: l_diff_cold_pools = .TRUE. and l_diff_cold_pools_uv = .TRUE.

If only l_diff_cold_pools = .TRUE. and l_diff_cold_pools_uv = .FALSE., then the old method is used.

If l_diff_cold_pools = .FALSE., no cold pool diffusion is run at all, no matter how l_diff_cold_pools_uv is set.

Back to Contents


10. Modifications to the Turbulence Scheme

(by Ulrich Schättler, DWD)

The sources from the turbulence scheme have been ported back to ICON. Some latest ICON developments have been implemented with ifdefs at the moment:

Back to Contents


11. Technical Changes and Bug Fixes