Documentation of the Changes in the COSMO-Model
Version 4.23

07.05.2012

This version is the next step towards the new version COSMO-Model 5.0, which will be a unified release for NWP and climate mode. Many changes have been done to prepare the implementation of the new tracer module and the 2-moment microphysics. Also, some changes are to clean up the code and make it more modular. There are only very few changes that influence the results.

Contents:

  1. Changes in the parameterization of the cloud cover for ice clouds
  2. Restructuring of metric organization
  3. Reorganization of positive definite advection schemes
  4. Introduced new variants of Bott advection
  5. Computation of moisture divergence
  6. Compute physical tendencies in organize_physics.f90
  7. Removal of dead code
  8. Other technical modifications
  9. CLM extensions for next unified release
    1. Spectral Nudging
    2. Introduction of prescribed surface albedo
    3. Introduction of new GHG concentration scenarios
    4. Implementation of time dependent aerosol optical depths
    5. Support for climatological year with 365 days
    6. New diagnostic variables
    7. Changes for Restart and NetCDF I/O
    8. Variables for multi-layer snow model
    9. Miscellaneous
  10. Minor technical modifications
  11. Bug Fixes
  12. Changes to the Namelists
  13. Changes of Results
  14. Other technical impacts


1. Changes in the parameterization of the cloud cover for ice clouds

(by Axel Seifert)

src_radiation.f90
The code to reduce the cloud cover of ice clouds in the upper troposphere has been modified:

This change does influence the radiation and therefore also the simulation results. Experiments have been conducted at DWD already in late 2011 for COSMO-DE and COSMO-EU. For both applications periods in winter and in early summer have been considered. The verification was neutral.

At least the first modification can be considered to be a bug fix.

Back to Contents


2. Restructuring of metric organization

(by Michael Baldauf)

All routines related to metric calculations have been gathered to the new module grid_metrics_utilities.f90. This module now contains the subroutines:

The module grid_metrics_utilities.f90 also contains some fields necessary for running, which have been defined in data_fields.f90 before.

These changes do not influence the results.

Back to Contents


3. Reorganization of positive definite advection schemes

(by Michael Baldauf, Oliver Fuhrer)

To avoid multiple copies of the same code in the module src_advection_rk.f90, the positive definite advection of the different fields in a certain space direction have been gathered in new subroutines advection_ef_x, advection_ef_y, advection_ef_z. Depending on the chosen advection scheme, these routines are called in a special order.

At the same time, a bug has been fixed by Oliver Fuhrer in the interfaces of the advection operators. Related problems have also been reported from the Lahey Compiler by Astrid Kerkweg:

Certain subroutines have been called by the COSMO-Model using the same argument twice. For example, the advection operators are written in a form

subroutine advx(s,su)
real, intent(in) :: s
real, intent(out) :: su
tmp = f(s)
su = g(tmp)
end subroutine advx

and are then called via

CALL advx( qv(nnew), qv(nnew) )

to avoid an additional copy. According to the Fortran standard this type of argument aliasing is explicitly forbidden (see for example note 12.34 of the Fortran 2008 standard) and may lead to erroneous results. This actually seems to be the case for the NAG and Lahey Fujitsu compiler. This type of calling is used for advection and cloud diagnostics and different approaches for fixing it have been adopted.

For the advection, the memory copy has been made explicit in the advection driver routine (as has already been done for the SL-advection). This also leads to a reduction in code complexity. The advection routines retain only one argument which is declared as INOUT and do the update in-place.

The changes have been tested for the COSMO-7 and COSMO-2 operational setup at MeteoSwiss and have led to bit-identical results. The performance on the Cray XT4 machines does not seem to be influenced significantly by the modifications and is within the uncertainty of the measurement of a single run on a machine being shared with other users.

Tests at DWD for COSMO_EU and COSMO_DE have also shown that the changes do not influence the results.

Back to Contents


4. Introduced new variants of Bott Advection

(by Michael Baldauf)

