diff --git a/.github/ci-hpc-config.yml b/.github/ci-hpc-config.yml index 3ae75ea37..3c586db2e 100644 --- a/.github/ci-hpc-config.yml +++ b/.github/ci-hpc-config.yml @@ -7,3 +7,4 @@ build: parallel: 64 cmake_options: - -DENABLE_EXTRA_TESTS=1 + - -DENABLE_ECCODES_OMP_THREADS=1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a4c05cd7..062da488a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,9 +50,9 @@ check_symbol_exists( fdatasync "unistd.h" ECCODES_HAVE_FDATASYNC) check_c_source_compiles( " typedef int foo_t; - static inline foo_t static_foo(){return 0;} - foo_t foo(){return 0;} - int main(int argc, char *argv[]){return 0;} + static inline foo_t static_foo(void){return 0;} + foo_t foo(void){return 0;} + int main(int argc, char *argv[]){ return static_foo(); } " ECCODES_HAVE_C_INLINE ) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index 080a2c777..14fd166dc 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -254,16 +254,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Maximum 10 metre wind gust since previous post-processing -'fg10' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - } #Large-scale precipitation fraction 'lspf' = { discipline = 0 ; @@ -444,11 +434,6 @@ #Total column water 'tcw' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } #Total column vertically-integrated water vapour 'tcwv' = { discipline = 0 ; @@ -492,14 +477,6 @@ parameterCategory = 0 ; parameterNumber = 76 ; } -#Surface net radiation (SW and LW) -'snr' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } #Top net radiation (SW and LW) 'tnr' = { discipline = 0 ; @@ -508,13 +485,6 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Mean sea level pressure -'msl' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; - } #Divergence 'd' = { discipline = 0 ; @@ -1259,15 +1229,9 @@ #Mean wave period of second swell partition 'mwp2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 51 ; - } #Significant wave height of third swell partition 'swh3' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Mean wave direction of third swell partition 'mwd3' = { discipline = 10 ; @@ -1368,18 +1332,6 @@ parameterNumber = 15 ; typeOfStatisticalProcessing = 0 ; } -#Mean sea water temperature in the upper 300 m -'mswt300m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - } #Total column vertically-integrated water enthalpy 'viwe' = { discipline = 0 ; @@ -1481,14 +1433,6 @@ parameterNumber = 59 ; typeOfGeneratingProcess = 9 ; } -#Ammonium aerosol mass mixing ratio -'aermr18' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - is_aerosol = 1 ; - } #Nitrate aerosol optical depth at 550 nm 'niaod550' = { discipline = 0 ; @@ -1574,15 +1518,6 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Ammonium aerosol mass mixing ratio -'aermr18diff' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - typeOfGeneratingProcess = 20 ; - is_aerosol = 1 ; - } #Biogenic secondary organic aerosol mass mixing ratio increment 'aermr19diff' = { discipline = 0 ; @@ -3366,15 +3301,6 @@ scaledValueOfFirstFixedSurface = 200 ; scaleFactorOfFirstFixedSurface = 0 ; } -#100 metre wind speed -'si100' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #Urban cover 'cur' = { discipline = 2 ; @@ -3438,9 +3364,6 @@ #C4 grass cover 'c4gr' = { discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Accumulated freezing rain water equivalent 'fzrawe' = { discipline = 0 ; @@ -3791,13 +3714,6 @@ parameterNumber = 34 ; typeOfFirstFixedSurface = 16 ; } -#Geometric height of atmospheric isothermal level above ground -'haig' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 20 ; - } #Roof temperature 'rft' = { discipline = 0 ; @@ -4660,14 +4576,6 @@ parameterNumber = 42 ; typeOfStatisticalProcessing = 0 ; } -#Mean top net short-wave radiation flux, clear sky -'mtnswrfcs' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; - } #Mean top net long-wave radiation flux, clear sky 'mtnlwrfcs' = { discipline = 0 ; @@ -5932,9 +5840,6 @@ #Total water precipitation 'twatp' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; - } #Total snow precipitation 'tsnowp' = { discipline = 0 ; @@ -5956,12 +5861,6 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; } -#Total snowfall rate water equivalent -'tsrwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; - } #Large scale precipitation rate 'lsprate' = { discipline = 0 ; @@ -6498,12 +6397,6 @@ parameterCategory = 19 ; parameterNumber = 4 ; } -#Icing top -'icit' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 5 ; - } #Icing base 'icib' = { discipline = 0 ; @@ -8687,15 +8580,6 @@ #Wind stress at sea surface 'wst_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } #Wind speed at 10m above sea surface 'ws10_sea' = { discipline = 0 ; @@ -9833,16 +9717,6 @@ #Time-mean wind stress at sea surface 'avg_wst_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } #Time-mean wind speed at 10m above sea surface 'avg_10ws_sea' = { discipline = 0 ; @@ -9947,45 +9821,6 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-accumulated net short wave radiation at sea surface -'acc_ssr_sea' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated total precipitation at sea surface -'tp_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated snow precipitation at sea surface -'sn_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } #Virtual temperature 'vtmp' = { discipline = 0 ; @@ -10871,15 +10706,6 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#10 metre wind direction -'dwi' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #2D wave spectra (single) 'd2fd' = { discipline = 10 ; @@ -11096,14 +10922,6 @@ parameterNumber = 40 ; typeOfStatisticalProcessing = 1 ; } -#Time-mean surface net radiation flux (SW and LW) -'msnrf' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; - } #Surface runoff 'sro' = { discipline = 2 ; @@ -11421,3 +11239,76 @@ scaledValueOfFirstFixedSurface = 100 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Time-mean total lightning flash density +'avg_litoti' = { + discipline = 0 ; + parameterCategory = 17 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-maximum convective available potential energy +'max_cape' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 2 metre temperature +'max_2t' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 10 metre wind gust +'max_i10fg' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum convective available potential energy shear +'max_capes' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum total precipitation rate +'max_tprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-minimum 2 metre temperature +'min_2t' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 3 ; + } +#Time-minimum total precipitation rate +'min_tprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 3 ; + } diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def index 6ea042564..4870b8d24 100644 --- a/definitions/grib2/localConcepts/ecmf/cfVarName.def +++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def @@ -917,12 +917,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Accumulated ice water tendency -'aiw' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 249 ; - } #Ice age 'ice' = { discipline = 192 ; @@ -1175,12 +1169,6 @@ parameterCategory = 200 ; parameterNumber = 48 ; } -#10 metre wind gust difference -'fgdiff10' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 49 ; - } #Large-scale precipitation fraction difference 'lspfdiff' = { discipline = 192 ; @@ -1715,12 +1703,6 @@ parameterCategory = 200 ; parameterNumber = 148 ; } -#Surface net radiation difference -'snrdiff' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 149 ; - } #Top net radiation difference 'tnrdiff' = { discipline = 192 ; @@ -2293,12 +2275,6 @@ parameterCategory = 200 ; parameterNumber = 248 ; } -#Accumulated ice water tendency difference -'aiwdiff' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 249 ; - } #Ice age difference 'icediff' = { discipline = 192 ; @@ -3332,12 +3308,6 @@ parameterNumber = 48 ; } #Experimental product -'p49.212' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 49 ; - } -#Experimental product 'p50.212' = { discipline = 192 ; parameterCategory = 212 ; @@ -3932,12 +3902,6 @@ parameterNumber = 148 ; } #Experimental product -'p149.212' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 149 ; - } -#Experimental product 'p150.212' = { discipline = 192 ; parameterCategory = 212 ; @@ -4532,12 +4496,6 @@ parameterNumber = 248 ; } #Experimental product -'p249.212' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 249 ; - } -#Experimental product 'p250.212' = { discipline = 192 ; parameterCategory = 212 ; @@ -4890,13 +4848,6 @@ discipline = 192 ; parameterCategory = 213 ; parameterNumber = 148 ; - } -#Random pattern 49 for SPP scheme -'spp49' = { - discipline = 192 ; - parameterCategory = 213 ; - parameterNumber = 149 ; - } #Random pattern 50 for SPP scheme 'spp50' = { discipline = 192 ; @@ -5617,12 +5568,6 @@ parameterCategory = 214 ; parameterNumber = 48 ; } -#Clear-sky surface UV spectral flux (385-390 nm) -'uvsflxcs385390' = { - discipline = 192 ; - parameterCategory = 214 ; - parameterNumber = 49 ; - } #Clear-sky surface UV spectral flux (390-395 nm) 'uvsflxcs390395' = { discipline = 192 ; @@ -5929,12 +5874,6 @@ parameterCategory = 215 ; parameterNumber = 48 ; } -#Source/gain of hydrophobic organic matter aerosol -'aersrcomhphob' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 49 ; - } #Source/gain of hydrophilic organic matter aerosol 'aersrcomhphil' = { discipline = 192 ; @@ -6529,12 +6468,6 @@ parameterCategory = 215 ; parameterNumber = 148 ; } -#Single scattering albedo at 1640 nm -'ssa1640' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 149 ; - } #Asymmetry factor at 340 nm 'asymmetry340' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def index 010df6079..93e45a287 100644 --- a/definitions/grib2/localConcepts/ecmf/name.def +++ b/definitions/grib2/localConcepts/ecmf/name.def @@ -917,12 +917,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Accumulated ice water tendency -'Accumulated ice water tendency' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 249 ; - } #Ice age 'Ice age' = { discipline = 192 ; @@ -1175,12 +1169,6 @@ parameterCategory = 200 ; parameterNumber = 48 ; } -#10 metre wind gust difference -'10 metre wind gust difference' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 49 ; - } #Large-scale precipitation fraction difference 'Large-scale precipitation fraction difference' = { discipline = 192 ; @@ -1715,12 +1703,6 @@ parameterCategory = 200 ; parameterNumber = 148 ; } -#Surface net radiation difference -'Surface net radiation difference' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 149 ; - } #Top net radiation difference 'Top net radiation difference' = { discipline = 192 ; @@ -2293,12 +2275,6 @@ parameterCategory = 200 ; parameterNumber = 248 ; } -#Accumulated ice water tendency difference -'Accumulated ice water tendency difference' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 249 ; - } #Ice age difference 'Ice age difference' = { discipline = 192 ; @@ -3332,12 +3308,6 @@ parameterNumber = 48 ; } #Experimental product -'Experimental product' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 49 ; - } -#Experimental product 'Experimental product' = { discipline = 192 ; parameterCategory = 212 ; @@ -3932,12 +3902,6 @@ parameterNumber = 148 ; } #Experimental product -'Experimental product' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 149 ; - } -#Experimental product 'Experimental product' = { discipline = 192 ; parameterCategory = 212 ; @@ -4532,12 +4496,6 @@ parameterNumber = 248 ; } #Experimental product -'Experimental product' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 249 ; - } -#Experimental product 'Experimental product' = { discipline = 192 ; parameterCategory = 212 ; @@ -4890,13 +4848,6 @@ discipline = 192 ; parameterCategory = 213 ; parameterNumber = 148 ; - } -#Random pattern 49 for SPP scheme -'Random pattern 49 for SPP scheme' = { - discipline = 192 ; - parameterCategory = 213 ; - parameterNumber = 149 ; - } #Random pattern 50 for SPP scheme 'Random pattern 50 for SPP scheme' = { discipline = 192 ; @@ -5617,12 +5568,6 @@ parameterCategory = 214 ; parameterNumber = 48 ; } -#Clear-sky surface UV spectral flux (385-390 nm) -'Clear-sky surface UV spectral flux (385-390 nm)' = { - discipline = 192 ; - parameterCategory = 214 ; - parameterNumber = 49 ; - } #Clear-sky surface UV spectral flux (390-395 nm) 'Clear-sky surface UV spectral flux (390-395 nm)' = { discipline = 192 ; @@ -5929,12 +5874,6 @@ parameterCategory = 215 ; parameterNumber = 48 ; } -#Source/gain of hydrophobic organic matter aerosol -'Source/gain of hydrophobic organic matter aerosol' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 49 ; - } #Source/gain of hydrophilic organic matter aerosol 'Source/gain of hydrophilic organic matter aerosol' = { discipline = 192 ; @@ -6529,12 +6468,6 @@ parameterCategory = 215 ; parameterNumber = 148 ; } -#Single scattering albedo at 1640 nm -'Single scattering albedo at 1640 nm' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 149 ; - } #Asymmetry factor at 340 nm 'Asymmetry factor at 340 nm' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def index 9206e9a03..88d3f8536 100644 --- a/definitions/grib2/localConcepts/ecmf/paramId.def +++ b/definitions/grib2/localConcepts/ecmf/paramId.def @@ -917,12 +917,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Accumulated ice water tendency -'249' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 249 ; - } #Ice age '250' = { discipline = 192 ; @@ -1175,12 +1169,6 @@ parameterCategory = 200 ; parameterNumber = 48 ; } -#10 metre wind gust difference -'200049' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 49 ; - } #Large-scale precipitation fraction difference '200050' = { discipline = 192 ; @@ -1715,12 +1703,6 @@ parameterCategory = 200 ; parameterNumber = 148 ; } -#Surface net radiation difference -'200149' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 149 ; - } #Top net radiation difference '200150' = { discipline = 192 ; @@ -2293,12 +2275,6 @@ parameterCategory = 200 ; parameterNumber = 248 ; } -#Accumulated ice water tendency difference -'200249' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 249 ; - } #Ice age difference '200250' = { discipline = 192 ; @@ -3332,12 +3308,6 @@ parameterNumber = 48 ; } #Experimental product -'212049' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 49 ; - } -#Experimental product '212050' = { discipline = 192 ; parameterCategory = 212 ; @@ -3932,12 +3902,6 @@ parameterNumber = 148 ; } #Experimental product -'212149' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 149 ; - } -#Experimental product '212150' = { discipline = 192 ; parameterCategory = 212 ; @@ -4532,12 +4496,6 @@ parameterNumber = 248 ; } #Experimental product -'212249' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 249 ; - } -#Experimental product '212250' = { discipline = 192 ; parameterCategory = 212 ; @@ -4890,13 +4848,6 @@ discipline = 192 ; parameterCategory = 213 ; parameterNumber = 148 ; - } -#Random pattern 49 for SPP scheme -'213149' = { - discipline = 192 ; - parameterCategory = 213 ; - parameterNumber = 149 ; - } #Random pattern 50 for SPP scheme '213150' = { discipline = 192 ; @@ -5617,12 +5568,6 @@ parameterCategory = 214 ; parameterNumber = 48 ; } -#Clear-sky surface UV spectral flux (385-390 nm) -'214049' = { - discipline = 192 ; - parameterCategory = 214 ; - parameterNumber = 49 ; - } #Clear-sky surface UV spectral flux (390-395 nm) '214050' = { discipline = 192 ; @@ -5929,12 +5874,6 @@ parameterCategory = 215 ; parameterNumber = 48 ; } -#Source/gain of hydrophobic organic matter aerosol -'215049' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 49 ; - } #Source/gain of hydrophilic organic matter aerosol '215050' = { discipline = 192 ; @@ -6529,12 +6468,6 @@ parameterCategory = 215 ; parameterNumber = 148 ; } -#Single scattering albedo at 1640 nm -'215149' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 149 ; - } #Asymmetry factor at 340 nm '215150' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def index 72008f885..dd178c2ff 100644 --- a/definitions/grib2/localConcepts/ecmf/shortName.def +++ b/definitions/grib2/localConcepts/ecmf/shortName.def @@ -917,12 +917,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Accumulated ice water tendency -'aiw' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 249 ; - } #Ice age 'ice' = { discipline = 192 ; @@ -1175,12 +1169,6 @@ parameterCategory = 200 ; parameterNumber = 48 ; } -#10 metre wind gust difference -'10fgdiff' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 49 ; - } #Large-scale precipitation fraction difference 'lspfdiff' = { discipline = 192 ; @@ -1715,12 +1703,6 @@ parameterCategory = 200 ; parameterNumber = 148 ; } -#Surface net radiation difference -'snrdiff' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 149 ; - } #Top net radiation difference 'tnrdiff' = { discipline = 192 ; @@ -2293,12 +2275,6 @@ parameterCategory = 200 ; parameterNumber = 248 ; } -#Accumulated ice water tendency difference -'aiwdiff' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 249 ; - } #Ice age difference 'icediff' = { discipline = 192 ; @@ -3332,12 +3308,6 @@ parameterNumber = 48 ; } #Experimental product -'~' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 49 ; - } -#Experimental product '~' = { discipline = 192 ; parameterCategory = 212 ; @@ -3932,12 +3902,6 @@ parameterNumber = 148 ; } #Experimental product -'~' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 149 ; - } -#Experimental product '~' = { discipline = 192 ; parameterCategory = 212 ; @@ -4532,12 +4496,6 @@ parameterNumber = 248 ; } #Experimental product -'~' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 249 ; - } -#Experimental product '~' = { discipline = 192 ; parameterCategory = 212 ; @@ -4890,13 +4848,6 @@ discipline = 192 ; parameterCategory = 213 ; parameterNumber = 148 ; - } -#Random pattern 49 for SPP scheme -'spp49' = { - discipline = 192 ; - parameterCategory = 213 ; - parameterNumber = 149 ; - } #Random pattern 50 for SPP scheme 'spp50' = { discipline = 192 ; @@ -5617,12 +5568,6 @@ parameterCategory = 214 ; parameterNumber = 48 ; } -#Clear-sky surface UV spectral flux (385-390 nm) -'uvsflxcs385390' = { - discipline = 192 ; - parameterCategory = 214 ; - parameterNumber = 49 ; - } #Clear-sky surface UV spectral flux (390-395 nm) 'uvsflxcs390395' = { discipline = 192 ; @@ -5929,12 +5874,6 @@ parameterCategory = 215 ; parameterNumber = 48 ; } -#Source/gain of hydrophobic organic matter aerosol -'aersrcomhphob' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 49 ; - } #Source/gain of hydrophilic organic matter aerosol 'aersrcomhphil' = { discipline = 192 ; @@ -6529,12 +6468,6 @@ parameterCategory = 215 ; parameterNumber = 148 ; } -#Single scattering albedo at 1640 nm -'ssa1640' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 149 ; - } #Asymmetry factor at 340 nm 'asymmetry340' = { discipline = 192 ; diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def index 817c45f94..fc14578ab 100644 --- a/definitions/grib2/localConcepts/ecmf/units.def +++ b/definitions/grib2/localConcepts/ecmf/units.def @@ -917,12 +917,6 @@ parameterCategory = 19 ; parameterNumber = 193 ; } -#Accumulated ice water tendency -'(-1 to 1)' = { - discipline = 192 ; - parameterCategory = 128 ; - parameterNumber = 249 ; - } #Ice age '(0 - 1)' = { discipline = 192 ; @@ -1175,12 +1169,6 @@ parameterCategory = 200 ; parameterNumber = 48 ; } -#10 metre wind gust difference -'m s**-1' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 49 ; - } #Large-scale precipitation fraction difference 's' = { discipline = 192 ; @@ -1715,12 +1703,6 @@ parameterCategory = 200 ; parameterNumber = 148 ; } -#Surface net radiation difference -'J m**-2' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 149 ; - } #Top net radiation difference '~' = { discipline = 192 ; @@ -2293,12 +2275,6 @@ parameterCategory = 200 ; parameterNumber = 248 ; } -#Accumulated ice water tendency difference -'(-1 to 1)' = { - discipline = 192 ; - parameterCategory = 200 ; - parameterNumber = 249 ; - } #Ice age difference '(0 - 1)' = { discipline = 192 ; @@ -3332,12 +3308,6 @@ parameterNumber = 48 ; } #Experimental product -'~' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 49 ; - } -#Experimental product '~' = { discipline = 192 ; parameterCategory = 212 ; @@ -3932,12 +3902,6 @@ parameterNumber = 148 ; } #Experimental product -'~' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 149 ; - } -#Experimental product '~' = { discipline = 192 ; parameterCategory = 212 ; @@ -4532,12 +4496,6 @@ parameterNumber = 248 ; } #Experimental product -'~' = { - discipline = 192 ; - parameterCategory = 212 ; - parameterNumber = 249 ; - } -#Experimental product '~' = { discipline = 192 ; parameterCategory = 212 ; @@ -4890,13 +4848,6 @@ discipline = 192 ; parameterCategory = 213 ; parameterNumber = 148 ; - } -#Random pattern 49 for SPP scheme -'dimensionless' = { - discipline = 192 ; - parameterCategory = 213 ; - parameterNumber = 149 ; - } #Random pattern 50 for SPP scheme 'dimensionless' = { discipline = 192 ; @@ -5617,12 +5568,6 @@ parameterCategory = 214 ; parameterNumber = 48 ; } -#Clear-sky surface UV spectral flux (385-390 nm) -'W m**-2' = { - discipline = 192 ; - parameterCategory = 214 ; - parameterNumber = 49 ; - } #Clear-sky surface UV spectral flux (390-395 nm) 'W m**-2' = { discipline = 192 ; @@ -5929,12 +5874,6 @@ parameterCategory = 215 ; parameterNumber = 48 ; } -#Source/gain of hydrophobic organic matter aerosol -'kg m**-2 s**-1' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 49 ; - } #Source/gain of hydrophilic organic matter aerosol 'kg m**-2 s**-1' = { discipline = 192 ; @@ -6529,12 +6468,6 @@ parameterCategory = 215 ; parameterNumber = 148 ; } -#Single scattering albedo at 1640 nm -'(0 - 1)' = { - discipline = 192 ; - parameterCategory = 215 ; - parameterNumber = 149 ; - } #Asymmetry factor at 340 nm '~' = { discipline = 192 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 6d70c4fda..4a633e5a4 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -254,16 +254,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Maximum 10 metre wind gust since previous post-processing -'Maximum 10 metre wind gust since previous post-processing' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - } #Large-scale precipitation fraction 'Large-scale precipitation fraction' = { discipline = 0 ; @@ -444,11 +434,6 @@ #Total column water 'Total column water' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } #Total column vertically-integrated water vapour 'Total column vertically-integrated water vapour' = { discipline = 0 ; @@ -492,14 +477,6 @@ parameterCategory = 0 ; parameterNumber = 76 ; } -#Surface net radiation (SW and LW) -'Surface net radiation (SW and LW)' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } #Top net radiation (SW and LW) 'Top net radiation (SW and LW)' = { discipline = 0 ; @@ -508,13 +485,6 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Mean sea level pressure -'Mean sea level pressure' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; - } #Divergence 'Divergence' = { discipline = 0 ; @@ -1259,15 +1229,9 @@ #Mean wave period of second swell partition 'Mean wave period of second swell partition' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 51 ; - } #Significant wave height of third swell partition 'Significant wave height of third swell partition' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Mean wave direction of third swell partition 'Mean wave direction of third swell partition' = { discipline = 10 ; @@ -1368,18 +1332,6 @@ parameterNumber = 15 ; typeOfStatisticalProcessing = 0 ; } -#Mean sea water temperature in the upper 300 m -'Mean sea water temperature in the upper 300 m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - } #Total column vertically-integrated water enthalpy 'Total column vertically-integrated water enthalpy' = { discipline = 0 ; @@ -1481,14 +1433,6 @@ parameterNumber = 59 ; typeOfGeneratingProcess = 9 ; } -#Ammonium aerosol mass mixing ratio -'Ammonium aerosol mass mixing ratio' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - is_aerosol = 1 ; - } #Nitrate aerosol optical depth at 550 nm 'Nitrate aerosol optical depth at 550 nm' = { discipline = 0 ; @@ -1574,15 +1518,6 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Ammonium aerosol mass mixing ratio -'Ammonium aerosol mass mixing ratio' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - typeOfGeneratingProcess = 20 ; - is_aerosol = 1 ; - } #Biogenic secondary organic aerosol mass mixing ratio increment 'Biogenic secondary organic aerosol mass mixing ratio increment' = { discipline = 0 ; @@ -3366,15 +3301,6 @@ scaledValueOfFirstFixedSurface = 200 ; scaleFactorOfFirstFixedSurface = 0 ; } -#100 metre wind speed -'100 metre wind speed' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #Urban cover 'Urban cover' = { discipline = 2 ; @@ -3438,9 +3364,6 @@ #C4 grass cover 'C4 grass cover' = { discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Accumulated freezing rain water equivalent 'Accumulated freezing rain water equivalent' = { discipline = 0 ; @@ -3791,13 +3714,6 @@ parameterNumber = 34 ; typeOfFirstFixedSurface = 16 ; } -#Geometric height of atmospheric isothermal level above ground -'Geometric height of atmospheric isothermal level above ground' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 20 ; - } #Roof temperature 'Roof temperature' = { discipline = 0 ; @@ -4660,14 +4576,6 @@ parameterNumber = 42 ; typeOfStatisticalProcessing = 0 ; } -#Mean top net short-wave radiation flux, clear sky -'Mean top net short-wave radiation flux, clear sky' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; - } #Mean top net long-wave radiation flux, clear sky 'Mean top net long-wave radiation flux, clear sky' = { discipline = 0 ; @@ -5932,9 +5840,6 @@ #Total water precipitation 'Total water precipitation' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; - } #Total snow precipitation 'Total snow precipitation' = { discipline = 0 ; @@ -5956,12 +5861,6 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; } -#Total snowfall rate water equivalent -'Total snowfall rate water equivalent' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; - } #Large scale precipitation rate 'Large scale precipitation rate' = { discipline = 0 ; @@ -6498,12 +6397,6 @@ parameterCategory = 19 ; parameterNumber = 4 ; } -#Icing top -'Icing top' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 5 ; - } #Icing base 'Icing base' = { discipline = 0 ; @@ -8687,15 +8580,6 @@ #Wind stress at sea surface 'Wind stress at sea surface' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } #Wind speed at 10m above sea surface 'Wind speed at 10m above sea surface' = { discipline = 0 ; @@ -9833,16 +9717,6 @@ #Time-mean wind stress at sea surface 'Time-mean wind stress at sea surface' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } #Time-mean wind speed at 10m above sea surface 'Time-mean wind speed at 10m above sea surface' = { discipline = 0 ; @@ -9947,45 +9821,6 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-accumulated net short wave radiation at sea surface -'Time-accumulated net short wave radiation at sea surface' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated total precipitation at sea surface -'Time-accumulated total precipitation at sea surface' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated snow precipitation at sea surface -'Time-accumulated snow precipitation at sea surface' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } #Virtual temperature 'Virtual temperature' = { discipline = 0 ; @@ -10871,15 +10706,6 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#10 metre wind direction -'10 metre wind direction' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #2D wave spectra (single) '2D wave spectra (single)' = { discipline = 10 ; @@ -11096,14 +10922,6 @@ parameterNumber = 40 ; typeOfStatisticalProcessing = 1 ; } -#Time-mean surface net radiation flux (SW and LW) -'Time-mean surface net radiation flux (SW and LW)' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; - } #Surface runoff 'Surface runoff' = { discipline = 2 ; @@ -11421,3 +11239,76 @@ scaledValueOfFirstFixedSurface = 100 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Time-mean total lightning flash density +'Time-mean total lightning flash density' = { + discipline = 0 ; + parameterCategory = 17 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-maximum convective available potential energy +'Time-maximum convective available potential energy' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 2 metre temperature +'Time-maximum 2 metre temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 10 metre wind gust +'Time-maximum 10 metre wind gust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum convective available potential energy shear +'Time-maximum convective available potential energy shear' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum total precipitation rate +'Time-maximum total precipitation rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-minimum 2 metre temperature +'Time-minimum 2 metre temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 3 ; + } +#Time-minimum total precipitation rate +'Time-minimum total precipitation rate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 3 ; + } diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index 64825e28c..1874ef9bb 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -254,16 +254,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Maximum 10 metre wind gust since previous post-processing -'49' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - } #Large-scale precipitation fraction '50' = { discipline = 0 ; @@ -444,11 +434,6 @@ #Total column water '136' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } #Total column vertically-integrated water vapour '137' = { discipline = 0 ; @@ -492,14 +477,6 @@ parameterCategory = 0 ; parameterNumber = 76 ; } -#Surface net radiation (SW and LW) -'149' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } #Top net radiation (SW and LW) '150' = { discipline = 0 ; @@ -508,13 +485,6 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Mean sea level pressure -'151' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; - } #Divergence '155' = { discipline = 0 ; @@ -1259,15 +1229,9 @@ #Mean wave period of second swell partition '140126' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 51 ; - } #Significant wave height of third swell partition '140127' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Mean wave direction of third swell partition '140128' = { discipline = 10 ; @@ -1368,18 +1332,6 @@ parameterNumber = 15 ; typeOfStatisticalProcessing = 0 ; } -#Mean sea water temperature in the upper 300 m -'151127' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - } #Total column vertically-integrated water enthalpy '162093' = { discipline = 0 ; @@ -1481,14 +1433,6 @@ parameterNumber = 59 ; typeOfGeneratingProcess = 9 ; } -#Ammonium aerosol mass mixing ratio -'210249' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - is_aerosol = 1 ; - } #Nitrate aerosol optical depth at 550 nm '210250' = { discipline = 0 ; @@ -1574,15 +1518,6 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Ammonium aerosol mass mixing ratio -'211249' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - typeOfGeneratingProcess = 20 ; - is_aerosol = 1 ; - } #Biogenic secondary organic aerosol mass mixing ratio increment '211252' = { discipline = 0 ; @@ -3366,15 +3301,6 @@ scaledValueOfFirstFixedSurface = 200 ; scaleFactorOfFirstFixedSurface = 0 ; } -#100 metre wind speed -'228249' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #Urban cover '229001' = { discipline = 2 ; @@ -3438,9 +3364,6 @@ #C4 grass cover '229011' = { discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Accumulated freezing rain water equivalent '231001' = { discipline = 0 ; @@ -3791,13 +3714,6 @@ parameterNumber = 34 ; typeOfFirstFixedSurface = 16 ; } -#Geometric height of atmospheric isothermal level above ground -'231049' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 20 ; - } #Roof temperature '231050' = { discipline = 0 ; @@ -4660,14 +4576,6 @@ parameterNumber = 42 ; typeOfStatisticalProcessing = 0 ; } -#Mean top net short-wave radiation flux, clear sky -'235049' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; - } #Mean top net long-wave radiation flux, clear sky '235050' = { discipline = 0 ; @@ -5932,9 +5840,6 @@ #Total water precipitation '260045' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; - } #Total snow precipitation '260046' = { discipline = 0 ; @@ -5956,12 +5861,6 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; } -#Total snowfall rate water equivalent -'260049' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; - } #Large scale precipitation rate '260050' = { discipline = 0 ; @@ -6498,12 +6397,6 @@ parameterCategory = 19 ; parameterNumber = 4 ; } -#Icing top -'260149' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 5 ; - } #Icing base '260150' = { discipline = 0 ; @@ -8687,15 +8580,6 @@ #Wind stress at sea surface '262901' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } #Wind speed at 10m above sea surface '262902' = { discipline = 0 ; @@ -9833,16 +9717,6 @@ #Time-mean wind stress at sea surface '263901' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } #Time-mean wind speed at 10m above sea surface '263902' = { discipline = 0 ; @@ -9947,45 +9821,6 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-accumulated net short wave radiation at sea surface -'264900' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated total precipitation at sea surface -'264904' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated snow precipitation at sea surface -'264905' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } #Virtual temperature '300012' = { discipline = 0 ; @@ -10871,15 +10706,6 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#10 metre wind direction -'140249' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #2D wave spectra (single) '140251' = { discipline = 10 ; @@ -11096,14 +10922,6 @@ parameterNumber = 40 ; typeOfStatisticalProcessing = 1 ; } -#Time-mean surface net radiation flux (SW and LW) -'172149' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; - } #Surface runoff '174008' = { discipline = 2 ; @@ -11421,3 +11239,76 @@ scaledValueOfFirstFixedSurface = 100 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Time-mean total lightning flash density +'235326' = { + discipline = 0 ; + parameterCategory = 17 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-maximum convective available potential energy +'237287' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 2 metre temperature +'237167' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 10 metre wind gust +'237318' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum convective available potential energy shear +'237321' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum total precipitation rate +'237055' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-minimum 2 metre temperature +'238167' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 3 ; + } +#Time-minimum total precipitation rate +'238055' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 3 ; + } diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def index cda4986f9..f73231b27 100644 --- a/definitions/grib2/section.4.def +++ b/definitions/grib2/section.4.def @@ -51,7 +51,7 @@ concept datasetForLocal(unknown) { "unknown" = { dummy=1; } } -if (datasetForLocal isnot "unknown") { +if (!(datasetForLocal is "unknown")) { constant conceptsDir2 = "grib2/localConcepts/[datasetForLocal]": hidden; constant conceptsDir1 = "grib2": hidden; } @@ -127,4 +127,7 @@ if (paramId >= 140000 && paramId < 141000 && alias mars.paramtype = paramTypeWave; } +template timeproc "grib2/timeproc.def"; +alias mars.timeproc = timeproc ; + meta md5Section4 md5(offsetSection4,section4Length); diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 558b77632..5229214eb 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -254,16 +254,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Maximum 10 metre wind gust since previous post-processing -'10fg' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - } #Large-scale precipitation fraction 'lspf' = { discipline = 0 ; @@ -444,11 +434,6 @@ #Total column water 'tcw' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } #Total column vertically-integrated water vapour 'tcwv' = { discipline = 0 ; @@ -492,14 +477,6 @@ parameterCategory = 0 ; parameterNumber = 76 ; } -#Surface net radiation (SW and LW) -'snr' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } #Top net radiation (SW and LW) 'tnr' = { discipline = 0 ; @@ -508,13 +485,6 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Mean sea level pressure -'msl' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; - } #Divergence 'd' = { discipline = 0 ; @@ -1259,15 +1229,9 @@ #Mean wave period of second swell partition 'mwp2' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 51 ; - } #Significant wave height of third swell partition 'swh3' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Mean wave direction of third swell partition 'mwd3' = { discipline = 10 ; @@ -1368,18 +1332,6 @@ parameterNumber = 15 ; typeOfStatisticalProcessing = 0 ; } -#Mean sea water temperature in the upper 300 m -'mswt300m' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - } #Total column vertically-integrated water enthalpy 'viwe' = { discipline = 0 ; @@ -1481,14 +1433,6 @@ parameterNumber = 59 ; typeOfGeneratingProcess = 9 ; } -#Ammonium aerosol mass mixing ratio -'aermr18' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - is_aerosol = 1 ; - } #Nitrate aerosol optical depth at 550 nm 'niaod550' = { discipline = 0 ; @@ -1574,15 +1518,6 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Ammonium aerosol mass mixing ratio -'aermr18diff' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - typeOfGeneratingProcess = 20 ; - is_aerosol = 1 ; - } #Biogenic secondary organic aerosol mass mixing ratio increment 'aermr19diff' = { discipline = 0 ; @@ -3366,15 +3301,6 @@ scaledValueOfFirstFixedSurface = 200 ; scaleFactorOfFirstFixedSurface = 0 ; } -#100 metre wind speed -'100si' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #Urban cover 'cur' = { discipline = 2 ; @@ -3438,9 +3364,6 @@ #C4 grass cover 'c4gr' = { discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Accumulated freezing rain water equivalent 'fzrawe' = { discipline = 0 ; @@ -3791,13 +3714,6 @@ parameterNumber = 34 ; typeOfFirstFixedSurface = 16 ; } -#Geometric height of atmospheric isothermal level above ground -'haig' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 20 ; - } #Roof temperature 'rft' = { discipline = 0 ; @@ -4660,14 +4576,6 @@ parameterNumber = 42 ; typeOfStatisticalProcessing = 0 ; } -#Mean top net short-wave radiation flux, clear sky -'mtnswrfcs' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; - } #Mean top net long-wave radiation flux, clear sky 'mtnlwrfcs' = { discipline = 0 ; @@ -5932,9 +5840,6 @@ #Total water precipitation 'twatp' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; - } #Total snow precipitation 'tsnowp' = { discipline = 0 ; @@ -5956,12 +5861,6 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; } -#Total snowfall rate water equivalent -'tsrwe' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; - } #Large scale precipitation rate 'lsprate' = { discipline = 0 ; @@ -6498,12 +6397,6 @@ parameterCategory = 19 ; parameterNumber = 4 ; } -#Icing top -'icit' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 5 ; - } #Icing base 'icib' = { discipline = 0 ; @@ -8687,15 +8580,6 @@ #Wind stress at sea surface 'wst_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } #Wind speed at 10m above sea surface '10ws_sea' = { discipline = 0 ; @@ -9833,16 +9717,6 @@ #Time-mean wind stress at sea surface 'avg_wst_sea' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } #Time-mean wind speed at 10m above sea surface 'avg_10ws_sea' = { discipline = 0 ; @@ -9947,45 +9821,6 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-accumulated net short wave radiation at sea surface -'acc_ssr_sea' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated total precipitation at sea surface -'tp_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated snow precipitation at sea surface -'sn_sea' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } #Virtual temperature 'vtmp' = { discipline = 0 ; @@ -10871,15 +10706,6 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#10 metre wind direction -'dwi' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #2D wave spectra (single) '2dfd' = { discipline = 10 ; @@ -11096,14 +10922,6 @@ parameterNumber = 40 ; typeOfStatisticalProcessing = 1 ; } -#Time-mean surface net radiation flux (SW and LW) -'msnrf' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; - } #Surface runoff 'sro' = { discipline = 2 ; @@ -11421,3 +11239,76 @@ scaledValueOfFirstFixedSurface = 100 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Time-mean total lightning flash density +'avg_litoti' = { + discipline = 0 ; + parameterCategory = 17 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-maximum convective available potential energy +'max_cape' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 2 metre temperature +'max_2t' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 10 metre wind gust +'max_i10fg' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum convective available potential energy shear +'max_capes' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum total precipitation rate +'max_tprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-minimum 2 metre temperature +'min_2t' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 3 ; + } +#Time-minimum total precipitation rate +'min_tprate' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 3 ; + } diff --git a/definitions/grib2/timeproc.def b/definitions/grib2/timeproc.def new file mode 100644 index 000000000..f84460cbf --- /dev/null +++ b/definitions/grib2/timeproc.def @@ -0,0 +1,46 @@ +concept timeproc { + # either instantaneous data or processing is specified by mars stream + "point-in-time" = {stepType="instant";} + "point-in-time" = {stream="mnth"; numberOfTimeRange=1;} + "point-in-time" = {stream="mmsa"; numberOfTimeRange=1;} + "point-in-time" = {stream="msmm"; numberOfTimeRange=1;} + # + ### Accumulations ### + # we need to do this dataset dependent, in some datasets we might have + # hourly rolling accumulations and we don't want to have the first in a different bucket + ## since start accumulation must have forecastTime=0 + # hourly + "since-start" = {typeOfStatisticalProcessing=1; forecastTime=0; indicatorOfUnitOfTimeRange=1;} + # 24 hourly time unit + "since-start" = {typeOfStatisticalProcessing=1; forecastTime=0; indicatorOfUnitOfTimeRange=2;} + ## 1h rolling accumulation + "1h" = {typeOfStatisticalProcessing=1; indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 1; class=d1;} + ## 24h rolling accumulation + "24h" = {typeOfStatisticalProcessing=1; indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 24; class=d1;} + "24h" = {typeOfStatisticalProcessing=1; indicatorOfUnitOfTimeRange=2; lengthOfTimeRange = 1; class=d1;} + ### end Accumulations ### + # + ### mean/min/max/stdev ### + "1h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 1;} + "3h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 3;} + "3h" = {indicatorOfUnitOfTimeRange=10; lengthOfTimeRange = 1;} + "6h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 6;} + "6h" = {indicatorOfUnitOfTimeRange=11; lengthOfTimeRange = 1;} + "12h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 12;} + "12h" = {indicatorOfUnitOfTimeRange=12; lengthOfTimeRange = 1;} + "18h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 18;} + "24h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 24;} + "24h" = {indicatorOfUnitOfTimeRange=2; lengthOfTimeRange = 1;} + "7 days" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 168;} + # 28 days + "month" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 672;} + # 29 days + "month" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 696;} + # 30 days + "month" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 720;} + # 31 days + "month" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 744;} + # time unit month + "month" = {indicatorOfUnitOfTimeRange=3; lengthOfTimeRange = 1;} + ### end mean/min/max/stdev ### +} diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 7139afe47..2e3eef763 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -254,16 +254,6 @@ typeOfFirstFixedSurface = 1 ; typeOfStatisticalProcessing = 1 ; } -#Maximum 10 metre wind gust since previous post-processing -'m s**-1' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 22 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - typeOfStatisticalProcessing = 2 ; - } #Large-scale precipitation fraction 's' = { discipline = 0 ; @@ -444,11 +434,6 @@ #Total column water 'kg m**-2' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 51 ; - typeOfFirstFixedSurface = 1 ; - typeOfSecondFixedSurface = 8 ; - } #Total column vertically-integrated water vapour 'kg m**-2' = { discipline = 0 ; @@ -492,14 +477,6 @@ parameterCategory = 0 ; parameterNumber = 76 ; } -#Surface net radiation (SW and LW) -'J m**-2' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 1 ; - } #Top net radiation (SW and LW) 'J m**-2' = { discipline = 0 ; @@ -508,13 +485,6 @@ typeOfFirstFixedSurface = 8 ; typeOfStatisticalProcessing = 1 ; } -#Mean sea level pressure -'Pa' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 0 ; - typeOfFirstFixedSurface = 101 ; - } #Divergence 's**-1' = { discipline = 0 ; @@ -1259,15 +1229,9 @@ #Mean wave period of second swell partition 's' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 51 ; - } #Significant wave height of third swell partition 'm' = { discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Mean wave direction of third swell partition 'degrees' = { discipline = 10 ; @@ -1368,18 +1332,6 @@ parameterNumber = 15 ; typeOfStatisticalProcessing = 0 ; } -#Mean sea water temperature in the upper 300 m -'K' = { - discipline = 10 ; - parameterCategory = 4 ; - parameterNumber = 15 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 160 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = 300 ; - scaleFactorOfSecondFixedSurface = 0 ; - } #Total column vertically-integrated water enthalpy 'J m**-2' = { discipline = 0 ; @@ -1481,14 +1433,6 @@ parameterNumber = 59 ; typeOfGeneratingProcess = 9 ; } -#Ammonium aerosol mass mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - is_aerosol = 1 ; - } #Nitrate aerosol optical depth at 550 nm 'dimensionless' = { discipline = 0 ; @@ -1574,15 +1518,6 @@ is_chemical_srcsink = 1 ; sourceSinkChemicalPhysicalProcess = 7 ; } -#Ammonium aerosol mass mixing ratio -'kg kg**-1' = { - discipline = 0 ; - parameterCategory = 20 ; - parameterNumber = 2 ; - aerosolType = 62003 ; - typeOfGeneratingProcess = 20 ; - is_aerosol = 1 ; - } #Biogenic secondary organic aerosol mass mixing ratio increment 'kg kg**-1' = { discipline = 0 ; @@ -3366,15 +3301,6 @@ scaledValueOfFirstFixedSurface = 200 ; scaleFactorOfFirstFixedSurface = 0 ; } -#100 metre wind speed -'m s**-1' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 1 ; - typeOfFirstFixedSurface = 103 ; - scaledValueOfFirstFixedSurface = 100 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #Urban cover '(0 - 1)' = { discipline = 2 ; @@ -3438,9 +3364,6 @@ #C4 grass cover '(0 - 1)' = { discipline = 2 ; - parameterCategory = 0 ; - parameterNumber = 49 ; - } #Accumulated freezing rain water equivalent 'kg m**-2' = { discipline = 0 ; @@ -3791,13 +3714,6 @@ parameterNumber = 34 ; typeOfFirstFixedSurface = 16 ; } -#Geometric height of atmospheric isothermal level above ground -'m' = { - discipline = 0 ; - parameterCategory = 3 ; - parameterNumber = 34 ; - typeOfFirstFixedSurface = 20 ; - } #Roof temperature 'K' = { discipline = 0 ; @@ -4660,14 +4576,6 @@ parameterNumber = 42 ; typeOfStatisticalProcessing = 0 ; } -#Mean top net short-wave radiation flux, clear sky -'W m**-2' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 11 ; - typeOfFirstFixedSurface = 8 ; - typeOfStatisticalProcessing = 0 ; - } #Mean top net long-wave radiation flux, clear sky 'W m**-2' = { discipline = 0 ; @@ -5932,9 +5840,6 @@ #Total water precipitation 'kg m**-2' = { discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 49 ; - } #Total snow precipitation 'kg m**-2' = { discipline = 0 ; @@ -5956,12 +5861,6 @@ parameterNumber = 52 ; typeOfFirstFixedSurface = 1 ; } -#Total snowfall rate water equivalent -'kg m**-2 s**-1' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 53 ; - } #Large scale precipitation rate 'kg m**-2 s**-1' = { discipline = 0 ; @@ -6498,12 +6397,6 @@ parameterCategory = 19 ; parameterNumber = 4 ; } -#Icing top -'m' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 5 ; - } #Icing base 'm' = { discipline = 0 ; @@ -8687,15 +8580,6 @@ #Wind stress at sea surface 'N m**-2' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - } #Wind speed at 10m above sea surface 'm s**-1' = { discipline = 0 ; @@ -9833,16 +9717,6 @@ #Time-mean wind stress at sea surface 'N m**-2' = { discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 49 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 0 ; - } #Time-mean wind speed at 10m above sea surface 'm s**-1' = { discipline = 0 ; @@ -9947,45 +9821,6 @@ scaleFactorOfSecondFixedSurface = missing() ; typeOfStatisticalProcessing = 0 ; } -#Time-accumulated net short wave radiation at sea surface -'J m**-2' = { - discipline = 0 ; - parameterCategory = 4 ; - parameterNumber = 9 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated total precipitation at sea surface -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 52 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } -#Time-accumulated snow precipitation at sea surface -'kg m**-2' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 66 ; - typeOfFirstFixedSurface = 160 ; - typeOfSecondFixedSurface = 255 ; - scaledValueOfFirstFixedSurface = 0 ; - scaleFactorOfFirstFixedSurface = 0 ; - scaledValueOfSecondFixedSurface = missing() ; - scaleFactorOfSecondFixedSurface = missing() ; - typeOfStatisticalProcessing = 1 ; - } #Virtual temperature 'K' = { discipline = 0 ; @@ -10871,15 +10706,6 @@ parameterCategory = 0 ; parameterNumber = 39 ; } -#10 metre wind direction -'degrees' = { - discipline = 10 ; - parameterCategory = 0 ; - parameterNumber = 41 ; - typeOfFirstFixedSurface = 102 ; - scaledValueOfFirstFixedSurface = 10 ; - scaleFactorOfFirstFixedSurface = 0 ; - } #2D wave spectra (single) 'm**2 s radian**-1' = { discipline = 10 ; @@ -11096,14 +10922,6 @@ parameterNumber = 40 ; typeOfStatisticalProcessing = 1 ; } -#Time-mean surface net radiation flux (SW and LW) -'W m**-2' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 46 ; - typeOfFirstFixedSurface = 1 ; - typeOfStatisticalProcessing = 0 ; - } #Surface runoff 'kg m**-2' = { discipline = 2 ; @@ -11421,3 +11239,76 @@ scaledValueOfFirstFixedSurface = 100 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Time-mean total lightning flash density +'km**-2 day**-1' = { + discipline = 0 ; + parameterCategory = 17 ; + parameterNumber = 4 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 0 ; + } +#Time-maximum convective available potential energy +'J kg**-1' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 6 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 2 metre temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum 10 metre wind gust +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 22 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 10 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum convective available potential energy shear +'m**2 s**-2' = { + discipline = 0 ; + parameterCategory = 7 ; + parameterNumber = 19 ; + typeOfFirstFixedSurface = 1 ; + typeOfSecondFixedSurface = 8 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-maximum total precipitation rate +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 2 ; + } +#Time-minimum 2 metre temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 103 ; + scaledValueOfFirstFixedSurface = 2 ; + scaleFactorOfFirstFixedSurface = 0 ; + typeOfStatisticalProcessing = 3 ; + } +#Time-minimum total precipitation rate +'kg m**-2 s**-1' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 52 ; + typeOfFirstFixedSurface = 1 ; + typeOfStatisticalProcessing = 3 ; + } diff --git a/eccodes_config.h.in b/eccodes_config.h.in index 2278151b0..4432f9a10 100644 --- a/eccodes_config.h.in +++ b/eccodes_config.h.in @@ -23,6 +23,8 @@ #define ECCODES_DEFINITION_PATH "@ECCODES_DEFINITION_PATH@" +#cmakedefine ECCODES_HAVE_C_INLINE + #ifdef ECCODES_HAVE_C_INLINE #define GRIB_INLINE inline #endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fce6d88d8..7c491d6b1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,7 +12,6 @@ list( APPEND eccodes_src_files accessor/grib_accessor.cc accessor/grib_accessors_list.cc grib_accessor_class.cc - shared_functions.cc step_unit.cc step.cc step_utilities.cc diff --git a/src/accessor/grib_accessor_class_bufr_data_array.cc b/src/accessor/grib_accessor_class_bufr_data_array.cc index e0c998950..0bd2c2c0f 100644 --- a/src/accessor/grib_accessor_class_bufr_data_array.cc +++ b/src/accessor/grib_accessor_class_bufr_data_array.cc @@ -1,4 +1,3 @@ - /* * (C) Copyright 2005- ECMWF. * @@ -56,7 +55,7 @@ static int is_bitmap_start_defined(grib_accessor_bufr_data_array_t* self) return self->bitmapStart == -1 ? 0 : 1; } -size_t get_length(grib_accessor* a) +static size_t get_length(grib_accessor* a) { grib_accessor_bufr_data_array_t* self = (grib_accessor_bufr_data_array_t*)a; size_t len = 0; @@ -101,7 +100,7 @@ static int tableB_override_get_ref_val(grib_accessor_bufr_data_array_t* self, in } /* Operator 203YYY: Clear and free linked list */ -void tableB_override_clear(grib_context* c, grib_accessor_bufr_data_array_t* self) +static void tableB_override_clear(grib_context* c, grib_accessor_bufr_data_array_t* self) { bufr_tableb_override* tb = self->tableb_override; while (tb) { @@ -113,7 +112,7 @@ void tableB_override_clear(grib_context* c, grib_accessor_bufr_data_array_t* sel } /* Operator 203YYY: Copy contents of linked list to the transient array key */ -int tableB_override_set_key(grib_handle* h, grib_accessor_bufr_data_array_t* self) +static int tableB_override_set_key(grib_handle* h, grib_accessor_bufr_data_array_t* self) { int err = GRIB_SUCCESS; size_t size = 0; @@ -2202,7 +2201,7 @@ static grib_accessor* accessor_or_attribute_with_same_name(grib_accessor* a, con // return *r; // } -int grib_data_accessors_trie_push(grib_trie_with_rank* accessorsTrie, grib_accessor* a) +static int grib_data_accessors_trie_push(grib_trie_with_rank* accessorsTrie, grib_accessor* a) { return grib_trie_with_rank_insert(accessorsTrie, a->name, a); } diff --git a/src/accessor/grib_accessor_class_bufr_elements_table.cc b/src/accessor/grib_accessor_class_bufr_elements_table.cc index ddd055544..04a61d02b 100644 --- a/src/accessor/grib_accessor_class_bufr_elements_table.cc +++ b/src/accessor/grib_accessor_class_bufr_elements_table.cc @@ -1,4 +1,3 @@ - /* * (C) Copyright 2005- ECMWF. * @@ -16,7 +15,7 @@ static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; -static void thread_init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -28,7 +27,7 @@ static void thread_init() static int once = 0; static omp_nest_lock_t mutex1; -void thread_init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_accessor_class_bufr_elements_table_c) { @@ -90,7 +89,7 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) if (self->localDir != NULL) grib_get_string(h, self->localDir, localDir, &len); - GRIB_MUTEX_INIT_ONCE(&once, &thread_init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex1); if (*masterDir != 0) { @@ -213,14 +212,14 @@ static int convert_type(const char* stype) return ret; } -long atol_fast(const char* input) +static long atol_fast(const char* input) { if (strcmp(input, "0") == 0) return 0; return atol(input); } -int bufr_get_from_table(grib_accessor* a, bufr_descriptor* v) +static int bufr_get_from_table(grib_accessor* a, bufr_descriptor* v) { int ret = 0; char** list = 0; diff --git a/src/accessor/grib_accessor_class_codetable.cc b/src/accessor/grib_accessor_class_codetable.cc index f21ef0f86..9a9df9040 100644 --- a/src/accessor/grib_accessor_class_codetable.cc +++ b/src/accessor/grib_accessor_class_codetable.cc @@ -20,7 +20,7 @@ grib_accessor_class* grib_accessor_class_codetable = &_grib_accessor_class_codet static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; -void thread_init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -32,7 +32,7 @@ void thread_init() static int once = 0; static omp_nest_lock_t mutex1; -void thread_init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_accessor_class_codetable_c) { @@ -205,7 +205,7 @@ static grib_codetable* load_table(grib_accessor* a) localFilename = grib_context_full_defs_path(c, localRecomposed); } - GRIB_MUTEX_INIT_ONCE(&once, &thread_init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex1); /* GRIB-930 */ /*printf("DBG %s: Look in cache: f=%s lf=%s (recomposed=%s)\n", self->att.name, filename, localFilename,recomposed);*/ diff --git a/src/accessor/grib_accessor_class_g1bitmap.cc b/src/accessor/grib_accessor_class_g1bitmap.cc index e8c0645ad..162d62b68 100644 --- a/src/accessor/grib_accessor_class_g1bitmap.cc +++ b/src/accessor/grib_accessor_class_g1bitmap.cc @@ -10,7 +10,6 @@ */ #include "grib_accessor_class_g1bitmap.h" -#include "shared_functions.h" grib_accessor_class_g1bitmap_t _grib_accessor_class_g1bitmap{"g1bitmap"}; grib_accessor_class* grib_accessor_class_g1bitmap = &_grib_accessor_class_g1bitmap; diff --git a/src/accessor/grib_accessor_class_g1forecastmonth.cc b/src/accessor/grib_accessor_class_g1forecastmonth.cc index 7ec448cf6..c7745cfa7 100644 --- a/src/accessor/grib_accessor_class_g1forecastmonth.cc +++ b/src/accessor/grib_accessor_class_g1forecastmonth.cc @@ -1,4 +1,3 @@ - /* * (C) Copyright 2005- ECMWF. * @@ -106,7 +105,7 @@ static int unpack_long_edition2(grib_accessor* a, long* val, size_t* len) return GRIB_SUCCESS; } -int unpack_long_edition1(grib_accessor* a, long* val, size_t* len) +static int unpack_long_edition1(grib_accessor* a, long* val, size_t* len) { int err = 0; grib_accessor_g1forecastmonth_t* self = (grib_accessor_g1forecastmonth_t*)a; diff --git a/src/accessor/grib_accessor_class_g2bitmap.cc b/src/accessor/grib_accessor_class_g2bitmap.cc index 551715e4a..7b1783d9a 100644 --- a/src/accessor/grib_accessor_class_g2bitmap.cc +++ b/src/accessor/grib_accessor_class_g2bitmap.cc @@ -10,7 +10,6 @@ */ #include "grib_accessor_class_g2bitmap.h" -#include "shared_functions.h" grib_accessor_class_g2bitmap_t _grib_accessor_class_g2bitmap{ "g2bitmap" }; grib_accessor_class* grib_accessor_class_g2bitmap = &_grib_accessor_class_g2bitmap; @@ -24,6 +23,14 @@ void grib_accessor_class_g2bitmap_t::init(grib_accessor* a, const long len, grib self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a), arg, 4); } +// For speed use a local static function +static GRIB_INLINE void set_bit_on(unsigned char* p, long* bitp) +{ + p += *bitp / 8; + *p |= (1u << (7 - ((*bitp) % 8))); + (*bitp)++; +} + int grib_accessor_class_g2bitmap_t::pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_g2bitmap_t* self = (grib_accessor_g2bitmap_t*)a; @@ -48,7 +55,7 @@ int grib_accessor_class_g2bitmap_t::pack_double(grib_accessor* a, const double* pos++; else { // bmaplen++; - grib_set_bit_on(buf, &pos); + set_bit_on(buf, &pos); } } diff --git a/src/accessor/grib_accessor_class_number_of_points_gaussian.cc b/src/accessor/grib_accessor_class_number_of_points_gaussian.cc index 39324fbd3..7959a6360 100644 --- a/src/accessor/grib_accessor_class_number_of_points_gaussian.cc +++ b/src/accessor/grib_accessor_class_number_of_points_gaussian.cc @@ -112,8 +112,8 @@ static int get_number_of_data_values(grib_handle* h, size_t* numDataValues) return err; } -int unpack_long_with_legacy_support(grib_accessor* a, long* val, size_t* len); -int unpack_long_new(grib_accessor* a, long* val, size_t* len); +static int unpack_long_with_legacy_support(grib_accessor* a, long* val, size_t* len); +static int unpack_long_new(grib_accessor* a, long* val, size_t* len); int grib_accessor_class_number_of_points_gaussian_t::unpack_long(grib_accessor* a, long* val, size_t* len) { @@ -132,7 +132,7 @@ int grib_accessor_class_number_of_points_gaussian_t::unpack_long(grib_accessor* } /* New algorithm */ -int unpack_long_new(grib_accessor* a, long* val, size_t* len) +static int unpack_long_new(grib_accessor* a, long* val, size_t* len) { int err = GRIB_SUCCESS; int is_global = 0; @@ -241,7 +241,7 @@ int unpack_long_new(grib_accessor* a, long* val, size_t* len) } /* With Legacy support */ -int unpack_long_with_legacy_support(grib_accessor* a, long* val, size_t* len) +static int unpack_long_with_legacy_support(grib_accessor* a, long* val, size_t* len) { int err = GRIB_SUCCESS; int is_global = 0; diff --git a/src/accessor/grib_accessor_class_smart_table.cc b/src/accessor/grib_accessor_class_smart_table.cc index 1c49f2ab0..8be64d9d5 100644 --- a/src/accessor/grib_accessor_class_smart_table.cc +++ b/src/accessor/grib_accessor_class_smart_table.cc @@ -18,7 +18,7 @@ grib_accessor_class* grib_accessor_class_smart_table = &_grib_accessor_class_sma static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void thread_init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -30,7 +30,7 @@ static void thread_init() static int once = 0; static omp_nest_lock_t mutex; -void thread_init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_accessor_class_smart_table_c) { @@ -183,7 +183,7 @@ static int grib_load_smart_table(grib_context* c, const char* filename, t->recomposed_name[0] = grib_context_strdup_persistent(c, recomposed_name); t->next = c->smart_table; t->numberOfEntries = size; - GRIB_MUTEX_INIT_ONCE(&once, &thread_init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); c->smart_table = t; GRIB_MUTEX_UNLOCK(&mutex); diff --git a/src/accessor/grib_accessor_class_validity_date.cc b/src/accessor/grib_accessor_class_validity_date.cc index 331c4ec82..1f28f2c3f 100644 --- a/src/accessor/grib_accessor_class_validity_date.cc +++ b/src/accessor/grib_accessor_class_validity_date.cc @@ -10,7 +10,6 @@ */ #include "grib_accessor_class_validity_date.h" -#include "shared_functions.h" grib_accessor_class_validity_date_t _grib_accessor_class_validity_date{ "validity_date" }; grib_accessor_class* grib_accessor_class_validity_date = &_grib_accessor_class_validity_date; diff --git a/src/accessor/grib_accessor_class_validity_time.cc b/src/accessor/grib_accessor_class_validity_time.cc index 350a19e92..cdb0fdf93 100644 --- a/src/accessor/grib_accessor_class_validity_time.cc +++ b/src/accessor/grib_accessor_class_validity_time.cc @@ -10,7 +10,6 @@ */ #include "grib_accessor_class_validity_time.h" -#include "shared_functions.h" grib_accessor_class_validity_time_t _grib_accessor_class_validity_time{ "validity_time" }; grib_accessor_class* grib_accessor_class_validity_time = &_grib_accessor_class_validity_time; diff --git a/src/action_class_concept.cc b/src/action_class_concept.cc index 3f42fb9e5..b88600887 100644 --- a/src/action_class_concept.cc +++ b/src/action_class_concept.cc @@ -95,7 +95,7 @@ static void init_class(grib_action_class* c) static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -107,7 +107,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_action_class_concept_c) { @@ -306,7 +306,7 @@ static grib_concept_value* get_concept_impl(grib_handle* h, grib_action_concept* static grib_concept_value* get_concept(grib_handle* h, grib_action_concept* self) { grib_concept_value* result = NULL; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); result = get_concept_impl(h, self); diff --git a/src/action_class_hash_array.cc b/src/action_class_hash_array.cc index 430fdd92a..fd1e52976 100644 --- a/src/action_class_hash_array.cc +++ b/src/action_class_hash_array.cc @@ -98,7 +98,7 @@ static void init_class(grib_action_class* c) static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -110,7 +110,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_action_class_hash_array_c) { @@ -325,7 +325,7 @@ static grib_hash_array_value* get_hash_array_impl(grib_handle* h, grib_action* a grib_hash_array_value* get_hash_array(grib_handle* h, grib_action* a) { grib_hash_array_value* result = NULL; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); result = get_hash_array_impl(h, a); diff --git a/src/codes_util.cc b/src/codes_util.cc index 57613109a..80d337849 100644 --- a/src/codes_util.cc +++ b/src/codes_util.cc @@ -244,6 +244,41 @@ int is_time_valid(long number) return 1; } +/* Table of multipliers to convert step units to minutes */ +static const double u2m[] = { + 1, /* index 0: minutes */ + 60, /* index 1: hour */ + 24 * 60, /* index 2: day */ + 24 * 60 * 30, /* index 3: month */ + -1, /* index 4: year */ + -1, /* index 5: decade */ + -1, /* index 6: 30 years */ + -1, /* index 7: century */ + -1, /* index 8: RESERVED */ + -1, /* index 9: RESERVED */ + 3 * 60, /* index 10: 3 hours */ + 6 * 60, /* index 11: 6 hours */ + 12 * 60, /* index 12: 12 hours */ + 1 / 60.0, /* index 13: seconds */ + 15, /* index 14: 15 mins */ + 30 /* index 15: 30 mins */ +}; + +long convert_to_minutes(long step, long stepUnits) +{ + double result = 0; + if (stepUnits == 0) + return step; /* unit=minutes so no change */ + if (stepUnits == 1) + return step * 60; /* unit=hours */ + if (stepUnits == 13) + return step / 60; /* unit=seconds */ + /* Assert( stepUnits < sizeof(u2m)/sizeof(u2m[0]) ); */ + + result = step * u2m[stepUnits]; + return (long)result; +} + static float float_epsilon(void) { float floatEps = 1.0; diff --git a/src/eccodes_prototypes.h b/src/eccodes_prototypes.h index 61b02b61d..95f9a1573 100644 --- a/src/eccodes_prototypes.h +++ b/src/eccodes_prototypes.h @@ -308,6 +308,7 @@ int grib_init_accessor_from_handle(grib_loader* loader, grib_accessor* ga, grib_ unsigned long grib_decode_unsigned_byte_long(const unsigned char* p, long o, int l); long grib_decode_signed_long(const unsigned char* p, long o, int l); int grib_encode_signed_long(unsigned char* p, long val, long o, int l); +void grib_set_bit_on(unsigned char*, long*); void grib_set_bits_on(unsigned char* p, long* bitp, long nbits); int grib_get_bit(const unsigned char* p, long bitp); void grib_set_bit(unsigned char* p, long bitp, int val); @@ -853,6 +854,7 @@ int codes_check_grib_ieee_packing_value(int value); int codes_flush_sync_close_file(FILE* f); int is_date_valid(long year, long month, long day, long hour, long minute, double second); int is_time_valid(long number); // number is HHMM +long convert_to_minutes(long step, long stepUnits); int compute_scaled_value_and_scale_factor(double input, int64_t scaled_value_max, int64_t scale_factor_max, int64_t* ret_value, int64_t* ret_factor); /* grib_util.cc */ diff --git a/src/grib_accessor_class.cc b/src/grib_accessor_class.cc index 4120fb5bd..de7f8dc47 100644 --- a/src/grib_accessor_class.cc +++ b/src/grib_accessor_class.cc @@ -22,7 +22,7 @@ static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -34,7 +34,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex1; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_accessor_class_c) { @@ -77,7 +77,7 @@ grib_section* grib_create_root_section(const grib_context* context, grib_handle* char* fpath = 0; grib_section* s = (grib_section*)grib_context_malloc_clear(context, sizeof(grib_section)); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex1); if (h->context->grib_reader == NULL) { if ((fpath = grib_context_full_defs_path(h->context, "boot.def")) == NULL) { diff --git a/src/grib_bits.cc b/src/grib_bits.cc index 92482612b..7988a6f82 100644 --- a/src/grib_bits.cc +++ b/src/grib_bits.cc @@ -117,7 +117,7 @@ int grib_encode_signed_long(unsigned char* p, long val, long o, int l) return GRIB_SUCCESS; } -static void grib_set_bit_on(unsigned char* p, long* bitp) +void grib_set_bit_on(unsigned char* p, long* bitp) { p += *bitp / 8; *p |= (1u << (7 - ((*bitp) % 8))); diff --git a/src/grib_bits_any_endian.cc b/src/grib_bits_any_endian.cc index 33e643a19..50a7cd9af 100644 --- a/src/grib_bits_any_endian.cc +++ b/src/grib_bits_any_endian.cc @@ -22,7 +22,7 @@ static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -34,7 +34,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_bits_any_endian_c) { @@ -77,7 +77,7 @@ static void init_bits_all_one() static void init_bits_all_one_if_needed() { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); if (!bits_all_one.inited) init_bits_all_one(); diff --git a/src/grib_context.cc b/src/grib_context.cc index a22fcc654..442faa1e8 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -41,7 +41,7 @@ static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex_mem = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mutex_c = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -55,7 +55,7 @@ static int once = 0; static omp_nest_lock_t mutex_mem; static omp_nest_lock_t mutex_c; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_context_c) { @@ -374,7 +374,7 @@ static grib_context default_grib_context = { grib_context* grib_context_get_default() { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); if (!default_grib_context.inited) { @@ -569,7 +569,7 @@ grib_context* grib_context_get_default() // if (!parent) parent=grib_context_get_default(); -// GRIB_MUTEX_INIT_ONCE(&once,&init); +// GRIB_MUTEX_INIT_ONCE(&once,&init_mutex); // GRIB_MUTEX_LOCK(&(parent->mutex)); // c = (grib_context*)grib_context_malloc_clear_persistent(&default_grib_context,sizeof(grib_context)); @@ -646,7 +646,7 @@ static int init_definition_files_dir(grib_context* c) strncpy(path, c->grib_definition_files_path, ECC_PATH_MAXLEN-1); path[ ECC_PATH_MAXLEN - 1 ] = '\0'; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); p = path; @@ -692,7 +692,7 @@ char* grib_context_full_defs_path(grib_context* c, const char* basename) if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); if (*basename == '/' || *basename == '.') { return (char*)basename; @@ -880,7 +880,7 @@ void grib_context_set_definitions_path(grib_context* c, const char* path) { if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); c->grib_definition_files_path = strdup(path); @@ -892,7 +892,7 @@ void grib_context_set_samples_path(grib_context* c, const char* path) { if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); c->grib_samples_path = strdup(path); @@ -1095,7 +1095,7 @@ int grib_context_get_handle_file_count(grib_context* c) int r = 0; if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); r = c->handle_file_count; GRIB_MUTEX_UNLOCK(&mutex_c); @@ -1106,7 +1106,7 @@ int grib_context_get_handle_total_count(grib_context* c) int r = 0; if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); r = c->handle_total_count; GRIB_MUTEX_UNLOCK(&mutex_c); @@ -1117,7 +1117,7 @@ void grib_context_set_handle_file_count(grib_context* c, int new_count) { if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); c->handle_file_count = new_count; GRIB_MUTEX_UNLOCK(&mutex_c); @@ -1126,7 +1126,7 @@ void grib_context_set_handle_total_count(grib_context* c, int new_count) { if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); c->handle_total_count = new_count; GRIB_MUTEX_UNLOCK(&mutex_c); @@ -1136,7 +1136,7 @@ void grib_context_increment_handle_file_count(grib_context* c) { if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); c->handle_file_count++; GRIB_MUTEX_UNLOCK(&mutex_c); @@ -1145,7 +1145,7 @@ void grib_context_increment_handle_total_count(grib_context* c) { if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); c->handle_total_count++; GRIB_MUTEX_UNLOCK(&mutex_c); @@ -1160,7 +1160,7 @@ bufr_descriptors_array* grib_context_expanded_descriptors_list_get(grib_context* if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); if (!c->expanded_descriptors) { @@ -1200,7 +1200,7 @@ void grib_context_expanded_descriptors_list_push(grib_context* c, if (!c) c = grib_context_get_default(); - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_c); newdescriptorsList = (bufr_descriptors_map_list*)grib_context_malloc_clear(c, sizeof(bufr_descriptors_map_list)); diff --git a/src/grib_filepool.cc b/src/grib_filepool.cc index 28606e8c9..21f0a5b22 100644 --- a/src/grib_filepool.cc +++ b/src/grib_filepool.cc @@ -15,7 +15,7 @@ static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -27,7 +27,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex1; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_filepool_c) { @@ -175,7 +175,7 @@ grib_file* grib_file_open(const char* filename, const char* mode, int* err) grib_file *file = 0, *prev = 0; int same_mode = 0; int is_new = 0; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); if (!file_pool.context) file_pool.context = grib_context_get_default(); @@ -257,7 +257,7 @@ grib_file* grib_file_open(const char* filename, const char* mode, int* err) void grib_file_pool_delete_file(grib_file* file) { grib_file* prev = NULL; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex1); if (file == file_pool.first) { @@ -299,7 +299,7 @@ void grib_file_close(const char* filename, int force, int* err) if (do_close) { /*printf("+++++++++++++ closing file %s (n=%d)\n",filename, file_pool.number_of_opened_files);*/ - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex1); file = grib_get_file(filename, err); if (file->handle) { @@ -323,7 +323,7 @@ void grib_file_close_all(int* err) if (!file_pool.first) return; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex1); file = file_pool.first; @@ -390,7 +390,7 @@ static grib_file* grib_file_new(grib_context* c, const char* name, int* err) *err = GRIB_OUT_OF_MEMORY; return NULL; } - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); file->name = strdup(name); file->id = next_id; @@ -412,7 +412,7 @@ void grib_file_delete(grib_file* file) { if (!file) return; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex1); /* GRIB-803: cannot call fclose yet! Causes crash */ /* TODO: Set handle to NULL in filepool too */ diff --git a/src/grib_hash_keys.cc b/src/grib_hash_keys.cc index ba26dbe03..b6e389dc2 100644 --- a/src/grib_hash_keys.cc +++ b/src/grib_hash_keys.cc @@ -9743,7 +9743,7 @@ static const int mapping[] = { static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -9755,7 +9755,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_itrie_keys_c) { @@ -9787,7 +9787,7 @@ grib_itrie* grib_hash_keys_new(grib_context* c, int* count) void grib_hash_keys_delete(grib_itrie* t) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); if (t) { @@ -9808,7 +9808,7 @@ static int grib_hash_keys_insert(grib_itrie* t, const char* key) grib_itrie* last = t; int* count; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); Assert(t); @@ -9862,7 +9862,7 @@ int grib_hash_keys_get_id(grib_itrie* t, const char* key) const char* k = key; grib_itrie* last = t; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); while (*k && t) diff --git a/src/grib_io.cc b/src/grib_io.cc index 64477d39e..43e559b3f 100644 --- a/src/grib_io.cc +++ b/src/grib_io.cc @@ -14,7 +14,7 @@ static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -27,7 +27,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex1; static omp_nest_lock_t mutex2; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_io_c) { @@ -931,7 +931,7 @@ static int read_any(reader* r, int no_alloc, int grib_ok, int bufr_ok, int hdf5_ * so each thread gets its own message. Otherwise if threads are passed * different files, then the lock is not needed */ - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex1); #endif diff --git a/src/grib_itrie.cc b/src/grib_itrie.cc index 0421e4b84..6689e1bf8 100644 --- a/src/grib_itrie.cc +++ b/src/grib_itrie.cc @@ -276,7 +276,7 @@ static const int mapping[] = { static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -288,7 +288,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_itrie_c) { @@ -319,7 +319,7 @@ grib_itrie* grib_itrie_new(grib_context* c, int* count) void grib_itrie_delete(grib_itrie* t) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); if (t) { @@ -343,7 +343,7 @@ int grib_itrie_get_id(grib_itrie* t, const char* key) return -1; } - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); while (*k && t) @@ -371,7 +371,7 @@ int grib_itrie_insert(grib_itrie* t, const char* key) return -1; } - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); count = t->count; diff --git a/src/grib_itrie_keys.cc b/src/grib_itrie_keys.cc index a0a154427..2ee7291c6 100644 --- a/src/grib_itrie_keys.cc +++ b/src/grib_itrie_keys.cc @@ -273,7 +273,7 @@ static const int mapping[] = { static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -285,7 +285,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_itrie_keys_c) { @@ -317,7 +317,7 @@ grib_itrie* grib_hash_keys_new(grib_context* c, int* count) void grib_hash_keys_delete(grib_itrie* t) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); if (t) { @@ -338,7 +338,7 @@ static int grib_hash_keys_insert(grib_itrie* t, const char* key) grib_itrie* last = t; int* count; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); Assert(t); @@ -392,7 +392,7 @@ int grib_hash_keys_get_id(grib_itrie* t, const char* key) const char* k = key; grib_itrie* last = t; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); while (*k && t) diff --git a/src/grib_memory.cc b/src/grib_memory.cc index 5eebf7965..b44e12c19 100644 --- a/src/grib_memory.cc +++ b/src/grib_memory.cc @@ -18,7 +18,7 @@ static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; @@ -31,7 +31,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_memory_c) { @@ -108,7 +108,7 @@ static void* fast_new(size_t s, mempool* pool) char* p; memblk* m; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); m = (memblk*)pool->priv; @@ -167,7 +167,7 @@ static void fast_delete(void* p, mempool* pool) memblk* m; memblk* n = NULL; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); m = (memblk*)pool->priv; @@ -271,7 +271,7 @@ void* grib_buffer_malloc(const grib_context* c, size_t s) { memblk* r; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); s = ((s + WORD - 1) / WORD) * WORD; @@ -307,7 +307,7 @@ void grib_buffer_free(const grib_context* c, void* p) memblk* r; memblk* s; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); r = (memblk*)(((char*)p) - HEADER_SIZE); diff --git a/src/grib_parse_utils.cc b/src/grib_parse_utils.cc index 8eb9a2938..98a01cd7b 100644 --- a/src/grib_parse_utils.cc +++ b/src/grib_parse_utils.cc @@ -35,7 +35,7 @@ static pthread_mutex_t mutex_hash_array = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mutex_stream = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mutex_parse = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -57,7 +57,7 @@ static omp_nest_lock_t mutex_hash_array; static omp_nest_lock_t mutex_stream; static omp_nest_lock_t mutex_parse; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_parse_utils_c) { @@ -717,7 +717,7 @@ extern int grib_yyparse(void); static int parse(grib_context* gc, const char* filename) { int err = 0; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_parse); #ifdef YYDEBUG @@ -752,7 +752,7 @@ static int parse(grib_context* gc, const char* filename) static grib_action* grib_parse_stream(grib_context* gc, const char* filename) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_stream); grib_parser_all_actions = 0; @@ -776,7 +776,7 @@ static grib_action* grib_parse_stream(grib_context* gc, const char* filename) grib_concept_value* grib_parse_concept_file(grib_context* gc, const char* filename) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_file); gc = gc ? gc : grib_context_get_default(); @@ -794,7 +794,7 @@ grib_concept_value* grib_parse_concept_file(grib_context* gc, const char* filena grib_hash_array_value* grib_parse_hash_array_file(grib_context* gc, const char* filename) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_file); gc = gc ? gc : grib_context_get_default(); @@ -813,7 +813,7 @@ grib_hash_array_value* grib_parse_hash_array_file(grib_context* gc, const char* // grib_rule* grib_parse_rules_file(grib_context* gc, const char* filename) // { // if (!gc) gc = grib_context_get_default(); -// GRIB_MUTEX_INIT_ONCE(&once, &init); +// GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); // GRIB_MUTEX_LOCK(&mutex_rules); // gc = gc ? gc : grib_context_get_default(); // grib_parser_context = gc; @@ -831,7 +831,7 @@ grib_action* grib_parse_file(grib_context* gc, const char* filename) { grib_action_file* af; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex_file); af = 0; diff --git a/src/grib_trie.cc b/src/grib_trie.cc index 7c122e062..c4e1d29e5 100644 --- a/src/grib_trie.cc +++ b/src/grib_trie.cc @@ -292,7 +292,7 @@ static const size_t NUM_MAPPINGS = sizeof(mapping) / sizeof(mapping[0]); static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -304,7 +304,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_trie_c) { @@ -340,7 +340,7 @@ grib_trie* grib_trie_new(grib_context* c) void grib_trie_delete_container(grib_trie* t) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); if (t) { int i; @@ -359,7 +359,7 @@ void grib_trie_delete_container(grib_trie* t) void grib_trie_delete(grib_trie* t) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); if (t) { int i; @@ -399,7 +399,7 @@ void* grib_trie_insert(grib_trie* t, const char* key, void* data) return NULL; } - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); while (*k && t) { @@ -474,7 +474,7 @@ void* grib_trie_insert_no_replace(grib_trie* t, const char* key, void* data) void* grib_trie_get(grib_trie* t, const char* key) { const char* k = key; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); while (*k && t) { diff --git a/src/grib_trie_with_rank.cc b/src/grib_trie_with_rank.cc index 8b74b6ca6..0e3f76971 100644 --- a/src/grib_trie_with_rank.cc +++ b/src/grib_trie_with_rank.cc @@ -292,7 +292,7 @@ static const size_t NUM_MAPPINGS = sizeof(mapping) / sizeof(mapping[0]); static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -static void init() +static void init_mutex() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -304,7 +304,7 @@ static void init() static int once = 0; static omp_nest_lock_t mutex; -static void init() +static void init_mutex() { GRIB_OMP_CRITICAL(lock_grib_trie_with_rank_c) { @@ -376,7 +376,7 @@ static void _grib_trie_with_rank_delete_container(grib_trie_with_rank* t) } void grib_trie_with_rank_delete_container(grib_trie_with_rank* t) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); _grib_trie_with_rank_delete_container(t); GRIB_MUTEX_UNLOCK(&mutex); @@ -397,7 +397,7 @@ static void grib_trie_with_rank_delete_list(grib_context* c,grib_trie_with_rank_ void grib_trie_with_rank_delete(grib_trie_with_rank* t) { - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); if (t) { int i; @@ -456,7 +456,7 @@ int grib_trie_with_rank_insert(grib_trie_with_rank* t, const char* key, void* da DEBUG_ASSERT(t); if (!t) return -1; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); GRIB_MUTEX_LOCK(&mutex); while (*k && t) { @@ -506,7 +506,7 @@ void* grib_trie_with_rank_get(grib_trie_with_rank* t, const char* key, int rank) { const char* k = key; void* data; - GRIB_MUTEX_INIT_ONCE(&once, &init); + GRIB_MUTEX_INIT_ONCE(&once, &init_mutex); if (rank < 0) return NULL; diff --git a/src/shared_functions.cc b/src/shared_functions.cc deleted file mode 100644 index fc6f090fb..000000000 --- a/src/shared_functions.cc +++ /dev/null @@ -1,47 +0,0 @@ -#include "shared_functions.h" - - -/* Table of multipliers to convert step units to minutes */ -static const double u2m[] = { - 1, /* index 0: minutes */ - 60, /* index 1: hour */ - 24 * 60, /* index 2: day */ - 24 * 60 * 30, /* index 3: month */ - -1, /* index 4: year */ - -1, /* index 5: decade */ - -1, /* index 6: 30 years */ - -1, /* index 7: century */ - -1, /* index 8: RESERVED */ - -1, /* index 9: RESERVED */ - 3 * 60, /* index 10: 3 hours */ - 6 * 60, /* index 11: 6 hours */ - 12 * 60, /* index 12: 12 hours */ - 1 / 60.0, /* index 13: seconds */ - 15, /* index 14: 15 mins */ - 30 /* index 15: 30 mins */ -}; - - -void grib_set_bit_on(unsigned char* p, long* bitp){ - unsigned char o = 1; - p += (*bitp >> 3); - o <<= 7 - ((*bitp) % 8); - *p |= o; - (*bitp) += 1; -} - -long convert_to_minutes(long step, long stepUnits) -{ - double result = 0; - if (stepUnits == 0) - return step; /* unit=minutes so no change */ - if (stepUnits == 1) - return step * 60; /* unit=hours */ - if (stepUnits == 13) - return step / 60; /* unit=seconds */ - /* Assert( stepUnits < sizeof(u2m)/sizeof(u2m[0]) ); */ - - result = step * u2m[stepUnits]; - return (long)result; -} - diff --git a/src/shared_functions.h b/src/shared_functions.h deleted file mode 100644 index 04ae2f90f..000000000 --- a/src/shared_functions.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef eccodes_shared_functions_h -#define eccodes_shared_functions_h - -#include "grib_api_internal.h" - -void grib_set_bit_on(unsigned char*, long*); -long convert_to_minutes(long step, long stepUnits); - -#endif // eccodes_shared_functions_h