11.05.2020
- Modifications for a better vectorization on the NEC SX-Aurora
- Changes in the Data Assimilation
- Updates for radar forward operator EMVORADO
- Added hailcast diagnostic
- Added EULAG dynamical core
- Modifications to enable restarts when using mixed precision in sfc-schemes
- Modification to sunshine duration
- Modifications for MESSy
- Technical Changes and Bug Fixes
- Changes to the Namelists
- Changes of Results
(by Ulrich Schättler, DWD)
Several modifications were necessary to implement the COSMO-Model on
the NEC SX Aurora and run it efficiently:
- For Compilation: src_artifdata:
Have to use KIND parameter sp now instead of irealgrib.
- For Running without crash: lmorg.f90:
Added a NEC NOMOVE directive in SR initialize_loop.
- For Optimization in the Physics:
- Microphysics: gscp_graupel.f90, gscp_cloudice.f90,
src_stoch_physics.f90:
Have to pass zdt = dt/dt2 as an argument to SR apply_tqx_tend_adj.
This helps to vectorize loops in gscp_graupel and gscp_cloudice.
- Diagnostics and Output:
Subroutine lightning_potential_index in pp_utilities.f90
- For computing the Newton search in subroutine Tequiv, a DO WHILE
loop has been implemented.
- For optimal performance on GPU we need this loop carried out within the
horizontal loops (for every grid point)
- For optimal vectorization on NEC SX we need it outside the horizontal loops
for vectorization over the horizontal grid points.
Two different implementations have been realized with ifdef _OPENACC.
- Calculation of cell-track variables:
Modifications in cell-track variables to vectorize the computations over the
grid points. Up to now the innermost loop was over the vertical levels.
Now the horizontal loops over the grid points are innermost.
Changes were also necessary in utilities.f90 and src_output.f90.
- Miscellaneous: More modules have been modified to add (or modify) NEC directives.
Back to Contents
(by Christoph Schraff, DWD)
Definition and processing of new types of observations
These are read from the following new observation input files:
- cdfin_wlidar_wp: ground-based wind lidar
- cdfin_synop_tst: test Synop surface report (from alternative networks):
the template of the file is the same as of cdfin_synop,
but the reports are assigned a different code type,
which allows for easy passive monitoring.
For each of these new code types, a switch is introduced to define its active
or only passive use.
Changes to the redundancy check
- Exclude merging (redundancy) of a radiosonde descent report with a report
of any other code type (e.g. with a radiosonde ascent report).
- The criterion for lmerge (idea: merging TAC TEMP parts A-D) is tightened
in order to allow more easily for ordinary redundany checking between
TAC and BUFR reports.
- New criteria of preferences in redundancy check for multi-level reports
introduced:
- Prefer high-resolution superobbed report over other report.
- Prefer larger vertical range of superobbed levels.
- Prefer BUFR TEMP report over TAC TEMP report.
- The criterion for lsub (i.e. for discarding a multi-level report because
it is subset of another report) is relaxed to still apply
- if mandatory levels are added to a superobbed report;
- if only the top level of a superobbed redundant profile is absent in
(but within the range of) the active profile;
- even though observed values differ by some tolerances (1.1 m/s, 0.4 K,
RH=0.5) (and the pressure levels differ by ≤ rprlim).
Further Modifications
- Fix to allow for TEMP input files with only zero level reports.
- Fix of a lethal bug at processing of 'stratospheric-only' radiosonde reports.
- Fix of time range for reading high-res and descending radiosonde reports.
- Corrected search for the lowest level in a descending sonde report now
accounts for the pressure (and does not depend any more on the order
(ascending or descending) of the levels in the report).
- Int. data sub category added for descending sonde BUFR 3 reports.
- Correction: omit search for surface level for descending and drop sondes.
- Fix at redundancy check with national DWD reports.
- Computation of Td2m model equivalent added if RH2m is not observed.
Changes of the namelist variables:
Added namelist variables in /NUDGING/:
- lcd187 (.FALSE.): switch for active use of ground-based wind lidar data
- lcd811 (.FALSE.): switch for active use of test Synop surface reports
Changes of the results:
- Results are changed if radiosonde descent data are used.
- Occasional changes of the results may occur in the redundancy check of
multi-level reports.
Back to Contents
(by Ulrich Blahak et al., DWD)
- Technical consolidation (Jana Mendrok, Ulrich Blahak)
- Bug fix for reflectivity (Mie) of melting snow (Jana Mendrok)
- New options for obs error specification in feedback files for DA (Klaus Stephan)
- Changes from ICON implementation work
- Owing to code consolidation and bugfix, there are changes of results of simulated radar data.
Back to Contents
(by Xavier Lapillonne, MCH)
Implementation of the hail diagnostic hailcast in COSMO.
This diagnostic was originally implemented in the WRF code.
Hailstone driver, adapted from hailstone subroutine in HAILCAST
See Adams-Selin and Ziegler 2016, MWR for further documentation.
The code is ported to GPU using OpenACC directives.
Changes of the namelist variables:
Added new namelist variables in /DIACTL/:
- lhailcast: switch on and off hailcast
- ninchail: control the call frequency
It is recommended to call hailcast every 2 to 5 minutes,
i.e. for 10s time step set ninchail to 12 or 30.
Back to Contents
(by Damian Wojcik, IMGW)
The EULAG dynamical core has been added in an additional subdirectory LOCAL/EULAG.
The interfaces to call the EULAG routines have been added to the COSMO code with
ifdef EULAG.
Steps to activate the EULAG dynamical core:
- Define the pragma -DEULAG in the Fopts file.
- In the Makefile activate the includes for
- LOCAL/EULAG/ObjFiles.eulag and
- LOCAL/EULAG/ObjDependencies.eulag.
Then the code can be compiled and linked.
To run the EULAG dynamical core you have to define the new namelist variable
leulag=.TRUE. in the namelist group /DYNCTL/.
Back to Contents
(by Ulrich Schättler, DWD)
Back to Contents
(by Oliver Fuhrer, MCH)
Several changes have been implemented
- New fuzzy and configurable threshold on SWdir in order to increase dursun (this is
off by default via ldursun_mch = .FALSE.)
- New computation of dursun_m which takes into account a simple estimation of SWdir
in cloud free conditions and the same threshold as for dursun (this was wrong,
as it was simply checking whether the sun is above the horizon).
- Limiter to values between 0% and 100% for dursun_r
(avoiding unrealistic values encountered previously).
This changes the diagnostic fields DURSUN_M, DURSUN_R.
Changes of the namelist variables:
Added namelist variables in /DIACTL/:
ldursun_mch: Use Swiss thresholds for sunshine duration
(Default: .FALSE.)
This switch only determines the threshold and smooth transition of the
sunshine duration. Switzerland is the only country which uses 200 W/m2
as a threshold instead of the 120 W/m2 which are defined by the WMO.
All other modifications which affect DURSUN_M and DURSUN_R will be active for
everybody (and not only activated via switch).
Back to Contents
(by Astrid Kerkweg)
Update of the MESSy interface.
Modified technical implementation of resetting statistically processed fields:
Now all fields, which are not in a GRIBOUT namelist block, are resetted after
a fixed interval of 24 hours, to avoid really big numbers in climate mode.
Back to Contents
- mo_std_operator.f90:
An error regarding GNSS station coordinates with westerly longitudes
has been fixed. Due to a wrong conversion of longitudes from 0 ... 360 deg.
to -180 ... +180 deg. no stations with longitudes between 0 and -180 deg.
could be processed.
- mo_std_selection.f90:
Update to the latest version of mo_mpi_dace. Selection namelists are
now read on I/O PE.
- organize_physics.f90:
Renamed 3 ART variables from ARTDUST01|02|03 to DUSTA,
DUSTB, DUSTC, because these are the shortnames in the
grib definition files.
- parallel_utilities.f90:
Add optional parameter lsum to subroutines: (AK)
- combine_2D_double / combine_2D_single
- gather_field_double / gather_field_single
as some output fields in MESSy require summation.
- src_artifdata.f90:
Use kind parameter sp instead of irealgrib.
- src_input.f90:
Computing the pressure perturbation when the full pressure is read (for GRIB2):
For frames, the possibility of undef points has to be taken into account.
In the subroutine check_frame, generalVertical and
generalVerticalLayer have been added as possible level types.
- src_lheat_nudge.f90, data_lheat_nudge.f90, organize_assimilation.f90:
Renamed namelist variable
-
nradar: max. number of radar stations within input data (old default: 35)
to
-
nradheight: number of records in radar height file (new default: 12)
- src_obs_gnss.f90:
Some errors regarding MPI communicators have been fixed. COSMO crashed
because of wrong communicators when a dedicated I/O PE was used.
- src_stoch_physics.f90, data_fields.f90:
Use pertstoph, pertstoph_mask now from data_fields
(was in src_stoch_physics before) (modified USE in modules using these fields).
Back to Contents
Group |
Name |
Meaning |
Default |
/DYNCTL/ |
leulag |
NEW |
To activate the EULAG dynamical core. |
.FALSE. |
/DIACTL/ |
lhailcast |
NEW |
To switch on and off the hailcast diagnostic. |
.FALSE. |
ninchail |
NEW |
To control the call frequency. It is recommended to call
the hailcast diagnostic every 2 to 5 minutes, i.e. for a 10 second
time step, set ninchail between 12 and 30. |
30 |
ldursun_mch |
NEW |
Use the Swiss thresholds for sunshine duration.
This switch only determines the threshold and smooth transition of the
sunshine duration. Switzerland is the only country which uses 200 W/m2
as a threshold instead of the 120 W/m2 which are defined by the WMO. |
.FALSE. |
/NUDGING/ |
lcd187 |
NEW |
Switch for active use of ground-based wind lidar data. |
.FALSE. |
lcd811 |
NEW |
Switch for active use of test Synop surface reports. |
.FALSE. |
nradar |
DELETED |
Maximal number of radar stations within input data. |
35 |
nradheight |
NEW |
Number of records in radar height file.
This variable replaces nradar. |
12 |
tt_clim_max |
New Default |
Maximum value of artificial temperature profile.
The old default was 0.00015 (one "0" too much). |
0.0015 |
Back to Contents
Results are only expected for the changes in the data assimilation:
- Results are changed if radiosonde descent data are used.
- Occasional changes of the results may occur in the redundancy check of
multi-level reports.
Back to Contents