Documentation of the Changes in the COSMO-Model
Version 4.26

12.12.2012

This version is basically a consolidation version. Extensive testing of version 4.25 revealed several problems with the restart functionality and some smaller bugs. Also, some problems with the multi-layer snow model have been fixed and the new tracer module got its first update in view of COSMO_ART.

Contents:

  1. Saving Scale Interaction TKE Source Terms
  2. Modified RTTOV Interface for RTTOV10
  3. Radiance Processing in the COSMO-Model
  4. Problems with the Restart Functionality
  5. Update of the Tracer Module
  6. Technical Update of the Multi-Layer Snow Model
  7. CLM Changes for NetCDF I/O
  8. Bug Fixes and Technical Changes
  9. Changes to the Namelists
  10. Changes of Results


1. Saving Scale Interaction TKE Source Terms

(by Matthias Raschendorfer)

New variables have been introduced to save the scale interaction TKE sources for output. Corresponding shortnames for output and associated Grib1 numbers have been defined:

Shortname Variable
Name
Table
Number
Element
Number
Description
DTKE_SSO tket_sso 201 155 TKE-tendency due to SSO wake production
DTKE_HSH tket_hshr 201 156 TKE-tendency due to (sep.) horizontal shear
DTKE_CON tket_conv 201 157 TKE-tendency due to convective buoyancy

Back to Contents


2. Modified RTTOV Interface for RTTOV10

(by Andreas Messer)

The modules organize_satellites.f90 and src_sat_rttov.f90 have been modified in a way that also the RTTOV10 library can be used now. The code has to be compiled with the macro -DRTTOV10 and the following external modules and libraries have to be linked:

For using RTTOV9, the code can still be compiled with the macro -DRTTOV9 and has to be linked with the libraries:

Other updates for using RTTOV10 have been in the modules data_satellites.f90, mo_fdbk_cosmo.f90, mo_fdbk_tables.f90.

To activate the RTTOV10 library in the model, the switch itype_rttov=10 has to be set.

Back to Contents


3. Radiance Processing in the COSMO-Model

(by Andreas Messer)

Independent from computing the synthetic satellite images the COSMO-Model has been extended to read satellite observation files from the sat-pp (satellite post-processing; a tool developed at DWD), calculate the first guess brightness temperatures at the observation time and location and write back the results into feedback files. The assimilation itself will then be performed outside of the COSMO-Model.

To control the processing of the sat-pp files, a new Namelist INPUT file (INPUT_OBS_RAD) is necessary, which contains the groups /TOVS_OBS/ and /TOVS_OBS_CHAN/.

To choose the actions for satellite processing, two new logical switches have been introduced in the group /SATCTL/:

- lsynsat (Default: .TRUE.) To activate computation of synthetic satellite images (default behaviour from former versions) - lobsrad (Default: .FALSE.) To activate satellite observation processing. This can only be done, if the model is compiled with -DRTTOV10!

Group Name Meaning Default
/SATCTL/ lsynsat To activate computation of synthetic satellite images (default behaviour from former versions). .TRUE.
lobsrad To activate satellite observation processing. This can only be done, if the model is compiled with -DRTTOV10! .FALSE.

Back to Contents


4. Problems with the Restart Functionality

(by Uli Schättler, Hans-Jürgen Panitz, Burkhardt Rockel)

