02.10.2013
This version now consolidates the developments for COSMO-Model 5.0. It only contains
technical changes and does not modify the results of the operational configurations.
It is the release candidate for Version 5.0
- Unification of COSMO and MESSy Tracer Structure
- Added field W_SO to list of fields for possible external analysis
- Using of Namelist variable: l_ke_in_gds
- Using of names: vcoord, refatm
- Technical Changes and (minor) Bug Fixes
- Changes to the Namelists
- Changes of Results
(by Astrid Kerkweg, Oliver Fuhrer, Anne Roches, Ulrich Schättler)
To avoid too many ifdefs in the computational modules and subroutines, the COSMO and the
MESSy tracer structure have been adapted. Now many ifdefs are in the COSMO tracer source
files, but could be avoided in the computational routines.
- MESSY and data assimilation / digital filter initialization:
Moreover, the MESSY ifdefs have been eliminated in the data assimilation and the
digital filtering initialization. These components cannot be used, if the model is
compiled for MESSY.
- MESSY and long term storage
Some fields from the soil model and the synthetic satellite images have been put
to the long term storage instead of being local storage. This also allows easier
coupling to external modules.
Component |
Global name |
Former local name |
Meaning |
Soil Model |
fr_snow |
zf_snow |
Surface fraction covered by snow |
fr_wi |
zf_wi |
Surface fraction covered by interception water |
ustar_fv |
--- |
Friction velocity |
SynSat |
synme7 |
synme7 |
SynSats for Meteosat 7 |
synmsg |
synmsg |
SynSats for Meteosat Second Generation |
- Allocation of tkvm, tkvh, tkhm, tkhh:
These fields have now been allocated from 1:ke1 in the vertical
(instead of 2:ke1 before), to avoid different treatment of such fields
Back to Contents
(by Ulrich Schättler)
W_SO has been added to the list of fields for which it can be chosen, whether they are
taken from the assimilation cycle (with tri=13) or from external analysis or other external
programs (tri=0). The reason is to introduce some perturbations for W_SO for the
ensembles. A new namelist switch lan_w_so has been introduced in the group /GRIBIN/ for
choosing the correct field (similar to lan_t_so0, etc.)
Group |
Name |
Meaning |
Default |
/GRIBIN/ |
lan_w_so |
Selection of soil moisture fields: whether from
an external program (INT2LM) or an analysis (.TRUE.) or from the
Nudging cycle (.FALSE.) |
.FALSE. |
Explanation: the usage is similar to lan_t_so0 and such switches:
- lan_w_so = .TRUE.:
take a field which comes from an external program:
this could be an external analyses or the INT2LM.
This field then has time range indicator (tri) 0 (or at least a values /= 13).
In this case also the additional element number of the input field is checked,
whether it corresponds to the one specified by the namelist variable nsma_stat
(used for soil moisture analysis).
- lan_w_so = .FALSE.:
take a field which comes from the Nudging cycle (and has tri=13).
The consequence is, that all applications starting from interpolated analysis data,
which are coming from the INT2LM, have to adapt their settings!
- Settings, if W_SO shall be taken from INT2LM: lan_w_so = .TRUE.
- Settings, if W_SO shall be taken from the Nudging Cycle: lan_w_so = .FALSE.
Back to Contents
(by Ulrich Schättler)
There are two different ways of coding vertical coordinate parameters (and some
additional parameters for the reference atmosphere and the vertical coordinate type).
Which way is chosen in INT2LM and the COSMO-Model can be specified by the
Namelist variable l_ke_in_gds:
- = .FALSE.gives the old way of coding
- = .TRUE.gives the new way of coding
The following table shows the vertical coordinate parameters for both types.
The name pv is taken from the grib_api convention for the vertical
coordinate parameters and is now also used in the COSMO-Model.
Entry in pv |
Old specifications |
New specifications |
pv( 1) |
p0sl |
ivctype |
pv( 2) |
t0sl |
ke |
pv( 3) |
dt0lp |
p0sl |
pv( 4) |
vcflat |
t0sl |
pv( 5) |
vcoords(1) |
dt0lp |
pv( 6) |
vcoords(2) |
vcflat |
pv( 7) |
vcoords(3) |
vcoords(1) |
pv( 8) |
vcoords(4) |
vcoords(2) |
etc. |
pv( 3+ke1) |
vcoords(ke1-1) |
vcoords(ke1-3) |
pv( 4+ke1) |
vcoords(ke1) |
vcoords(ke1-2) |
pv( 4+ke1+1) |
ivctype |
vcoords(ke1-1) |
pv( 4+ke1+2) |
svc1 |
vcoords(ke1) |
pv( 4+ke1+3) |
svc2 |
svc1 |
pv( 4+ke1+4) |
nfltvc |
svc2 |
pv( 4+ke1+5) |
delta_t |
nfltvc |
pv( 4+ke1+6) |
h_scal |
delta_t |
pv( 4+ke1+7) |
---- |
h_scal |
The default for this namelist variable has been changed to: .TRUE.
Therefore all GRIB1 vertical coordinate parameters are now coded in the new way.
Note that the values after the vcoords depend on other namelist settings
for the reference atmosphere and the vertical coordinate type.
If the old way of coding should be used, l_ke_in_gds has to be set to
.FALSE. explicitely.
Back to Contents
(by Ulrich Schättler)
In version 4.28, new types were used to hold all vertical coordinate parameters and also
parameters of the reference atmosphere. While names with suffixes _in and _out were used
then in INT2LM and also in the COSMO-Model, it was decided to use _in in the INT2LM for
the incoming fields from coarse grid models and the names without suffix for the
corresponding variables of the COSMO grid and also throughout the whole COSMO-model.
Back to Contents
- data_io.f90:
Introduced new parameter clen, to specify length of shortnames
- fast_waves_sc.f90:
Initialize izerror in all subroutines
- io_metadata.f90:
- Subroutine make_grib_product: move block to set productDefinitionTemplateNumber
downwards to properly code the ensembles in GRIB2
- GRIB2: Adaptations to write endStep correct for quarterly output
and also set stepUnits for nunit_of_time=0 (Minutes in GRIB2)
- Correct transformation from old to new style of coding GRIB1 gds (UB)
- io_utilities.f90:
Subroutine check_input_grid: Before decoding vertical coordinate parameters with
REFSTF, check the value of the corresponding gds-entry, because some were not
really coded.
- lmorg.f90:
- Moved call to trcr_alloc at the end of the allocation block
- Added some missing initializations for leapfrog integration for lartif_data and
the 2-moment-scheme (UB)
- organize_assimilation.f90:
Corrected a "!defined" statement for GRIBDWD/GRIBAPI:
replaced "||" by correct "&&")
- organize_data.f90:
Allocate pv_in only in case of real data input (not for lartif_data)
Check that value for ke_tot is less than khmax - 20
Convert Grib1-unitOfTimeRange to Grib2-value, if necessary.
- src_artifdata.f90:
- Corrections for proper use of the new vertical coordinate and reference
atmospheres data types
- Fixed computation of seed(i) in function seed_random_number(), because
the old method lead to a floating point exception with the gfortran compiler
- Initialization of t_so, w_so, t_snow_mult, t_snow
now only for land points (SR init_tw_soil_snow_c()).
- New namelist parameter t_surf_c for baseline initialization of surface
temperature t_s.
- src_input.f90:
- Corrections for NetCDF:
- put vertical coordinate parameters to pv_in for later use in the model
- allocate zvc_params in subroutine read_nc_gdefs in all tasks
- Corrections for GRIB (setting .NOT. l_ke_in_gds):
- compute the correct value of ivctype in subroutine get_vertcoord
- if GRIB1 data are read and GRIB2 data written, a HHL-file need not be read
- Bug fix when running with more tasks than GRIB records in input file:
not all tasks called the global communication then
- src_lheat_nudge.f90:
Error and EOF check in lhn_obs_read after calling subroutine cuegin:
if EOF (ilen=0), then do not check the error code
(otherwise it could go in an endless CYCLE loop).
- src_output.f90:
Corrected placement of ifdef GRIBAPI for gribinit_loop
Added check for upper bound of zlev resp. plev in z_int()
and p_int()
- src_runge_kutta.f90:
Call to subroutine finalize_runge_kutta only for l2tls
(otherwise it could crash during Leapfrog-runs)
- src_slow_tendencies.f90:
Bugfixes in subroutine explicit_horizontal_diffusion (3D-Turbulence):
- some loop index bounds were too small by 1 gridpoint
- corrected wrong metrical term in ztaud23
(This will change results only if l3dturb=.TRUE. and l3dturb_metr=.TRUE.)
- src_soil_multlay.f90:
Bug fixes for the multi-layer snow model (does not change operational configurations)
- src_turbulence.f90:
Bugfixes in subroutine prankolmo_rk:
(for itype_turb = 5..8; does not change operational configurations)
- zlen has to be a 3D field instead of a scalar
because it is carried from one loop to a subsequent loop.
- zsgesh and zsgesv are already the horizontal and vertical
components of the squared deformation. Therefore remove
the square operator from calculations of ztpm and ztpm_v.
- src_obs_cdfout_feedobs.f90:
Bug fix for allocation/deallocation of some arrays (ssgbdy, etc):
The allocation has been made unconditional
Back to Contents
Group |
Name |
Meaning |
Default |
/IOCTL/ |
l_ke_in_gds |
new default |
explicit GDS entry for number of model levels |
.TRUE. |
/GRIBIN/ |
lan_w_so |
NEW |
switch for selection of external (tri=0) W_SO |
' ' |
Back to Contents
Most changes are pure technical. Results of operational applications are not changed.
Back to Contents