New variants of the Bott Advection scheme have been implemented as new options for the Namelist parameter y_scalar_advect in /DYNCTL/:

  • BOTT2_STRANG_B, BOTT4_STRANG_B:

    Strang splitting only at the bottom, in the lowest koffset levels of the atmosphere. The more accurate but also more expensive Strang splitting needs only to be applied near the surface. Using the less expensive advection variants in the higher atmosphere will save computational time.

    A new subroutine advection_ef_xyzyx_new has been implemented:

    • levels k=1,...,ke-koffset: usual Bott-Advection (either -x or -y, depending on time step)
    • levels k=ke-koffset+1,...,ke: Bott Advection with Strang splitting (first _x, then _y)
    • levels k=1,...,ke: Bott Advection in _z direction
    • Boundary exchange
    • levels k=1,...,ke-koffset: usual Bott-Advection (either -y or -x, depending on time step)
    • levels k=ke-koffset+1,...,ke: Bott Advection with Strang splitting (first _y, then _x)

    So it is for the upper levels k = 1,...,ke-koffset

    • even time steps: xzy
    • odd time steps: yzx

    And in the lowest levels k = ke-koffset+1, ..., ke Strang Splitting: xyzyx

  • BOTT2_XYZYX, BOTT4_XYZYX:
    Modified sequence of Strang splitting, compared to the ones implemented (ZYXYZ)

Back to Contents


5. Computation of Moisture Divergence and Removal of qvt_diff

(by Oliver Fuhrer)

The diagnosis of dqvdt was intermixed with the computation of vertical diffusion of qv and qc in the subroutine complete_tendencies_qvqcqi_tke (and the subroutine slow_tendencies for the LF-core). This has been separated into two different subroutines (RK) or different code blocks (Leapfrog) in order to make the code more modular and extensible in the future. This required changes to the source files slow_tendencies.f90, src_runge_kutta.f90, and src_slow_tendencies_rk.f90. The changes are of purely technical nature and do not influence the model results.

The modified code has been checked for the MeteoSwiss operational setup (COSMO-2 and COSMO-7) and proven to give bit-reproducible results for the Runge-Kutta applications. It also has been checked for COSMO_EU and COSMO_DE at DWD, where it also gave bit-reproducible results

A remark on the Leapfrog core:
An additional optimization has been made in the LF core (removal of a code sequence "+qvtens-qvtens"). Therefore, rounding errors can lead to differences in the range of the numerical precision. These changes only influence the computation of dqvdt and thus are only visible if the convection scheme is active (COSMO-7) or in the DQVDT diagnostic output. The impact on model performance is negligible and cannot be discerned from the jitter on the machine.

At the same time, the field qvt_diff has been eliminated from the COSMO-Model at all. In qvt_diff, additional diffusive tendencies have been stored, which do not contribute to the simulations, if the three-dimensional turbulence is not switched on.

To unify the treatment of all microphysical species (necessary for the new tracer module), this field has been completely removed from the model.

A warning is issued that explicit diffusion tendencies are not accounted for in dqvdt.

Back to Contents


6. Compute physical tendencies in organize_physics.f90:

(by Oliver Fuhrer)

The computation of the total physical tendencies has been moved out of the dynamical cores and to the subroutine organize_physics into the 'compute' section. This avoids duplicated code and simplifies the program structure.

For the Runge-Kutta core these changes are neutral and do give bit-identical results.

For the Leapfrog core, there are rounding differences, because here the order is changed, in which the physical tendencies are added.

  • Before: tendencies = tendencies + (advective tendencies) + (physical tendencies)
  • Now: tendencies = tendencies + (phyiscal tendencies) + (advective tendencies)

Back to Contents


7. Removal of Dead Code

(by Ulrich Schättler, Michael Baldauf)

