Besides a consolidation of the grib_api implementation and writing COSMO GRIB2 variables with the new general vertical coordinate, this version of INT2LM contains a modification for the procedure to calculate the COSMO multi-layer soil variables from the IFS and interfaces to couple the COSMO-ART (and POLLEN) part for the interpolation.
This version of INT2LM now is able to write GRIB2 data with the grib_api from ECMWF. In addition to Version 1.21, the multi-level atmospheric variables are now written using the new general vertical coordinate (with level type 150).
Note that at least version 1.11.0 from grib_api is necessary to compile INT2LM with grib_api, because of the use of the new general vertical coordinate.
The usage of GRIB2, the new general vertical coordinate (and most important the local use sections of GRIB2) will be documented on the COSMO-Web Page: grib This page is still under construction. We hope to extend it until end of July 2013 significantly.
The main difference to the other vertical coordinate types 'hybrid' and 'hybridLayer' is, that now there is no computational algorithm how the vertical layers are constructed, but a full 3D file (called a HHL-file for the height of half levels in COSMO) is provided, that has to be processed together with other 3D variables defined on these levels.
With this new vertical level type, also some new keys were introduced for the WMO GRIB2 standard, namely:
HHL-files can only be created by the INT2LM, but INT2LM can also process an existing HHL-file. This behaviour can be controlled by the new Namelist variable lnewVGrid (in /LMGRID/): the default is .FALSE., which means that no new file is created
These keys replace the vertical coordinate parameters, which are present in data with level types 'hybrid' or 'hybridLayer'.
The new general vertical coordinate and its usage in the COSMO-Model system will be documented and explained in detail on the COSMO web page (coming soon).
Introduced a new module vgrid_refatm_utils.f90, which contains data structures, variables and routines necessary for dealing with the vertical grid and the reference atmosphere.
New data structures:
NOTE:
In connection with these technical changes we noticed a bug in src_vert_inter_lm:
To compute the boundary layer height, the vertical coordinate parameters akh_in, bkh_in
from the input data were used. But in case of COSMO_EU for example, which has ivctype=2
(a height based coordinate), akh_in and bkh_in contain height, not pressure.
Now, always the pressure coordinates vcoord_in%sigm_coord are used.
CHANGES OF RESULTS:
This bug fix changes the results of applications with llm2lm and COSMO input data
with a height based vertical coordinate (ivctype_in = 2)!!!
Implemented possibility to write HHL in a single file with full precision (but only when writing GRIB2).
For that, 2 new Namelist switches have been implemented in group /DATA/:
In case of writing GRIB2, the subroutine org_lm_output is called during the initialization of INT2LM with a variable list just containing 'HHL' to write the COSMO HHL file.
Implemented a new module src_read_hhl.f90, which reads the HHL-files for the COSMO-grid and also for a COSMO-input grid, if necessary.
Introduced arrays to convert some GRIB1 codings to grib_api strings
With the current interpolation scheme for the IFS soil model, if you use l_multi_layer_lm=.TRUE. and yinput_model='IFS', the soil is first interpolated to the 2-layer soil model levels, and successively interpolated (actually extrapolated) to the multi-layer levels, so input temperature below the COSMO T_CL level gets lost and deep temperature is unrealistic. With this direct interpolation all the input layers influence the output, so higher precision and less extrapolation is obtained.
The new interpolation is activated when
The technique used is linear interpolation of soil temperature, assuming it is valid in the mid point of the layers, and a linear conservative interpolation of volumetric soil moisture. Extrapolation below is done keeping values constant.
To avoid too many if's and branches in src_2d_fields.f90, l_smi=.TRUE. is forced when IFS and l_multi_layer_in=.TRUE., because l_smi code uses a different scaling of soil moisture which allows vertical interpolation, while the default setting does not, for this reason, although src_read_coarse_grid.f90 would allow interpolation with l_smi=.FALSE., this is forbidden in src_namelists.f90 because the results are wrong.
Also the l_use_t_skin=.FALSE. option is not implemented. It could be supported also for l_smi=.FALSE. and l_use_t_skin=.FALSE. at the cost of complicating the code a little bit.
The modifications are:
Similar to the COSMO-Model, interfaces have been implemented with ifdef ART to couple an additional component INT2LM_ART. This additional component is provided by KIT together with the COSMO_ART package.
Changes in the Namelist variables:
The namelist variable l_chemistry (in /CONTRL/) has been deleted and has
been replaced by two new variables: l_art, l_art_nested
There were the following changes for the Namelist variables:
Group | Name | Meaning | Default |
---|---|---|---|
/CONTRL/ | lprog_qr_qs | This name has been changed. The old name was lprog_qrqs. | .FALSE. |
l_chemistry | has been deleted | ||
l_art | replaces l_chemistry | .FALSE. | |
l_art_nested | replaces l_chemistry | .FALSE. | |
/LMGRID/ | ivctype | Changed the default value from 1 to 2: because ivctype=1 should not be used any more. | 2 |
lnewVGrid | to indicate, that a new vertical grid file HHL has to be created. | .FALSE. | |
/DATA/ | yin_hhl | name of the vertical grid HHL-file that has to be read in case of COSMO GRIB2 input files. This file has to be in the directory yinext_cat. | ' ' |
ylm_hhl | name of the vertical grid HHL-file that has to be read in case of COSMO GRIB2 output files. This file has to be in the directory ylmext_cat. | ' ' |
The bug fix in module src_vert_inter_lm changes the results of applications with llm2lm and COSMO input data with a height based vertical coordinate (ivctype_in = 2)!!!
The results of all other applications are not changed.