Version 5.4 is a development version, which will not be officially released.
The following source modules have been removed from the active code:
One new namelist variable has been introduced to specify the directory, where the NetCDF fof output file shall be written.
Several other namelist variables, dealing with the AOF interface, have been eliminated:
Also the namelist variable lgpsbias has been eliminated.
The targeted diffusion for cold pools should avoid unrealistic undershootings in the temperature field near the bottom, if the value of a grid point is considerable colder than the average value of the surrounding. This diffusion is switched on, if the difference is larger than a pre-determined threshold value. Up to now this threshold has been hard-coded to 10 degree Kelvin. Also, targeted diffusion was always switched on in the model.
Targeted diffusion has now been made configurable by introducing two new namelist variables in the group /DYNCTL/:
Group | Name | Meaning | Default | |
---|---|---|---|---|
/DYNCTL/ | l_diff_cold_pools | NEW | Use targeted diffusion for cold pools. | .TRUE. |
thresh_cold_pool | NEW | Threshold to activate targeted diffusion
for cold pools. Reasonable values are from 5.0 to 20.0 degree Kelvin |
10.0 |
If the default settings are used, the results will not be changed
A simple clipping for the Semi-Lagrange advection scheme has been implemented by introducing the option "SL3_SC" for the namelist variable y_scalar_advect.
In the COSMO-Model the number of saturation adjustment iterations depends on the maximal vertical velocity. Usually only one iteration is enough, only for larger velocities, 2 or 3 iterations are done. In order to have reproducible results, independent of the domain decomposition, the maximal vertical velocity is determined over the full domain. This requires a global communication.
To save this global communication in the CPP_DYCORE case, the number of iterations to do is always 3. This has been hardcoded.
The serialization statements were updated to cosmo 5.04. Several fields were added to serialize data consistently and to provide effective tagging of the individual serialized fields.
Affected files:
The module src_block_field.f90 has been refactored to allow for future optimizations (for example doing a multi-copy).
Note, that the OpenACC statements in the copy function are still deactivated at the moment. They can only be activated, if the full physics runs on the GPU.
In addition, some editorial changes have been done:
The subroutine dfi_initialization.f90 has been modified to have a better treatment of clouds / precipitation during the diabatic DFI step. Filtering the qx-variables tends to smooth the structure of the initial state clouds. To mitigate this problem, two new namelist parameter have been introduced to change the treatment of the qx-variables but also of the soil variables in the DFI. Note that these new variables are only active for the option ndfi=1.
Group | Name | Meaning | Default | |
---|---|---|---|---|
/INICTL/ | itype_dfi_qx | NEW | Treatment of qx-variables in DFI:
|
0 |
itype_dfi_soil | NEW | Treatment of soil variables in DFI
(for consistency with clouds / precipitation treatment):
|
0 |
If the default values are used, the results will not be changed. The recommended settings that were tested (results shown at COSMO-GM 2015) are:
For diabatic digital filtering initialization (ndfi==1) no output was produced for step 0 up to now. As this is needed for many operational applications, this has been implemented now by calling:
The fields which are read as boundary conditions need to be copied from CPU to GPU. Since this is implemented as a dynamic process and since copying from CPU to GPU is an expensive operation, we track the fields which are actually being read in src_input.f90 (only in case #ifdef _OPENACC) and fill a data structure with the information required for the copy from CPU to GPU (which is implemented in acc_utilities.f90 and called from lmorg.f90).
At the moment, only the radiation scheme can run on GPUs. For all other parts of
the model, which already contained some OpenACC statements, these are de-activated
for now.
(In modules: gscp_interface, meteo_utilities, src_block_fields)
Some corrections and adaptations have been done in modules:
organize_physics, radiation_interface, radiation_rg, radiation_utilities;
does not change results!
A module acc_device_management.f90 has been added. This module also contains the routine printGPUMem, which has been in acc_utilities.f90 before.
Group | Name | Meaning | Default | |
---|---|---|---|---|
/DYNCTL/ | l_diff_cold_pools | NEW | Use targeted diffusion for cold pools. | .TRUE. |
thresh_cold_pool | NEW | Threshold to activate targeted diffusion
for cold pools. Reasonable values are from 5.0 to 20.0 degree Kelvin |
10.0 | |
y_scalar_advect | additional value | added a new option for simple clipping: SL3_SC | BOTT2_STRANG | |
/NUDGING/ | yfofdir | NEW | directory for output NetCDF fof file. | ./ |
itype_obfile | deleted | type of observation input file (AOF/NetCDF) | ||
yaofpath | deleted | path of AOF file (directory + file name) | ||
lpraof | deleted | diagnostic output of AOF interface | ||
dinlat, dislat, diwlon, dielon | deleted | diagnostic print area for AOF interface | ||
noctrq | deleted | obs type of diagnostic print | ||
lgpsbias | deleted | bias correction (GPS ASCII interface) | ||
/INICTL/ | itype_dfi_qx | NEW | Treatment of qx-variables in DFI:
|
0 |
itype_dfi_soil | NEW | Treatment of soil variables in DFI
(for consistency with clouds / precipitation treatment):
|
0 |
With the default settings of the namelist variables, there are no changes to the results.
On the Cray XC there are numerical changes to the results due to compiler optimizations.