| 123 | |
| 124 | == Update: 2017-12-01: LAST ACTIONS OF THE PROJECT- PHASE III == |
| 125 | |
| 126 | === Executive summary === |
| 127 | This final phase has focused on FLEXPART 10, which includes serial and parallel versions, to include the modifications and new features required by CTBTO and produced in former phases for FLEXPART version 9. The five basic modifications/features are (OPTIONAL or NON-OPTIONAL depending on whether the user can select to use it or not): |
| 128 | |
| 129 | |
| 130 | 1. '''Unification of the GFS and ECMWF executables''' by adding automatic detection of the meteorological data. A single executable (one for MPI and one for serial) are produced after compilation and ''detectformat.f90'' routine handles the usage of routines according to the type of driving data - [NON-OPTIONAL] |
| 131 | |
| 132 | 2. '''Vtables approach'''. This is a paradigm change on how internally FLEXPART handles different incoming meteorological data, facilitating the implementation of new data and variations in already used data. This approach is based on the usage of Variable tables (Vtables) with the specifications of different parameters inside the GRIB files that then are handled by the corresponding library (''class_vtable_mod.f90''). Vtables are already provided with the distribution for ECMWF data (GRIB2, GRIB1, GRIB1-2) and GFS/NCEP data (GRIB1, GRIB2) - [NON-OPTIONAL] |
| 133 | |
| 134 | 3. Implementation of a '''testing environment''' that includes control data for a variety of cases including ECMWF and GFS data, serial and parallel versions, GRIB2FLEXPART intermediate (NetCDF4) formats and the CTBTO-specific modifications. All the control cases operate under the basis of the Vtables approach and unified executable. - [OPTIONAL] |
| 135 | |
| 136 | 4. Implementation of the add-on tool '''GRIB2FLEXPART'''. This tool, currently only valid for non-depositing species, allows the user to pre-process the meteorological data (in essence, performing all the calculations inside the subroutines called by ''getfields.f90'') and have it available for multiple runs. The pre-processed data are stored in NetCDF4 format and read in by a modified getfields and the corresponding libraries. It is an option and does not affect the normal usage of FLEXPART other than adding a new field in the COMMAND file. If namelists format is used, the default option is not to use the intermediate files and therefore should only be added explicitly in the COMMAND files when the intermediate format is required. It is implemented for both serial and parallel, GFS and ECMWF data. - [OPTIONAL] |
| 137 | |
| 138 | 5. Implementation of receptor concentration possibility and concentration gridded output in backward runs. These are '''specific CTBTO''' requirements that are activated through a parameter (lctbto) in ''par_mod.f90'' file. - [OPTIONAL] |
| 139 | |
| 140 | |
| 141 | In the process some bugs were encountered and (many) fixed. A list is provided below and tickets for some of them have been created: |
| 142 | |
| 143 | 1. ''verttransform.f90'' routine had a problem in calling “ew” function that was written as a multiplication instead [FIXED] |
| 144 | |
| 145 | 2. ''MPI_IN_PLACE'' is used instead of ''MPI_REDUCE'' if directed during compilation time. This required the modification of ''mpi_mod.f90'', ''unc_mod.f90'', ''outgrid_init.f90'' and the makefiles. This was needed because some issues appeared due to the original MPI_Reduce calls. Now MPI_IN_PLACE is used instead but only if directed during compilation. Otherwise, a safer option is used. [FIXED] |
| 146 | |
| 147 | 3. Flexpart has been modified so that the version string in the header is 256-character static [FIXED] |
| 148 | |
| 149 | 4. Modification of the getting of the size and data of the values array after checking of the dimensions. Section: |
| 150 | |
| 151 | {{{ |
| 152 | ! !get the size and data of the values array |
| 153 | if (isec1(6).ne.-1) then |
| 154 | call grib_get_real4_array(igrib,'values',zsec4,iret) |
| 155 | call grib_check(iret,gribFunction,gribErrorMsg) |
| 156 | endif |
| 157 | }}} |
| 158 | Should be moved downwards in the code [NOT YET FIXED] |
| 159 | |
| 160 | 5. MPI error message stating MPI runs were not possible in backward runs has been removed. [FIXED] |
| 161 | |
| 162 | 6. MPI runs generate duplicated timestamps in the dates file [NOT FIXED] |
| 163 | |
| 164 | |