FE 13 - COSMO-Model System: Interpolation Program INT2LM

Documentation of the Changes in INT2LM
Versions 1.11 to 1.18

11.03.2011

There were several new versions of the INT2LM in the last year with various developments. After reaching a certain stability again, Version 1.18 is now distributed to the users.

Contents:

  1. Modifications (grouped by subject)
  2. Bug Fixes and Miscellaneous
  3. Technical Adaptations
  4. Changes in the Namelists
  5. Changes of the Results

1. Modifications (grouped by subject)

Implementation of reading data with grib_api

In the near future, the grib_api from ECMWF will replace the DWD grib(1) library. With grib_api it is possible to read and write Grib 1 and Grib 2 data. In a first step, grib_api has been implemented in INT2LM only for reading data.

All references to grib_api routines have been encapsulated with the pragma #ifdef GRIBAPI. To activate these calls, -DGRIBAPI has to be specified for the compilation.

NOTE: This implementation must use grib_api-1.9.0 or higher.

To read grib data with grib_api can be specified by the Namelist parameters

Setting these parameters to 'grb1' will activate the DWD grib library which only can read grib1. Setting these parameters to 'grax' will activate the grib_api. For reading data, it must not be specified, whether grib1 or grib2 is read, because grib_api will detect that on its own (therefore the "x").

To read the external COSMO-Model parameters is not yet possible with grib_api. This will be implemented at a later stage.

A number of changes were necessary to implement grib_api. Here are the highlights:

Running the INT2LM using grib_api

To learn more about grib_api, please take a look at the manual, which you can find on the web page of ECMWF:
http://www.ecmwf.int/publications/manuals/grib_api/index.html

The implementation of grib_api in INT2LM is done using the concept of the short names. To run the INT2LM with grib_api therefore requires the usage of some grib_api tables. The tables for Version 1.9.5 are distributed with the new int2lm version as they are used by DWD. (These tables should also work with other 1.9.x versions of grib_api).

To use these tables, a grib_api environment variable has to be specified before running INT2LM:
export GRIB_DEFINITION_PATH=..../TABLES_1.9.5_COSMO/definitions.edzw:.../TABLES_1.9.5_COSMO/definitions

While testing this new INT2LM version, there were some problems recognizing certain variables, because the centre=78 (which means DWD) was specified for these variables, and when another centre has been specified in the GRIB file (what is of course done by all other COSMO centres), this did not match. Therefore we modified the tables now in a way, that it should be possible to use them in other centres. We are still in the process of learning about grib_api and maybe these tables and their usage might change in the near future.

Back to Contents

Reproducibility of surface variables for isolated points

The computation of surface values for isolated points (lakes in the land; islands in the oceans) was looking up to now for the next grid point with the same land-sea-mask. Depending on the domain decomposition, this could lead to different points.

Now, all isolated land points are identified at the beginning of the program, and for every isolated point, the next grid point in the total domain of the coarse grid is searched and saved (in subroutine external_data, Section 4.6: Test whether isolated points are present). All information on these isolated points are gathered in the variable globl_iso_points, which is of the structure struct_for_isolated, defined in data_profiles.f90.

In the subroutine interp_l in module interp_utilities.f90, the values of the special field at the isolated points are gathered from every processor and are given to all processors, if a "match" interpolation is done. In the loops over the grid points, the search for the next grid point with same land-sea-mask is then replaced by just putting the exchanged variables to the proper COSMO grid points.

This procedure changes the results for the surface variables compared to former versions and can also influence the atmosphere, because t_s is used as lower boundary condition for vertical interpolation of temperature.

Back to Contents

Computation of interpolation weights

Some problems have been reported for the options lec2lm and llm2lm which were related to the subroutine coor_coarse_grid_lm in the module src_grids.f90. Therefore, the following modifications have been implemented:

Back to Contents

Possibility to switch the reference atmosphere

The possibility to switch the reference atmosphere from the incoming to the outgoing grid has been implemented in the module src_vert_inter_lm.f90:

The problem was:

Back to Contents

Interpolation of QR, QS from IFS data

Some technical adaptations have been done in src_gribtabs and src_read_coarse_grid to read and interpolate rain and snow from IFS data. Note the differences in the names (important for shortnames, when using grib_api):

DWD IFS
rain: QR crwc
snow: QS cswc

Back to Contents

2. Bug Fixes and Miscellaneous

Back to Contents


3. Technical Adaptations