The following options and related source code have been removed:

  • irunge_kutta == 0:
    Module (src_2timelevel.f90 and everything related has been eliminated.
  • lprogprec, ltrans_prec:
    Now the only option is prognostic precipitation.
    The transport of qr, qs can be switched off again, once the new tracer module is implemented.
    Also: In the Digital Filter Initialization, the advection of qr,qs,qg (which up to now could be switched off with lprogprec=.FALSE.) can be switched off again in the future with the new tracer module.
  • itype_conv == 1:
    Module src_conv_kainfri.f90 and everything related has been eliminated.
  • fast_waves_rk.f90
    Removed unnecessary (internal) options and dead code in that subroutine.

Back to Contents


8. Other Technical Modifications

  • Modifications to long meteograph output:
    (in organize_diagnosis.f90, src_gridpoints.f90)

    Additional variables have been added in the long meteograph output: SWDIR_S, SWDIFD_S, SWDIFU_S, SNOW_MELT

    This changes the format of the M_*-files; everybody working with these files has to adapt the according post-processing programs

    In addition, a format for printing the time step has been changed from I5 to I10, to avoid stars in the output in case of climate runs.

    For long and for short grid point output, the corresponding grid point variables are allocated only for one step. Only in case of "lgpspec" output, the variables are allocated with #(grid point output steps) as a dimension. In this way, some memory is saved.

  • Modifications of the utility modules:
    The utility modules have been unified again with the latest INT2LM version. In addition, there have been some amendments.
    • environment.f90:
      Editorial changes; adaptations were necessary in INT2LM
    • io_utilities.f90: Unification with INT2LM
      • usage of grib_api; new SR read_grib_api
      • new (generic) SR check_input_grid, replacing check_[lm,ec,um]_grid
      • changes to check_gme_grid because of grib_api usage
      • modified interface to read_restart (has to be adapted in COSMO-Model calls)
      The module src_input.f90 has been adapted to the modified interfaces of the subroutines check_input_grid and read_netcdf.
    • utilities.f90:
      • inserted english comments and print-outs in SR tautsp, tautsp2D
      • added several PARAMETER attributes in routines (uv2uvrot, etc.)
      • The interface for the routine diff_minutes (which replaces the DWDLIB routine DIFMIN) has been extended with an argument icalendar, to specify the calendar in use. The COSMO-Model variable itype_calendar has to be passed, which specifies:

        • 0: gregorian calendar (default)
        • 1: every year has 360 days
        • 2: every year has 365 days
        In this way we can also avoid the different routines difmin_360, difmin_365, etc.

        Some additional notes:

        • All interfaces in the COSMO-Model and the INT2LM have been adapted.
        • All routines DIFMINxxx have been replaced by diff_minutes.
        • Because diff_minutes is also used in the module io_utilities, there now is a dependency to utilities.f90
    • parallel_utilities.f90:
      The interface for the routine distribute_fields has been extended with an argument to specify the PE that sends the message (was PE 0 before). This more flexible routine is needed in the spectral nudging now.
      All calls to distribute_fields have been adapted.
  • Deletion of obsolete Fortran features:
    There are still obsolete Fortran features used in the COSMO-Model. Some of them have been eliminated.
    • Definition of Character variables with *x has been replaced with (LEN=x) in: data_1d_global.f90, src_sfcana.f90, src_soil_multlay.f90
    • Computed GOTO has still been used in: semi_implicit.f90
    • Some WRITE formats have been adapted in src_artifdata.f90
  • Selective smoothing of output fields:
    Up to now, the following means were available to smooth special fields:
    • l_p_filter= .TRUE.: smooth all fields that are written on p-levels
    • l_z_filter= .TRUE.: smooth all fields that are written on z-levels; also smooth PMSL, PMSL_ANAI
    • l_fi_ps_smooth = .TRUE.: special smoothing of PMSL and FI in mountaineous terrain

    First modification:
    The switch l_fi_ps_smooth has been renamed to l_fi_pmsl_smooth, because not ps but pmsl is smoothed in that case.

    The actions done are now:

    • Two new switches have been introduced in Namelist group /GRIBOUT/, to independently smooth FI and PMSL:
      • l_pmsl_filter: if .TRUE., PMSL is smoothed, independently from the setting of l_z_filter
        Default: .TRUE.
      • l_fi_filter: if .TRUE., FI is smoothed, independently from the setting of l_[p,z]_filter
        Default: .FALSE.
    • The actions of l_z_filter / l_p_filter are the same as before

  • Update of SST over sea during a NWP forecast:
    A new Namelist switch lbdsst has been introduced in group /IOCTL/, to update the Sea Surface Temperature over sea during a NWP simulation. (Default is .FALSE.).

    NOTE:
    In climate runs, if lbdclim=.TRUE., SST is updated anyhow with boundaries, but in usual weather forecasts, it is kept constant during the model run. With lbdsst=.TRUE., boundary values are taken to update SST over sea only.

  • Additional ASCII Output for COSMO Testsuite:
    To compare COSMO-Model output from different test runs, additional output is written to a file YUPRTEST. This output has been implemented within organize_diagnosis.f90. Some new routines have been implemented in src_meanvalues to do this output.

    New Namelist switch in /DIACTL/ to activate the testsuite: ltestsuite (Default: .FALSE.)

    When to do output: at the moment this is hard coded for steps 0,1,2,3 and then every 10th step. For the Leapfrog core, the last time step is not written any more, because at the time of output it has not been Asselin-filtered and will therefore not be reproducible as compared to a longer run.

    New routine in src_meanvalues: mean_testsuite
    This new routine calls another routine print_testsuite, which gets a COSMO-field (2D or 3D) as argument. The routine print_testsuite has a generic implementation, taking care of fields with different dimensions. The output is written to an ASCII file YUPRTEST.

Back to Contents


9. CLM extensions for next unified release

9.1. Spectral Nudging

  • New Namelist parameter nincsn introduced in /DYNCTL/, to define a time increment for calling spectral nudging. Default is nincsn = 1.
  • src_spectral_nudging.f90:
    • Only allow 4D prognostic variables.
    • Several changes for better parallelization
      A new subroutine distribute_fields2 has been proposed, where a special PE can be specified as sender. The old subroutine distribute_field could only use PE=0 as sender. Instead we extended the interface of distribute_field with a new argument for the sender and adapted all CALLs to distribute_field.

Back to Contents

9.2. Introduction of prescribed surface albedo

Prescribed surface albedo values, based on MODIS, are read from the initial file. They have to be provided by INT2LM. New fields have been introduced for that purpose. Different methods have been implemented by the CLM Community and by DWD. They method can be chosen by the new Namelist switch itype_albedo in the group /PHYCTL/:

  1. (default) soil albedo is a function of soiltype (old treatment)
  2. soil albedo is prescribed by external fields for saturated and for dry soil
  3. background diffuse solar albedo is prescribed by external fields
  4. vegetation albedo is modified by forest fraction

There are three new fields with the following GRIB1 numbers:

  • alb_dry: albedo of dry soil iee = 127, itabtyp=202
  • alb_sat: albedo of saturated soil iee = 128, itabtyp=202
  • alb_dif: diffuse solar albedo iee = 129, itabtyp=202

For itpye_albedo=2, ALB_DRY and ALB_SAT are defined as mandatory fields for input. For itype_albedo=3, ALB_DIF is mandatory. These fields are also written to restart files.

In src_radiation.f90, new code has been added to deal with the new methods to determine the soil albedo from the dry and saturated values and relative saturation of the top soil layer or from the diffuse solar albedo.

More detailed description of albedo processing:

  • itype_albedo = 2 (by Daniel Luethi, ETH Zürich)

    The CommunityLandModel provides a file with global soil color data on a regular latitude/longitude grid with a resolution of 0.5 deg. The soil color is then converted in albedo values by 4 lookup tables for two spectral bands (visible and near infrared) and for dry and saturated soils. Since the radiation scheme in CLM doesn't distinguish between different spectral bands for the albedo a weighted mean of the albedo values for the two bands is calculated with a weighting factor of 0.53 for the near infrared band (according to the relative contribution of solar energy from this band). This leaves us with an albedo value for both dry and saturated soil at each land grid point of the original dataset.

    An offline program is used to do all these calculations and to interpolate the data to a given CLM grid taking the land-sea-masks of the new grid and the original grid into account.

    The treatment of wet soils is also changed with respect to the original scheme that uses a coefficient which depends only on the soil type and which is multiplied with the soil water content in the top soil layer. The product is then added to the albedo value for the dry soil. With the prescribed albedo fields a linear interpolation between dry and saturated values based on the relative saturation is applied, where the pore volume and air dryness point are used to determine the relative saturation.

  • itype_albedo = 3 (by Frank Brenner, Jürgen Helmert, DWD)

    In cooperation with the ECMWF a monthly mean albedo has been taken out of a 5-year climatology made by compositing, and gap-filling the MODIS BRDF data. Background albedo values are calculated at local solar noon, but can be determined at any desired solar zenith angle. Currently one data set of diffuse albedo is implemented in COSMO external parameters. This can be extended, since MODIS provides direct and diffuse albedo in dependency on different wavelengths.

  • itype_albedo = 4 (by Jürgen Helmert, DWD)

    According to the results of Moody et al. (2008) using five years (2000-04) of spatially complete snow-free land surface albedo data, a dependency of the vegetation albedo on the forest fraction was implemented. Currently the fraction of deciduous and evergreen forest is considered and serves as a proxy of remote sensing derived background albedo data.

Back to Contents

9.3. Introduction of new GHG concentration scenarios

  • RCP2.5=RCP3PD, RCP4.5, RCP6 and RCP8.5
    (by Hans-Juergen Panitz (KIT), Klaus Keuler (BTU), Matthias Buechner (PIK))

    The basis for the new RCPs is the agglomerative radiative forcing (RF) (W/m**2) due to all greenhouse gases (GHG) as they are available from the RCP Web-page: http://www.pik-potsdam.de/~mmalte/rcps/

    The RF has been converted to an equivalent CO2 concentration (ppm) using the formula

    RF = 5.35*ln(C/278)

    with

    • C = CO2 equivalent concentration (ppm)
    • 278 = pre-industrial CO2 concentration (ppm)
    • RF = radiative forcing (W/m**2)

    This has been done for all four RCPs: RCP2.6, RCP4.5, RCP6, and RCP8.5
    Applying fourth order polynome fits (5. order for RCP2.6) for the years 1950 until 2150 the concentrations have been adapted to CCLM.

    To take into account the new RCPs the value range of Namelist parameter ico2_rad (group /PHYCTL/) has been extended from 7 to 10:

    • ico2_rad = 7: scenario RCP2.6 is chosen
    • ico2_rad = 8: scenario RCP4.5 is chosen
    • ico2_rad = 9: scenario RCP6 is chosen
    • ico2_rad =10: scenario RCP8.5 is chosen

  • Limiter for GHG forcing

    Because the fitted functions of the new RCPs tend to elope prior and beyond certain years when going outside of the period they were fitted to, they need to be restricted to their original fitting interval. This was not implemented for the SRES scenarios either. Now there is a lower boundary of year 1950, where, when simulate in earlier periods, the forcing is fixed to 1950 values. The upper boundary depends on whether you choose a SRES or a RCP scenario. The upper boundary for SRES is 2100 (as commented in the source code) and 2150 for RCPs. ico2_rad=0 (constant) will not be affected by this change. A message to stdout will be written, when the limiter is active.

  • CO2 stabilisation

    This feature is to perform simulations with stabilized GHG forcings, e.g from 2100 on. Two new parameters were added in name list group /PHYCTL/:

    • lco2_stab: if .TRUE., activates the feature of GHG stabilization; the default value is .FALSE.
    • iy_co2_stab: INTEGER variable defining the year when GHG stabilization begins; default value: 2001 It is without effect, if the feature is disabled.

Back to Contents

9.4. Implementation of time dependent aerosol optical depths

(by Daniel Luethi)

In case of itype_aerosol=2, new boundary fields have been introduced for:

  • aer_du_bd: dust aerosols
  • aer_su_bd: sulfate aerosols
  • aer_ss_bd: sea salt aerosols
  • aer_bc_bd: black carbon aerosols
  • aer_or_bd: organic matter aerosols
to update these fields during climate simulations.

Back to Contents

9.5. Support for climatological year with 365 days

(by Burkhardt Rockel)

The usage of a 365 days calendar is defined by setting the Namelist parameter itype_calendar = 2.

NOTE:
The new routines difmin_365, datjul_365, etc. that have been proposed by the CLM community for the treatment of this new calendar, have not been taken.

Instead we did the following:
The routines difmin and datjul from the external GRIB (or MISC) library have been replaced a new COSMO routine "diff_minutes" (located in utilities.f90) This routine has been extended with the argument itype_calendar, and the different calendars are now treated within this routine. No other routines are necessary now.

Back to Contents

9.6. New diagnostic variables

Introduction of a new diagnostic variable for maximum wind speed in 10m height
  • Variable name: vabsmx_10m
  • Output variable name: VABSMX_10M
  • GRIB number defined by DWD: iee = 216, itabtyp = 201

Be aware that VABSMX_10M is really the maximum wind speed in 10 m height and not the maximum gust, which is denoted as VMAX_10M!!

Diagnostic Snow melt for output purposes only added. (Originally done by Uwe Boehm.)
The output variable is called as SNOW_MELT. It is accumulated over the storage interval. snow_melt includes contributions of melting of snow penetrating the soil (up to field capacity), and/or contributing to surface run-off. Therefore it appears already in the water balance equation in both terms.

Back to Contents

9.7. Changes for Restart and NetCDF I/O

Several adaptions have been done:

  • new flag 'i' to distinguish between ocean and inland water (lakes) quantities (for netCDF output only)
  • all SSO related variables got the flag 'l'
  • several corrections for netCDF definitions
  • write global attributes in netCDF only if they are defined
  • new default for ncglob_realization_d=-999 (means "not set")
  • Additional SSO related fields necessary for correct restart: include ut_sso, vt_sso, tt_sso, ustr_sso, vstr_sso, vdis_sso into src_setup_vartab.f90

    NOTE: official GRIB Numbers have been given by DWD (see below) The names UT_SSO, VT_SSO, TT_SSO have been changed to DU_SSO, DV_SSO, DT_SSO to be consistent with other DWD applications and with the similar quantities from convection DU_CONV, etc.

  • LHFL_S and SHFL_S added to list of restart parameters in any case. This is especially necessary to run the IFS convection scheme correctly in case of restart.
  • src_input.f90: In case of restart: change input directory of restart file from ydirini to ydir_restart
  • io_utilities.f90: Overcome restrictions for large netCDF files (> 2Gb). This is compatible with netCDF versions 3.6 and higher
    Another proposal: use IOR(nf90_clobber, nf90_64bit_offset)

Back to Contents

9.8. Variables for multi-layer snow model

  • A new I/O variable RHO_SNOW_M (rho_snow_mult) has been added Changes to allow this and also the other multi-layer snow variables in NetCDF and Restart files.
  • correction in subroutine fill_realarray for level determination of multi-layer snow model (most probably this is also wrong in fill_gribarray, so it has been modified there also).
  • src_soil_multilay.f90: correction for multi layer snow model in case of restart.
  • data_io.f90: idims_id_out for ke_snow added.
    For the snow density rho_snow_mult of the multi layer snow model a GRIB number of 184 is assumed. This should be changed to an official number.

NOTE:
The GRIB coding of ALL multi-layer snow variables is not yet standard, because a non-official level type has been chosen. For the moment we left everything as it is, but there is a good chance that this has to be changed in the near future.

Back to Contents

9.9. Miscellaneous

  • src_output.f90: Delete the #ifdef GRIBDWD and corresponding #endif in Subroutine makegds. This subroutine has to be performed also in case of restarts!
  • utilities.f90: translation of error messages into English in tautsp and tautsp2d
  • src_flake.f90:
    • restrict writing information to debug output
    • set t_snow_mult = t_snow only for grid points with depth_lk > 0.0, otherwise program may crash later on in organize_dynamics.
  • src_output.f90:
    • Correction of calculating rlon and rlat for netCDF output related to definition of subregions (Namelist parameter ydomain = 's').
    • only for climate mode:
      reset all necessary precipitation "components" like RAIN_GSP etc. to zero in case that only TOT_PREC is an output variable Without this change TOT_PREC would continuously increase.
  • src_input.f90:
    for 'binary' input allow T_SO(ksoil=0) to be read instead of T_S.
  • src_setup_vartab.f90:
    Add unit W m-2 to SOD_T and ASOD_T Change of flag for FR_LAKE; has to be empty ' ' instead of 'l'.

Back to Contents


10. Minor technical modifications

  • organize_data.f90: Settings of yvarini / yvarbd
    In Version 4.12, these variables have been eliminated as Namelist variables. But we still left the structure that default-variables have to be set and after reading all Namelist input, the variables have been modified according to the Namelist settings. Now these variables are set only after all Namelist Input is done (in the action "start" of organize_data).
  • time_utilities.f90:
    The subroutine collect_timings has been modified to save memory. In long climate runs, when using many processors, it could happen that the available memory is too small to allocate the local structure in which the times from all processors are gathered.

    To avoid that, now every processors computes the necessary sums over all times. If an hourly output is chosen (itype_timing=1/3), then a loop over all hours is done, and the values are only gathered per hour. This results in a much smaller memory footprint, but perhaps a larger compute time, and should not be chosen for production runs. The options itype_timing=2/4 are not affected by that.

  • mpe_io.f90:
    Cray computers have trouble with the communication in subroutine mpe_db_init, where a processor sends data to itself. This is avoided now. For the sending in this subroutine, a buffered send (MPI_BSEND) has been implemented optionally, if the module is compiled with -D__MPICH2.

Back to Contents


11. Bug Fixes

  • src_advection_rk.f90:
    Bug fix for call to subroutine global_values in subroutine limit_contravar_vert_veloc (line 1454): needs imp_integers not imp_reals.
  • src_allocation.f90: Allocation of special fields:
    Some fields are allocated only in special cases, but are listed in subroutine interfaces. This can lead to compiler errors, so allocate these fields anyhow: depth_lk, rcld, edr, ut_sso, vt_sso.
  • src_artifdata.f90: Corrected some print outs
  • src_leapfrog.f90:
    Bug Fix for computing MAX(w): this should only be done in the interior of the domain to give reproducible results.
    This will change results of Leapfrog applications.
  • src_output.f90:
    • The subroutine makegds is used by restarts and must not be embraced by #ifdef GRIBDWD (by H.-J. Panitz).
    • The total precipitation rate TOT_PR is defined in setup_vartab, but is not computed. This has been added. (by Oli Fuhrer).
  • src_runge_kutta.f90:
    Additional boundary updates are needed for the option y_vert_adv_dyn == "impl3" since the computation of the courant number for vertical u,v-advection requires wcon at neighboring grid points.
  • src_slow_tendencies_rk.f90:
    Turbulent diffusion of cloud ice qi was done, even if ltur=.FALSE.; The IF-statement in line 1585 has been corrected.
  • turbulence_tran.f90:
    Subroutine cloud_diag has been called with the same field in different arguments. For the INTENT(IN)-argument, a local copy has been done now.
  • turbulence_diff.f90:
    Within ifdef __COSMO__ a boundary exchange is called, but the necessary variables and the subroutine exchg_boundaries are not used. These are now USEed, also within #ifdef __COSMO__.
    This boundary exchange is only necessary, if imode_turb == 3 is chosen, what is not done in usual recommended settings.

Back to Contents


12. Changes to the Namelists

There were the following changes for the Namelist variables:

Group Name Meaning Default
/RUNCTL/ itype_calendar a new option has been added

= 2: support for a climatological year with 365 days.

0
/DYNCTL/ y_scalar_advect new options have been added:
  • BOTT2_STRANG_B, BOTT4_STRANG_B
    the same as the already existing BOTT2_STRANG, BOTT4_STRANG, but only in the lowest k_offset levels of the atmosphere.
    k_offset is hardcoded with 5.
  • BOTT2_XYZYX, BOTT4_XYZYX
    Advection with modified sequence of Strang splitting compared to the ones already implemented (ZYXYZ).
.FALSE.
nincsn New switch Nudging to define a time increment for calling the Spectral Nudging. 1
irunge_kutta The option irunge_kutta = 0 has been eliminated!
Associated with this option was the src_2timelevel dynamical core, which has been removed from the code.
1
/PHYCTL/ itype_albedo Type of surface albedo treatment. Options are:
  1. (default) surface albedo is a function of soiltype
  2. surface albedo is prescribed by external fields
  3. background albedo is prescribed by external fields
  4. vegetation albedo is modified by forest fraction
1
ico2_rad New options have been added for new CO2 scenarios:
  1. Scenario RCP2.6
  2. Scenario RCP4.5
  3. Scenario RCP6
  4. Scenario RCP8.5
0
lco2_stab New Namelist switch to perform simulations with stabilized GHG forcings .FALSE.
iy_co2_stab to define the year when GHG stabilization begins (is only in effect, if lco2_stab = .TRUE.) 2001
lprogprec This switch has been eliminated. All simulations are now done with prognostic precipitation. -
ltrans_prec This switch has been eliminated. All simulations are now done with transport of prognostic precipitation. -
itype_conv The options itype_conv = 1 / 2 have been eliminated!
Associated with these options were the Kain-Fritsch convection (src_conv_kainfri.f90) and the Bechtold convection (which was never implemented. The only choosable options now are = 0 (Tiedtke convection) and = 3 (shallow convection).
0
/IOCTL/ lbdsst new switch to provide boundary values for the Sea Surface Temperature during a weather (not climate) forecast. .FALSE.
/GRIBOUT/ l_fi_ps_smooth This switch has been renamed! See below -
l_fi_pmsl_smooth This is the new name of the switch l_fi_ps_smooth; because what really is smoothed here is the mean sea-level pressure! .FALSE.
l_fi_filter new switch to filter the geopotential FI indenpendent of l_p_filter settings. .FALSE.
l_pmsl_filter new switch to filter the mean sea-level pressure PMSL indenpendent of l_p_filter / l_z_filter settings. .TRUE.
/DIACTL/ ltestsuite new switch to activate additional ASCII output, which is used for the technical test suite. .FALSE.

Back to Contents


13. Changes of Results

The following changes influence the results:

  • Parameterization of the cloud cover for ice clouds in src_radiation.f90: All applications are influenced by this modifications.
  • Leapfrog: The applications which use the Leapfrog dynamical core are influenced by the following modifications:
    • Optimization in src_leapfrog.f90 (removed a construct "+ field - field") does numerically change the results.
    • Moving the computation of the total physical tendencies to organize_physics does numerically change the results because of the different summation order.
    • The bug fix for computing MAX(w) changes the results.

Back to Contents


14. Other technical impacts

The following has to be considered when running the model and / or post-processing the model output:

  • New GRIB 1 Numbers:
    Name Description Element Table
    VABSMX_10M 216 201
    ALB_DRY surface albedo field for dry soil 127 202
    ALB_SAT surface albedo field for saturated soil 128 202
    ALB_SAT diffuse albedo field 129 202
    DU_SSO tendency of u due to SSO 43 202
    DV_SSO tendency of v due to SSO 44 202
    DT_SSO tendency of t due to SSO 45 202
    USTR_SSO u-stress due to SSO 231 202
    VSTR_SSO v-stress due to SSO 232 202
    VDIS_SSO vertical integrated dissipation of kinetic energy due to SSO 233 202

    NOTE:
    The variables of the multi-layer snow model still have un-official Grib numbers, because the Grib treatment of such variables is not yet standardized!

  • Long Meteograph output:
    New fields have been added to the long meteograph output. Therefore the format of the files M_* has been changed.
  • Selective smoothing of output fields:
    Up to now we only had the possibility to filter all variables listed in p- or z-level output or none fo them (with the variables l_p_filter, l_z_filter). Now some special fields can be filtered independent from the setting of l_p_filter or l_z_filter.

    The following settings are now recommended:

    • l_p_filter = .FALSE.: Default
    • l_z_filter = .FALSE.: Default
    • l_fi_filter = .TRUE.: filter the geopotential on p-levels
    • l_pmsl_filter = .TRUE.: (Default) filter the mean sea level pressure

  • Performing Restarts:
    The input directory for restart files has been changed from ydirini to ydir_restart

Back to Contents