20.11.2014
After releasing Version 5.0 of the COSMO-Model in autumn 2013, the development is going on
and many contributions could be gathered for Version 5.1.
- Work on Dynamics
- Advection and Horizontal Diffusion of TKE
- COSMO-ICON microphysics
- Stochastic Perturbation of Physics Tendencies (SPPT)
- Changes in the Assimilation
- Changes in the I/O
- Interface to the Radar Forward Operator EMRADSCOPE
- Removal of Inconsistencies for the Tracers
- Single Precision Version
- Online Trajectory Module
- Technical Adaptations
- Technical Changes and Bug Fixes
- Changes to the Namelists
- Changes of Results
(by M. Baldauf)
Targeted diffusion to avoid cold pools:
A new subroutine targeted_diffusion_cold_pools was included in the module
hori_diffusion.f90, which performs a second order diffusion on the
temperature only for those gridpoints, where the temperature deviation from the
reference state T' is more than 10K smaller than the T'-average
of the surrounding 4 gridpoints.
Experience shows that this criterion is fulfilled rather seldom.
Nevertheless, this method prevents unrealistic cold temperatures in narrow valleys.
The computational costs of this subroutine are very low.
This can change the results slightly, but only, if such cold pools are developing.
Reformulation of divergence damping coefficients in the new fast-waves solver:
Modifications in the subroutine init_div_damping_coeff to improve the
determination of the divergence damping coefficient alpha_div over steep slopes.
This measure should increase the numerical stability in very complex/irregular
terrain.
This changes the results slightly!
Adaptation of Runge-Kutta dynamical core to SPPT:
The call to subroutine coriolis has been shifted after the vertical diffusion to
facilitate the calculation of stochastic physics tendencies
(i.e. a clearer distinction between physics and dynamics tendencies)
This changes the results slightly!
Lateral Davies-Relaxation:
(by W. Schneider, A. Arteaga, O. Fuhrer, M. Baldauf)
- The namelist parameter lexpl_bc is removed.
This means that from now on only the explicit formulation of the lateral
Davies-relaxation is used.
- The namelist-parameter crltau is replaced by crltau_inv, with the meaning
crltau_inv = 1/crltau.
The advantage of this replacement lies in the fact, that crltau_inv=0 completely
switches off the relaxation (this was not possible before).
- Additionally, the relaxation coefficient at the boundary is always set to 1
(independently of the value of crltau_inv!).
This means that the Davies-relaxation sets (again) the boundary values from an
external driving model at time level nnew
This shouldn't be necessary in general (these values have been already set in
initialize_loop), but removes a false setting of boundary values e.g. in the
Bott-advection scheme (a problem which is a bit more difficult to solve otherwise).
Due to further code simplifications in src_setup.f90 (mainly interchange of
multiplications and divisions) the results are mathematically equivalent but not
bit-identical. Apart from this, no principal changes of results happen if
crltau=1 (=default) is used.
Cache Optimizations for fast_waves_sc.f90:
Analogous to the Cray optimizations done for fast_waves_rk in the Benchmark version.
Some more technical adaptations:
- The switches lhor_pgrad_Mahrer and l_3D_div_damping now
are namelist parameters (they have been internal switches before).
- Introduced two global variables p0ref, p0ref_recip
Back to Contents
(by U. Blahak)
Advection of TKE has been added for the prognostic TKE scheme also for the option
itype_turb=3 and for all advection variants of the Runge-Kutta core.
It is switched on by the already present namelist switch lprog_tke from
/PHYCTL/, which is now also applicable in case of itype_turb=3.
In this case, the advected quantity is SQRT(2*TKE), otherwise (alternative
prognostic turbulence schemes 5-8) it is the TKE itself.
A new field tket_adv has been introduced for the advective tendency.
It has been added to the restart variables and to the variable table
(in setup_vartab: TKET_ADV).
Also, the horizontal diffusion of TKE has been activated for the prognostic
TKE schemes in case of 3D-turbulence (l3dturb=.TRUE.) and additional
horizontal shear mode (itype_sher = 3).
Modified files:
- turbulence_diff.f90:
Introduction of horizontal diffusion coefficients:
Values | for itype_sher |
0 | < 2 |
isotropic | = 2 |
have an additional horizontal mode | = 3 |
- turbulence_interface.f90:
Avoiding the CALL of horizontal_diffcoeffs in case of itype_turb=3.
These are calculated now in subroutine turbdiff() (see above)
depending on itype_sher.
- Minor bugfixes for l3dturb=.TRUE. in explicit_horizontal_diffusion(),
src_slow_tendencies.f90:
Typical Cut-and-paste errors:
- in the advection parts for TKE (wrong indices, wrong grid factors)
- in the 2.nd flux components (wrong indices for dzeta_dphi)
- eliminated doubled tracer-loop in the uppermost level (k=1) in the
calculation of ztrcr_tens
These modifications slightly change the results for l3dturb=.TRUE.
Back to Contents
(by X. Lapillonne, U. Schättler)
DWD has the plans to unify the physical parameterizations used in the COSMO-Model
and the new global model ICON, so that they can be used by both models. The idea
behind the unification is, that all parameterizations used up to now are only working
in a vertical column. For the unification, several issues have to be addressed:
- memory layout / data structures:
The unified parameterizations are working on a 2D data structure:
(number of grid points (or columns), vertical dimension) = (nvec,ke)
The COSMO-Model uses a 3D data structure, therefore the input data has to be
copied to this new structure (called a blocked structure) and the results have
to be copied back to the 3D structure again.
- interfaces:
Both model have to write special interface routines, to call the parameterizations.
It is the task of these interface routines to provide all necessary data in
the correct form. All fields will be passed by argument lists.
- naming conventions:
If the same routines are to be used by both models, we have to unify the names
of the modules and routines. Also the names of the KIND parameters shall be unified
(work started for COSMO: see also "Single Precision Version").
The first unified package is now introduced in the COSMO-Model, which is the microphysics.
There are several new modules:
- gscp_data.f90:
Contains data used in the microphysics and a routine gscp_set_coefficients
(in earlier versions called: hydci_pp_init) to initialize them
- gscp_interface.f90:
Is the COSMO interface module to call the different microphysics schemes.
It copies the input data to the blocked structure, calls the schemes and
copies the results back to the 3D data structure.
- gscp_graupel.f90:
Module which contains the graupel scheme in subroutine graupel
(formerly called hydci_pp_gr)
- gscp_cloudice.f90:
Module which contains the cloud ice scheme in subroutine cloudice
(formerly called hydci_pp)
- gscp_hydor.f90:
Module which contains the hydor (warm rain and snow) scheme in subroutine hydor
(formerly called hydor_pp)
- gscp_kessler.f90:
Module which contains the kessler (warm rain) scheme in subroutine kessler
The new microphysics is now called (hard coded) in organize_physics (action='finish_compute').
The old microphysics in src_gscp.f90 can still be activated by commenting out the new scheme
(for backward compatibility).
Together with the new COSMO-ICON microphysics, also some changes to the contents of
cloudice and graupel have been introduced:
- Cloud Ice Sedimentation:
This plays an important role in restructuring the high clouds and counteracting
overprediction or too long lifecycles of cirrus. Cloud ice sedimentation was
implemented and tuned in ICON for the cloud ice scheme cloudice
(formerly hydci_pp).
It is now also implemented in the graupel scheme graupel
(formerly hydci_pp_gr).
- Sticking Efficiency:
This influences the aggregation and ice autoconversion and was changed accordingly
to the cloud ice sedimentation
- Evaporation:
In ICON, also a limitation for maximum evaporation was implemented. This is needed
to provide numerical stability for large horizontal resolutions.
- Supercooled liquid water and reduced freezing rate:
The supercooled liquid water approach reduces the depositional growth for
temperatures below 250K, which is assumed to be the threshhold for mixed-phase
clouds. The reduction in freezing rate of in-cloud and below-cloud rainwater
takes effect for the temperatures below the threshhold for heterogeneous freezing
of raindrops (= 271.15K). These changes were already tested for COSMO-EU in 2013.
They proved to improve the forecasts for aircraft icing (ADWICE).
Because the effect of supercooled liquid water has not been proven to be positive,
a namelist switch lsuper_coolw has been introduced, to switch on/off the
supercooled liquid water. Default is .FALSE.
Back to Contents
(by L. Torrisi, C. Schraff)
The stochastic perturbation of physics tendencies (SPPT) scheme introduced is
mainly based on Buizza et al. (1999) and Palmer et al. (2009).
3-D fields of random numbers are produced on a coarse grid and at certain
random number time steps. In the vertical, these fields of random numbers
are constant, except if vertical tapering is applied. In the horizontal and in
time, the same random number is used for all model grid points within a coarse
grid box and (random number) time step. Options are available for bi-linear
interpolation from the coarse grid to the COSMO grid and for linear temporal
interpolation between random number time steps.
In any case, the mesh width of the coarse grid and the random number timestep
increment determine approximately the spatio-temporal correlation scales of the
random number field. In order to combine both large and small scales, it is
possible to superpose up to npatmax = 5 of these random field patterns.
The random numbers are drawn either from a uniform distribution or from a
Gaussian distribution (with an upper limit for absolute values). The random
number stream(s) is/are initialised by a seed and thus defined by a date/time,
the ensemble member number, and an external seed number. Optionally, the
stream is re-initialised at each random number time step in such a way, that
temporal correlations of the random fields can be maintained across analysis
steps e.g. in a data assimilation cycle.
Given a certain random number at a model grid point and model timestep, this
(same) value is applied to perturb the physical tendencies of both t, u, v
and qv, and optionally also of qc, qi, or additionally of qr, qs, qg.
A new module has been introduced to produce randam fields for SPPT:
src_stoch_physics.f90
The module mo_random.f90 (a random number generator) has been moved from
the nudging part to the regular part of the COSMO-Model.
There are quite some new Namelist variables. Take a look in
Changes to the Namelists.
Back to Contents
New option to assimilate Mode-S aircraft observations
(by Christoph Schraff)
Mode-S aircraft observations, quality controlled and thinned by KNMI, can be
read from the NetCDF files:
- cdfin_modes: obtained by direct conversion of the BUFR file as obtained from
KNMI
- cdfin_modes_acr: here, the KNMI-BUFR file is first transformed into a BUFR
file using a template for the ACARS reports and then
converted into NetCDF (DWD solution)
Group |
Name |
Meaning |
Default |
/NUDGING/ |
lcd146 |
NEW |
switch for using Mode-S data actively or only passively
| .TRUE. |
gnudgms |
NEW |
nudging coefficients as gnudgar, but for Mode-S data
| (0.0006, 0.0000, 0.0006, 0.0000) |
Porting to the Cray XC30 system
(by Christoph Schraff)
Some Fixes were necessary to run the assimilation mode on the Cray XC30 system:
- src_mult_local.f90:
Bug fix to avoid array bound violation by nivtot = 0 as array index.
- src_obs_cdfout_feedobs.f90:
Bug fix for iveri_run_type; set lrefend only if mruntyp == 2.
- src_obs_operator_conv.f90:
Bug fix, to make if conditions containing epsy more consistent.
- src_obs_print_vof.f90:
lrefend only if mruntyp == 2; run type forecast added.
- src_obs_qc_conv.f90:
Bug fix (array bound): if thickness is checked but not rejected then compute
zdzobs only if (ilevb ≤ nlev).
- src_obs_use_org.f90:
mruntyp == 2 added as condition for lrefend.
Latent Heat Nudging
(by Klaus Stephan)
- Further modifications to read input data also in GRIB2, i.e. introduce correct short-names.
- Make grib file reading more consistent with other parts of COSMO code and
fixing some bug fixes for correct reading of grib bitmap section.
- Improvement of data file handling of blacklist and height file.
- Set bright band detection to .FALSE. in case of wrong height infomation
stored in the height file (ltlhnbright).
- Bug fixes in determining observation times in case of dt > 60s.
- Bug fix in determining correct day of observation in case of Februar.
- replaced calls to subroutine close_file.
Back to Contents
(by U. Schättler)
Modifications to read HHL and P from the initial file in GRIB2:
The first implementation of using GRIB2 in INT2LM and the COSMO-Model was in
a way that a special file containing the HHL-fields (height of half levels) has been processed at the
beginning of the program start. For practical reasons this is not very
comfortable, so it was agreed that the hhl-fields are passed within the
initial file.
And because the reference atmosphere parameters are not available any more in
the GRIB2 meta data, it was also agreed, that the full pressure P is passed
within the initial file, and not the pressure deviation.
In order not to loose to much precision because of the grib packing, these fields
are now packed with 3 bytes (24 bits).
The I/O routines have been adapted accordingly
(data_io.f90, organize_data.f90, src_input.f90, src_output.f90, src_setup_varta.f90)
Note, that P and HHL are only passed within the initial file, if GRIB2 is used.
For all other data formats nothing has changed.
Modifications because of missing vertical coordinate parameters in GRIB2:
In GRIB2 we are now using the new level type generalVertical. There are no meta
data any more in GRIB2, to store the vertical coordinate parameters, although they
are (still) used by some routines of the COSMO-Model. Still, the vcoords themselves
(height of the model levels above sea level) can be stored in the
scaledValueOfSecondFixedSurface and scaleFactorOfSecondFixedSurface part of the
HHL-fields (every level k stores the corresponding vcoord(k) value). But the
value for vcflat (where levels become flat again) cannot be stored any more.
To have some reference profile for hhl available, a new 1D variable has been
introduced (hhl_prof), which stores such a profile. The profile is determined by
looking for the lowest grid point above sea level. If a sea grid point is
available, this profile just contains the height of the levels above sea level
(thus the vcoord values). If only land points are in the computational domain, this
profile of course is different from the vcoords.
Several subroutines have been modified to work with the reference profile hhl_prof
now, instead of the values of vcoord:
- src_relaxation.f90, SR init_relaxation:
In init_relaxation, the layer thickness was determined up to now by using the
difference of the levels above sea. Now the values of the reference profile
are used, which can lead to different results, if only land points are available
in a computational domain.
- pp_utilities.f90: SRs: caltopdc, calhzero, calsnowlmt and
src_lheat_nudge.f90: SR calhzero
(Note, that not the subroutines have been modified, but they are now called
with a different argument).
These subroutines started computations in a fixed height above sea level up to now.
Now the start in a fixed height above the height of the grid point providing the
reference profile. Therefore results of the the fields HTOP_DC, HZEROCL and SNOWLMT
can change, if a computational domain contains land points only.
Modifications because of missing reference atmosphere parameters in GRIB2:
If the full pressure is passed within the initial file (and also the boundary
files), the COSMO-Model has to set up a reference atmosphere on its own.
Therefore, new Namelist variables have been introduced in the group /LMGRID/
(read in src_setup.f90), to define these parameters (according to the variables
in INT2LM):
- irefatm, p0sl, t0sl, dt0lp, delta_t, h_scal
The call to SR set_refatm_defaults to initialize the corresponding structures
in vgrid_refatm_utils.f90 has been moved from organize_data.f90 to src_setup.f90
Other GRIB2 and grib_api adaptations
- When writing GRIB1 with grib_api, the vertical coordinate parameters are now
only written to atmospheric fields (with level type 109/110).
(in io_metadata.f90).
- In the GRIB2 coding of the grid values, the original keys are now used instead of the
derived keys with InDegrees because of possible rounding problems. Also, the keys
iDirectionIncrement and jDirectionIncrement are now set per record, and not only
for the sample grib record, because the cloning process did modify the values
(most probably also rounding effects in grib_api; seen only on few compilers).
- Ensemble Mode in GRIB2:
There were problems with some variables, when the productDefinitionTemplateNumber
is set after the level type information (in Ensemble Mode):
- for generalVertical, the productDefinitionTemplateNumber has to be set
after the level type; for all other level types it is done as before
(otherwise we had problems at least with coding the levels of the
multi-layer soil model
- after testing when to set the shortName, it turned out that it has to
be set after all level type information, product definition template
number and EPS information, because special level type information would
not be available otherwise.
- Some minor details from io_metadata:
- Set GRIB2 typeOfGeneratingProcess for surface analysis products to 0
instead of 202 (Nugding).
- SR make_grib_init: set ipds_out variables in any case, which is necessary,
because there could be several GRIBOUT blocks and original settings could
be overwritten.
- Do not set level types for the FLake variables. These are only set implicitely
by setting the shortname.
- Some minor details from src_input:
- Check iscalval1 instead of ilevbot to decide if T_SO at 0 is required.
- In case of grib_api, check vertical coordinate parameters only for
hybrid, hybridLayer.
- When checking reference atmosphere parameters for GRIB2, check izexed==2
(and not igrbednr==2).
Back to Contents
(by. U. Blahak)
Interfaces to run the Efficient Modular RADar SCanning forward OPErator (EMRADSCOPE)
have been implemented into the COSMO-Model. This operator was developed by Ulrich Blahak (DWD),
Yuefei Zeng (KIT), Dorit Jerger (KIT) and Daniel Leuenberger (MeteoSwiss) to simulate synthetic
radar images of networks of volume-scanning meteorological radars.
The whole package of radar specific files and a README.radar is available from Ulrich Blahak.
The README.radar is also available in the DOCS directory of the COSMO-Model.
The operator must be activated during compile time with the directive -DRADARFWO
and during run time with the new namelist parameter luse_radarfwo in the group
/RUNCTL/.
There were some specific modifications to the existing source files:
- time_utilities.f90:
A special timer has been implemented to measure the computational costs for the
operator.
- data_io.f90:
Add namelist variable dbz of TYPE(dbzcalc_params) to type
pp_nl for output GRIBOUT namelist. It contains many
configuration parameters for radar reflectivity calculations.
- mo_fdbk_cosmo.f90:
Added some missing structure components for radar.
Adaptions in write_report_radar_1, write_report_radar_2 for better
vectorization.
- src_output.f90:
for radar reflectivity DBZ, DBZ_850 and DBZ_CMAX,
replaced calls to radar_lm_ray from pp_utilities.f90 by
calc_dbz_vec() from src_radar.f90.
There, the radar_lm_ray is still available as itype_refl=4.
- src_output.f90:
new output variable VTERM (reflectivity weighted terminal
velocity of hydrometeors).
If the model is compiled without the operator (-DRADARFWO not set), there
are no changes to the results. Otherwise, same results as before can be obtained
by choosing the option dbz%itype_refl=4 in /GRIBOUT/ namelists.
Back to Contents
(by A. Roches, O. Fuhrer)
In the present COSMO code, the treatment of the microphysics tracers
(qv, qc, qi, qr, qs, qg)
is not consistent. These inconsistencies existed in previous COSMO
versions but have been revealed during the introduction of the new tracer module
(see COSMO Technical Report, No. 20, Roches and Fuhrer, 2012). In principle it is
highly desirable to treat all tracers alike, since this simplifies both the code
and allows the user to better understand how the tracers are being treated in the
model code and where potential problems might stem from. Since many of these
inconsistencies for the microphysical water species have arisen historically,
the reasons for their introduction and their importance for the current code version
and implementations at the national weather services are often not known. Thanks to
the tracer module and the associated metadata functionality provided by this development,
the inconsistencies could be expressed clearly in the code (currently named hacks)
and are also easy to switch on and off. The current implementation in COSMO 5.0
replicates the inconsistencies as they were in previous code versions.
Modifications in 5.1
- removal of CLP_10E-12:
now only the negative values for all species are clipped to 0
after the turbulent mixing in the Leapfrog dynamical core (depending
on the user's setting) whereas also the values of qi smaller
than 10E-12 were clipped to 0 before.
(removed in organize_physics, slow_tendencies).
- removal of MASSFLX_CLP for Runge-Kutta dynamical core:
now the negative values of all species are clipped
to 0 after the turbulent mixing in the RK dycore without mass
redistribution whereas the "lost" mass resulting from the clipping
was redistributed for qv and qc previously.
(removed in src_slow_tendencies_rk,
remains in Leapfrog slow_tendencies).
- removal of ADD_CLP_ADV:
now no additional clipping is performed just after the advection
for all species whereas an additional clipping was performed there
before for qr, qs and qg.
(removed in src_advection_rk).
- removal of BD_0GRAD_FORCED:
now the setting of the boundary conditions by the user is
respected in the advection part of the RK dycore for all species.
Before the user setting was overwritten in some cases and a
zero-gradient boundary conditions type was used for qi,
qr, qs and qg
(removed in organize_physics, src_advection_rk).
- removal of DAMP_FORCED:
now no Rayleigh damping is performed for all species in case
constant or zero-gradient boundary conditions are chosen.
Before Rayleigh damping was nevertheless performed in case of
zero-gradient boundary conditions for qi, qr, qs and qg.
(removed in organize_physics, src_relaxation).
Not removed were SP_ADV_LF, which remains in the Leapfrog dynamical core, and
the hack for BD_SET_FORCED: its removal caused problems in COSMO-DE and has to
be investigated further.
These modifications do have a small (only numerical) impact on the results.
Back to Contents
(by Stefan Rüdisühli, Oliver Fuhrer, Ulrich Schättler)
From the beginning of the development, the COSMO-Model had been designed to be able to run
in both precisions: single and double precision. Therefore, the real variables are all
defined using a KIND parameter, named ireals in the module
data_parameters.f90. But only the double precision version was developed and tested,
nobody ever used or tried a single precision version.
But single precision programs run faster on computers, because of less memory traffic,
therefore MeteoSwiss tested to run the COSMO-Model also in single precision. Which did
not work in the first instance. Some effort had to be put in adapting the model for
single precision runs. Concurrently, the name of the KIND parameter was unified
with the ICON-Model to wp, indicating working precision.
The main changes are:
- Epsilons, which are used in comparisons or to make divisions safe, are
adapted to work in both precisions. Variables repsilon and rprecision
have been introduced in module data_constants.f90.
- New variables imp_single and imp_double are added to specify
an appropriate MPI data type.
- To avoid automatic conversions by the compiler, all (!) real constants
(as 2.0, 0.5, etc.) are now written with the kind parameter as suffix:
2.0_wp, 0.5_wp, etc.). Further developments should follow this rule!
- The pragma SINGLEPRECISION is now used to choose single precision
for the COSMO-Model during compilation. If it is not set, double precision is used.
It turned out, that the radiation cannot be run in single precision (at least the routines
coe_th, inv_th, coe_so, inv_so). Therefore it was decided to run the
subroutine fesft and all subroutines called below in double precision. The
necessary variables are defined with the kind parameter dp.
In a second step also the name and the contents of the file, which defines the kind
parameters was unified with ICON and the assimilation programs at DWD, now being
kind_parameters.f90. This file also defines kind parameters for integer
variables, which are not yet used in the COSMO-Model. This will be unified in a
later step. It replaces the module mo_kind.f90 (and later on also
data_parameters.f90.
Back to Contents
(by A.K. Miltenberger, A. Roches, S. Pfahl, H. Wernli; ETH Zuerich)
An online trajectory module has been implemented into the COSMO-Model. For documentation
see COSMO Technical Report No. 24:
Online Trajectory Module in COSMO: A short User Guide.
Back to Contents
Use of t_g instead of t_s (by U. Blahak)
Up to now, the surface temperature t_s has been used for the calculation of the
modified transfer coefficients in src_slow_tendencies_rk.f90 (Runge-Kutta) and in
slow_tendencies.f90 (Leapfrog). This has been replaced by using t_g now, which
really is the lower boundary condition (including snow), the atmosphere sees.
In organize_physics.f90, t_g has to be exchanged instead of t_s.
This changes results slightly, where there is snow.
Checks for NaN in the main program (by O. Fuhrer)
At the end of subroutine initialize_loop, a check for NaNs has been implemented.
A subroutine check_field_NaNs from module utilities is called for the prognostic variables.
If a NaN is found, the program will abort.
This check is only performed, if idbg_level is larget than 2.
Note, that many compiler offer a floating point trapping by using compiler options.
But sometimes this may slow down the program. In this case (or if a compiler option is not available),
this NaN checking could be used.
Changes in the Restart Functionality (by U. Blahak)
Replaced ydir_restart by ydir_restart_in and ydir_restart_out after
discussion with CLM community. This is the most flexible solution to
implement different philosophies on the book-keeping of restart files.
For output restart files the status while opening has been changed to UNKNOWN.
With this change, existing restart files are just overwritten without further notice.
Modified files: data_io.f90, organize_data.f90, src_input.f90, src_output.f90
Changes in reading Namelist Input (by U. Blahak)
All READ calls to Namelist groups have been extended with a new entry: IOMSG
This returns more precise error messages, if a Namelist group could not be read for
example because of typos in the variable names.
This entry is a new feature of Fortran 2003, so if an old compiler is used, which does
not support Fortran 2003, this will cause problems. We recommend to switch to a new
compiler version then: in the meantime all compilers should be able to process
Fortran2003 standard.
Reformatting of YUSPECIF (by U. Blahak)
The format of several namelist groups has been adapted for a better reading by
the CLM Namelist tool:
- RUNCTL (in src_setup)
- INICTL (in dfi_initialization)
- NUDGING (in organize_assimilation)
- IOCTL (in organize_data)
- GRIBIN
- GRIBOUT
- DIACTL (in organize_diagnosis)
- DYNCTL (in organize_dynamics)
- EPSCTL (in organize_eps)
- PHYCTL (in organize_physics)
- SATCTL (in organize_satellites)
- OBS_RADCTL (in src_obs_rad)
Use of Single Column Model (by M. Raschendorfer)
Preparations have been implemented to include the Single Column Model:
- data_runcontrol.f90: added namelist switch lscm
- organize_physics.f90: read lscm in namelist group PHYCTL
- src_radiation.f90: use lscm in order to employ always true geographical
longitude and latitude in case of a single column-run.
- src_setup.f90: distinguish between private and public routines
- src_soil.f90: Formal Introduction of the SC-framework
- src_soil_multlay.f90: Formal Introduction of the SC-framework
- turbulence_tran.f90: Formal Introduction of the SC-framework
Back to Contents
- environment.f90:
Replaced call to fsleep with dosleep (new in utilities)
- grid_metrics_utilities.f90:
Removed l2dim-treatment, because this is done now within the call to
exchg_boundaries, But therefore the call to exchg_boundaries has to be
done in any case, also for sequential applications to treat periodic
boundaries correct, and the conditional compilation for MPI has been
removed.
- hori_diffusion.f90:
Fixed allocation of i_liste, j_liste and k_liste:
has to be (ie*je*(dk+1)) instead of (ie*je*dk) (UB)
- io_metadata.f90:
- pv_out must not be set for initial data
- The multi-layer snow variables are treated similar to atmospheric "layer" variables
and the upper and lower boundary levels are written to octets 18/19 in GRIB1
- io_utilities.f90:
Subroutine check_gme_grid: The variable ylevtyp was only set for the level types
hybrid and hybridLayer, but it has to be initialized also for the other cases.
- lmorg.f90:
- Print information for tracers only if idbg_level > 2
- Changed computation of nexch_tag by using INT(24*3600/dt) as second argument
for the MOD function: then also dt < 1 will work
- Embraced USE data_satellites with if defined RTTOVx, because of unresolved references
when compiling purpar, nudpar
- mo_t_netcdf_file.f90:
Increased PLEN from 128 to 256 for longer path names
- numeric_utilities.f90, Subroutine curl:
- improved weighted vertical interpolation for some z-derivatives.
- proper horizontal interpolation for the spherical metric correction
- one lateral boundary line is set to 0 (therefore, no uninitialised field elements)
This subroutine is used for diagnostics only. Ttherefore, there is no change
of the simulation itself.
- organize_assimilation.f90:
Erroneously swapped the actual and the default value of yform_lansfc in YUSPECIF
- organize_data.f90:
Some more modifications to YUSPECIF-format for Namelist Tool
- organize_dynamics.f90:
Call to calps, to get consistent values for the surface pressure in ps(:,:,nnew)
which are used in the assimilation (before, timely interpolated values from
initialize_loop where taken.
(this changes results, if nudging is used)
- organize_physics.f90:
- Do not interpolate and store ut_conv, vt_conv, ut_sso, vt_sso to u- or v-grid points,
because they are defined on mass grid points (and at least the sso-fields are used
as such in the turbulence scheme).
Therefore they have to be interpolated in every time step, to add them to utens, vtens
(this changes results, if lsso, ltkesso=TRUE!)
- Corrected check for ltkecon
- pp_utilities.f90:
- Added optional argument z_radar_dp to subroutines radar_lm_ray and radar_sb_ray
(necessary for radar forward operator) (UB)
- Optimized gamma_fct() to enable inlining (UB) (this changes results numerically)
- src_allocation.f90:
Allocate fr_lake anyhow, because it is used during NetCDF I/O
- src_advection_rk.f90:
- Bug fix in subroutine advection_pd: For the calculation of wcon the right vertical
interpolation weigths for u and v to the w-position are used now.
(this changes the results! But it can be seen as an unproblematic bug fix)
- Removed unnecessary dependence on hori_diffusion.f90
- src_artifdata.f90:
Return correct error status (ierrstat and not iz_err) in input_artifctl().
Implemented new subroutine distribute_path to distribute pathlengths larger than 100 characters.
- src_conv_shallow.f90:
- Calculation of tket_conv corrected.
- Removed option lexpl_lbc=.FALSE.
- src_input.f90:
- Removed option lexpl_lbc=.FALSE.
- Do not recalculate hhl_prof and vcflat for idealized restart runs
(lartif_data=.TRUE.). (UB)
- src_obs_rad.f90:
Initialize nsensors with 0; otherwise it is not initialized, if lobsrad=.FALSE.(OF)
- src_relaxation.f90:
- Removed option lexpl_lbc=.FALSE.
- QNICE should only be touched in case of running the 2-moment scheme.
This has been fixed. (UB)
- src_setup.f90:
Eliminated checks for input of rotated pole coordinates (because they are not
really coordinates but rotation angles). This is important if working with
domains on the southern hemisphere.
- src_slow_tendencies.f90:
Bug fixes for some cut-and-paste errors in explicit_horizontal_diffusion (l3dturb):
- in the advection parts for TKE (wrong indices, wrong grid factors)
- in the 2.nd flux components (wrong indices for dzeta_dphi)
- eliminated doubled tracer-loop in the uppermost level (k=1) in the
calculation of ztrcr_tens
- src_soil_multlay.f90:
Bug fix in the multi-layer snow model
- src_tracer.f90:
Bugfix in trcr_setup_vartab method in src_tracer.f90. Wrong index for
accessing the data field has been used (this only worked due to the current
correspondence between tracer ID and data index)
- src_turbulence.f90:
Introduction of the CASE itype_turb=3 in horizontal_diffcoeffs.
- utilities.f90:
- Added subroutine diff_seconds
- new function dosleep
- new INTERFACE check_field_NaNs
Back to Contents
Group |
Name |
Meaning |
Default |
/RUNCTL/ |
lsppt |
NEW |
indicates, if stochastic perturbation of physics tendencies (SPPT)
is applied (if .TRUE.) and related namelist variables
are read from namelist group /EPSCTL/. |
.FALSE. |
luse_radarfwo |
NEW |
To activate the radar forward operator. |
.FALSE. |
/DYNCTL/ |
lhor_pgrad_Mahrer |
NEW |
In the new fast waves solver (itype_fast_waves=2) the horizontal
pressure gradient (i.e. in the u- and v-equations) is either calculated in
the terrain-following system (.FALSE.) or by interpolation of
p' to a horizontal plane (Mahrer (1984) MWR) (.TRUE.)
(see also Baldauf (2013) COSMO Tech. Rep. 21) |
.FALSE. |
l_3D_div_damping |
NEW |
The artificial divergence damping either acts only on the u- and v-equation
(.FALSE.) or in a fully isotropic 3D manner (.TRUE.).
The latter version is more time consuming (and less tested until now).
(see Baldauf (2013) COSMO Tech. Rep. 21 and Baldauf (2013) in ECMWF
Seminar proceedings) |
.FALSE. |
crltau_inv |
RENAMED |
former name was crltau and the meaning
really is crltau_inv = 1/crltau.
Factor for relaxation time 1/tau_r = crltau_inv * 1/dt
The advantage of this replacement lies in the fact, that crltau_inv=0 completely
switches off the relaxation (this was not possible before). |
1.0 |
lexpl_lbc |
DELETED |
explicit formulation of the lateral relaxation
boundary conditions |
|
/PHYCTL/ |
lsuper_coolw |
NEW |
switch to activate effects of supercooled
liquid water in the microphysics. |
.FALSE. |
lscm |
NEW |
switch to activate the single column model |
.FALSE. |
/GRIBIN/ |
ydirhhl |
DELETED |
was introduced for GRIB2, but is not needed. |
|
ynamhhl |
DELETED |
was introduced for GRIB2, but is not needed. |
|
/NUDGING/ |
lcd146 |
NEW |
switch for using Mode-S data actively or only passively
| .TRUE. |
gnudgms |
NEW |
nudging coefficients as gnudgar, but for Mode-S data
| (0.0006, 0.0000, 0.0006, 0.0000) |
/EPSCTL/ |
The following new namelist variables in the block
/EPSCTL/ are related to the stochastic perturbation of physics
tendencies (SPPT) and are effective only if lsppt=.TRUE.,
and read only if lsppt=.TRUE. or leps=.TRUE.: |
itype_qxpert_rn |
NEW |
defines, which hydrometeor tendencies are perturbed
- qv only
- qv, qc, qi
- qv, qc, qi, qr, qs, qg
|
0 |
itype_qxlim_rn |
NEW |
type of reduction/removal of the perturbation in case
of negative (for qv, qx) or supersaturated (qv) values
- no limitation of perturbed tendencies
- If new qv values are negative or super-saturated
then T- and qv- tendencies are not perturbed;
if new qx (qc,qi,qr,qs,qg values) are negative
then qx- tendencies are not perturbed;
|
0 |
The following variables are related to the generation
of the random fields for SPPT:
|
lhorint_rn |
NEW |
- .TRUE.
- then the random numbers (as defined on a random number horizontal
coarse grid) are horizontally bi-linearly interpolated to the
COSMO model grid;
- .FALSE.
- then the model grid points contained in the same random number
coarse grid box have the same random number value.
|
.TRUE. |
ltimeint_rn |
NEW |
- .TRUE.
- then the 3-D fields of random numbers (available at
random number time steps) are interpolated linearly in time;
- .FALSE.
- then random numbers remain constant in time until the next
random number time step.
|
.TRUE. |
lgauss_rn |
NEW |
- .TRUE.
- then use a gaussian distribution of random numbers;
- .FALSE.
- then use a uniform distribution of random numbers.
|
.TRUE. |
itype_vtaper_rn |
NEW |
type of tapering near surface and in stratosphere:
- no vertical tapering
- prescribed tapering near surface and in stratosphere
- prescribed tapering only in the stratosphere
- tapering according to namelist variable vtaper_rn
|
1 |
imode_rn |
NEW |
- use only one stream of random numbers (for each pattern) for all
random number time steps; the same offset of the coarse grid
relative to the lower left corner of the COSMO grid is then used
for all random number time steps (for a given pattern);
- use a new stream of random numbers for every random
number time step; this renders the 3-D random number
fields valid for a given time reproducible even if
produced by successive model runs, and enables temporal
correlations in DA cycles across analysis steps;
the offset of the coarse grid relative to the lower
left corner of the COSMO grid is then different for
each random number time step.
|
1 |
npattern_rn |
NEW |
number of random number patterns with different (4-D)
correlation scales used for SPPT (must be ≤ 5)
|
1 |
For the following new namelist parameters, npattern_rn
values have to be specified:
|
hinc_rn |
NEW |
random number time step (in [hrs]), i.e. timestep increment
for drawing a new 3-D field of random numbers;
if imode_rn > 0, 24 hours must be divisible by hinc_rn;
and if both hinc_rn and ninc_rn are given valid values
(> 0) then the value of hinc_rn is used. |
6.0 |
ninc_rn |
NEW |
random number time step (in [model timestep] units), i.e. timestep
increment for drawing a new 3-D field of random numbers.
|
-1 |
nseed_rn |
NEW |
external part of seed for random number generation.
|
0 |
nseed_rn2 |
NEW |
only for imode_rn == 1: external part of seed to generate 3-D
random number fields valid for times later than the intial time of the model run.
|
0 |
dlat_rn |
NEW |
random number coarse grid point distance in meridional direction (in [degrees]).
|
2.5 |
dlon_rn |
NEW |
random number coarse grid point distance in zonal direction (in [degrees]).
|
2.5 |
stdv_rn |
NEW |
standard deviation of the Gaussian distribution of random numbers.
|
0.5 |
range_rn |
NEW |
upper limit imposed to absolute value of random numbers
(condition: SUM( range_rn2) < 1 (sum over npattern_rn),
otherwise the perturbations may change the sign of physics
tendencies, which may easily lead to instabilities).
|
2 * stdv_rn_d |
For the following new namelist parameter, ke
(number of vertical model layers) values have to be specified
|
rvtaper_rn |
NEW |
only for itype_vtaper_rn == 3: externally specified
function (by values ≤ 1 for each model layer from top down)
for vertical tapering of the random number.
|
- |
Back to Contents
The following changes do have a numerical influence on the results, i.e. they are
changed slightly:
- Work on Dynamics
- Changes in the Assimilation (if switched on)
- Removal of Inconsistencies for the Tracers
- Use of t_g instead of t_s for calculation of modified transfer coefficients
in the dynamics
- Optimization of the gamma-function in pp_utilities
- Single Precision Version
The modifications in the microphysics (cloud ice sedimentation, sticking efficiency,
evaporation and supercooled liquid water) do change the results.
The implementation of the new copy-to/from-block framework does not change the results.
The new schemes (TKE advection, Stochastic Perturbation of Physics Tendencies,
Interface to Radar Forward Operator) do not change the results, as long as they
are not switched on.
Back to Contents