Computing the coefficients for the ICON RBF interpolation already takes rather long on CPUs. On NEC vector processors it even takes much longer, as the computations cannot be vectorized fully. In addition, the computations are not parallelized and are done on one task only. For an interpolation from ICON-EU to COSMO-D2, the time on the Cray takes about 40 seconds, on the NEC it takes about 250 seconds.
The RBF coefficients depend on the domain for the ICON driving data, the COSMO compute domain and the value of nproma_icon. As long as these characteristics are not changed, precalculated coefficients can be used for every INT2LM run, which are saved to external files, the RBF coefficient files for scalar, u- and v-grid points:
These files are written in NetCDF format using a module from the ICON tools: mo_netcdf_storage.f90 (new in INT2LM source code).
Reading and writing the RBF coefficient files has been implemented in the module icon_interp_utilities.f90, subroutine rbf_setup_interpol_lonlat_grid_cell.
The following fields are written to these files:
To check the ICON domain and the nproma_icon value, the following attributes are also written to the NetCDF files:
Reading or computing these coefficients is controlled by 3 namelist variables in the group /CONTRL/:
Group | Name | Meaning | Default | |
---|---|---|---|---|
/CONTRL/ | l_read_precalc |
If .TRUE., RBF coefficients are read from files. This namelist variable already existed, but was deactivated up to now. |
.FALSE. | |
l_write_precalc | NEW |
If .TRUE., RBF coefficients are computed and written
to files. File names are:
|
.FALSE. | |
y_precalc_cat | Directory, where to write / read the files with precalculated RBF coefficients. | './' |
In order to be able to use this tool, the component rdist of the TYPE t_lon_lat_intp has to be stored in working precision, which for INT2LM still is DOUBLE. Up to now it was only stored in single precision (just to save some computation time). But mo_netcdf_storage.f90 cannot handle single precision.
A technical test suite has been implemented for INT2LM. For that, INT2LM has to write a file YUPRTEST, which contains min, max and average values of the prognostic variables (similar to COSMO). This file is only written, if the new namelist switch ltestsuite in the namelist group /DATA/ is set to .TRUE. (default is .FALSE.).
The software of the testsuite is placed in testsuite/test/src as a git subtree from git@github.com:C2SM-RCM/testsuite.git (https://github.com/C2SM-RCM/testsuite) The documentation is in testsuite/test/src/doc/userguide.pdf
Writing of the file YUPRTEST has been implemented to module src_lm_output.f90.
In module src_read_coarse_grid.f90, the pragma NOECCODES has been implemented, to avoid calls to the computed key localUsePresent, which is available for Grib 1 and for GRIB 2 only in eccodes and in grib_api version 1.23. If earlier versions of grib_api are used, the grib_get call will fail. For ifdef NOECCODES, different keys have to be evaluated for GRIB 1 and for GRIB 2.
Group | Name | Meaning | Default | |
---|---|---|---|---|
/CONTRL/ | l_read_precalc |
If .TRUE., RBF coefficients are read from files. This namelist variable already existed, but was deactivated up to now. |
.FALSE. | |
l_write_precalc | NEW |
If .TRUE., RBF coefficients are computed and written
to files. File names are:
|
.FALSE. | |
y_precalc_cat | Directory, where to write / read the files with precalculated RBF coefficients. | './' | ||
/DATA/ | ltestsuite | NEW | Indicates whether to write output for the testsuite. | .FALSE. |
NONE