There were several issues and problems with writing / processing restart files:

  • Additional diagnosis of qrs and rho for output steps:
    In src_output.f90 an additional update of qrs and rho is computed for output steps. This must not be done for restart steps.
  • Advection of TKE (if not semi-lagrange advection):
    This is a problem which was not noticed up to now, because advection of TKE is (still) not used operationally (it is only done, if the logical switch lprog_tke=.TRUE.). But since Version 4.23 TKE is treated as the humidity variables and therefore the timelevel, which has to be advected, is copied to the timelevel nnew, with the following statement:

    IF (ALLOCATED(tke)) tke(:,:,:,nnew) = tke(:,:,:,nadv)

    But this was done without the bracketing: IF (lprog_tke) THEN, which has been added now.

    The problem with the TKE scheme is, that it does not use the COSMO time stepping mechanism with (nnold), nnow and nnew. This is not taken care of for the advection neither was it taken care of in restart files.
    Remedy: Write the TKE time level ntke also to the binary restart file (in src_output.f90), read it (in src_input.f90) and store the TKE field in the correct time level. The recomputation of ntke in organize_physics.f90 has to be eliminated therefore.

    Note that TKE-advection is only implemented for the alternative turbulence schemes itype_turb=5,...,8. Otherwise, the switch lprog_tke is reset to .FALSE. in organize_physics.f90 after namelist reading and and TKE is not advected!
  • File names of restart files when using asynchronous NetCDF I/O:
    When constructing the file names in the new module netcdf_io.f90, it has not been taken care of that nstart > 0 for restart runs.
  • Introduced call to get_free_unit for restart files again (which was erroneously moved outside to organize_data, because of prefetching of grib files) (US)
  • Correct grib table numbers for multi-layer snow variables (BR)
  • Always construct the file name for the constant fields with step 0, also for restart runs.
  • In case of asynchronous I/O print the name of the file with the constant fields correctly to file YUCHKDAT.
  • Set the correct timestep counter so that the correct date string is calculated for restarts at full hours in case of 14 digits for the date string (which means: eliminate ntstepstart)

Back to Contents


5. Update of the Tracer Module

(by Anne Roches, Oliver Fuhrer)

Some refinements and adaptations have already been implemented for the tracer module:

  • Renaming of Namelist variables from /DYNCTL (and model variables) hd_corr_q_[in,bd] by hd_corr_trcr_[in,bd] in order to be consistent also with the naming of other switches (e.g. ltrcr_trilin, lef_adv_trcr_notpd, etc.). These are the variables for the correction factors of the horizontal diffusion fluxes for tracers (former: q-Variables):

    Group Old Name New Name
    /DYNCTL/ hd_corr_q_in hd_corr_trcr_in
    hd_corr_q_bd hd_corr_trcr_bd

  • Removal of unnecessary information from the tracer module (T_TEND_XXX, boundary index,...)
  • Addition of the options T_LBC_USER and T_INI_USER for tracer clients who want to perform user defined boundary setting and initialization resp.
  • Change the default values of the metadata T_RELAX_ID and T_DAMP_ID in order to be consistent with the other defaults (e.g. for advection)
  • Renaming of T_CLP_POSDEF to T_CLP_ON since only on and off are available for the moment.
  • Addition of the pointer support in the metadata. This function is required for handling associated fields (surface field, emissions, ...) gracefully.
  • Handling of the surface field through the metadata mechanism which can now handle pointers. We thus no longer need a pointer for the surface field in the tracer structure. We had to shift the print of the tracer list and the metadata retrieval after organize_data ('start') in order to see also the pointers (e.g. surface field) in the standard output. The pointer is now a 3D pointer instead of a 2D pointer.
  • Increase of error message length in order to get more meaningful error messages.
  • Completion and correction of the behaviour for all types of lateral boundary conditions (initialize_loop, relaxation, damping)
  • The previous correction led to non bit-identical results for some namelists settings due to the strange treatment of QR, QS and QG. In order to get bit-identical results also in these cases, a new metadata ("hack") has been introduced for these species (DAMP_FORCED).
  • Cleanup and cosmetics (removal of unnecessary calls, correction in comments, update of headers, ...)
  • In src_radiation.f90: Renamed local variable lprog_qi to lzprog_qi to not confuse it with the global variable. Initialize this variable explicitely to .FALSE., which had been forgotten before. This lead to a crash when using itype_gscp < 3.
  • Add a new subroutine trcr_get_block in order to retrieve a block of tracers in one single call. This is required for COSMO-ART or other applications that deal with dozens of tracers.
  • Add a new subroutine for MESSY which gives access to the whole tracer structures. This should replace the modifications made by Astrid in the tracer module.
  • Add a warning in case of Leapfrog and l3dturb (combination not possible).

Back to Contents


6. Technical Update of the Multi-Layer Snow Model

(by Burkhardt Rockel, Uli Schättler)

A few technical adaptations were necessary for handling the variables of the multi-layer snow model:

  • Adapted variable names to corresponding I/O shortnames (in modules data_fields.f90, src_allocation.f90, src_setup_vartab.f90, src_soil_multlay.f90, dfi_initialization.f90, organize_data.f90, src_input.f90)
  • Initialize h_snow in case of restarts (in src_soil_multlay.f90)
  • Correct indices for gravity pre-setting (in src_soil_multlay.f90)
  • Correct grib table numbers for multi-layer snow variables in src_input.f90, organize_data.f90.

Back to Contents


7. CLM Changes for NetCDF I/O

(by Burkhardt Rockel)

Some variables, which had dimension of length 1, have been changed to scalar values. Therefore the number of dimension IDs (in data_io.f90, netcdf_io.f90, src_input.f90) could be reduced.

Back to Contents


8. Bug Fixes and Technical Changes

  • data_nudge_all.f90, organize_assimilation.f90:
    Increased length of directory for NetCDF OBS files to 250 (by setting icdfdirlen to 250). Changes in organize_assimilation.f90 for a proper broadcast of the character string ycdfdir.
  • mpe_io2.f90, Subroutine mpe_io_read:
    An MPI_Wait in the loop over the PEs has been moved from within the IF-block: IF (length > 0)... to outside of that IF-block, because otherwise the buffers could be overwritten by the succeeding messages.
    The DWD Grib-library calls have been embraced with ifdef GRIBDWD.
  • netcdf_io.f90:
    • Correction of the restart file names
    • Renamed the argument variable "namelist" in few subroutines to "outblock", because NAMELIST is a Fortran Keyword.
  • organize_data.f90:
    • if 14-digit file names are used, allow writing of analysis files also with an increment of less than an hour and also immediately after hour 0 (not only starting with hour 1).
    • added more consistency checks for the gribout namelist blocks:
      If lasync_io is .TRUE. and nprocio > 0, all gribout files have to be grib and
      If lasync_io is .TRUE. and nc_asyn_io > 0, all gribout files have to be NetCDF.
  • src_conv_tiedtke.f90, src_conv_shallow.f90:
    Allowing only non negative buoyant production terms of TKE
  • src_gridpoints.f90:
    Corrected dimensions for wind speed in meteographs output, which is computed now in m/s and not in knots any more.
  • src_output.f90:
    • Bug fix for itype_gather=2: correct dimensions have to be added for arrays procarray_real and procarray2d_real
    • Bug fix for calling SR potential_vorticity_rho: the prognostic fields u, v and w have to be passed with the correct timelevel itl
  • src_setup_vartab.f90:
    • Change leveltype for SOD_T and ASOD_T from 1 to 8 (HJP)
    • Adapted variable names of multi-layer snow model to corresponding short names for I/O (US)
    • Introduction of the additional output fields 'DTKE_(SSO, HSH, CON)' based on the model variables 'tket_(sso, hshr, conv)' (MR)
  • turbulence_diff.f90:
    Saving scale interaction TKE soruce terms for output (for DTKE_SSO, DTKE_HSH, DTKE_CON)
  • utilities.f90:
    Corrected comments for arguments in rotation routines, where latitude and longitude were mixed up

Back to Contents


9. Changes to the Namelists

There was a change of variable names in /DYNCTL/

Group Old Name New Name
/DYNCTL/ hd_corr_q_in hd_corr_trcr_in
hd_corr_q_bd hd_corr_trcr_bd

And two new namelist variables in the group /SATCTL/

Group Name Meaning Default
/SATCTL/ lsynsat To activate computation of synthetic satellite images (default behaviour from former versions). .TRUE.
lobsrad To activate satellite observation processing. This can only be done, if the model is compiled with -DRTTOV10! .FALSE.

Back to Contents


10. Changes of Results

All changes are pure technical. There is no change of results!

Back to Contents