Merge branch 'develop' into feature/ECC-917-MemfsSplit

This commit is contained in:
Shahram Najm 2020-04-15 18:43:56 +01:00
commit eacbe611d0
48 changed files with 412 additions and 351 deletions

View File

@ -24,6 +24,7 @@
22 22 Version implemented on 7 November 2018 22 22 Version implemented on 7 November 2018
23 23 Version implemented on 15 May 2019 23 23 Version implemented on 15 May 2019
24 24 Version implemented on 6 November 2019 24 24 Version implemented on 6 November 2019
25 25 Pre-operational to be implemented by next amendment 25 25 Version implemented on 6 May 2020
# 25-254 Future versions 26 26 Pre-operational to be implemented by next amendment
# 27-254 Future versions
255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used. 255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used.

View File

@ -1,11 +1,11 @@
# Code table 0.0 - Discipline of processed data in the GRIB message, number of GRIB Master table # Code table 0.0 - Discipline of processed data in the GRIB message, number of GRIB Master table
0 0 Meteorological products 0 0 Meteorological products
1 1 Hydrological products 1 1 Hydrological products
2 2 Land surface products 2 2 Land surface products
3 3 Satellite remote sensing products (formerly Space products) 3 3 Satellite remote sensing products (formerly Space products)
4 4 Space weather products 4 4 Space weather products
# 5-9 Reserved # 5-9 Reserved
10 10 Oceanographic products 10 10 Oceanographic products
# 11-191 Reserved # 11-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -1,16 +1,16 @@
# Code table 1.3 - Production status of data # Code table 1.3 - Production status of data
0 0 Operational products 0 0 Operational products
1 1 Operational test products 1 1 Operational test products
2 2 Research products 2 2 Research products
3 3 Re-analysis products 3 3 Re-analysis products
4 4 THORPEX Interactive Grand Global Ensemble (TIGGE) 4 4 THORPEX Interactive Grand Global Ensemble (TIGGE)
5 5 THORPEX Interactive Grand Global Ensemble test (TIGGE) 5 5 THORPEX Interactive Grand Global Ensemble test (TIGGE)
6 6 S2S operational products 6 6 S2S operational products
7 7 S2S test products 7 7 S2S test products
8 8 Uncertainties in Ensembles of Regional ReAnalyses project (UERRA) 8 8 Uncertainties in Ensembles of Regional ReAnalyses project (UERRA)
9 9 Uncertainties in Ensembles of Regional ReAnalyses project test (UERRA) 9 9 Uncertainties in Ensembles of Regional ReAnalyses project test (UERRA)
10 10 Copernicus regional reanalysis (CARRA/CERRA) 10 10 Copernicus regional reanalysis (CARRA/CERRA)
11 11 Copernicus regional reanalysis test (CARRA/CERRA) 11 11 Copernicus regional reanalysis test (CARRA/CERRA)
# 12-191 Reserved # 12-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -36,6 +36,6 @@
34 34 Visibility through ice fog (m) 34 34 Visibility through ice fog (m)
35 35 Visibility through blowing snow (m) 35 35 Visibility through blowing snow (m)
36 36 Presence of snow squalls (Code table 4.222) 36 36 Presence of snow squalls (Code table 4.222)
# 37-191 Reserved # 37-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -27,6 +27,6 @@
25 25 Snow depth at elevation bands (kg m-2) 25 25 Snow depth at elevation bands (kg m-2)
26 26 Soil heat flux (W m-2) 26 26 Soil heat flux (W m-2)
27 27 Soil depth (m) 27 27 Soil depth (m)
# 28-191 Reserved # 28-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -23,7 +23,7 @@
23 23 Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration) (Bq m-3) 23 23 Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration) (Bq m-3)
24 24 Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration) (Bq m-3) 24 24 Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration) (Bq m-3)
25 25 Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity) (dBZ) 25 25 Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity) (dBZ)
# 26-99 Reserved # 26-99 Reserved
100 pl Isobaric surface (Pa) 100 pl Isobaric surface (Pa)
101 sfc Mean sea level 101 sfc Mean sea level
102 102 Specific altitude above mean sea level (m) 102 102 Specific altitude above mean sea level (m)
@ -47,7 +47,7 @@
# 120-149 Reserved # 120-149 Reserved
150 150 Generalized vertical height coordinate 150 150 Generalized vertical height coordinate
151 sol Soil level (Numeric) 151 sol Soil level (Numeric)
# 152-159 Reserved # 152-159 Reserved
160 160 Depth below sea level (m) 160 160 Depth below sea level (m)
161 161 Depth below water surface (m) 161 161 Depth below water surface (m)
162 162 Lake or river bottom (-) 162 162 Lake or river bottom (-)

View File

@ -1,10 +1,13 @@
# Code table 0.0 - Discipline of processed data in the GRIB message, number of GRIB Master table # Code table 0.0 - Discipline of processed data in the GRIB message, number of GRIB Master table
0 0 Meteorological products 0 0 Meteorological products
1 1 Hydrological products 1 1 Hydrological products
2 2 Land surface products 2 2 Land surface products
3 3 Satellite remote sensing products (formerly Space products) 3 3 Satellite remote sensing products (formerly Space products)
4 4 Space weather products 4 4 Space weather products
10 10 Oceanographic products # 5-9 Reserved
10 10 Oceanographic products
# 11-19 Reserved
20 20 Health and socioeconomic impacts 20 20 Health and socioeconomic impacts
# 192-254 Reserved for local use # 21-191 Reserved
255 255 Missing # 192-254 Reserved for local use
255 255 Missing

View File

@ -24,5 +24,6 @@
22 22 Version implemented on 7 November 2018 22 22 Version implemented on 7 November 2018
23 23 Version implemented on 15 May 2019 23 23 Version implemented on 15 May 2019
24 24 Version implemented on 6 November 2019 24 24 Version implemented on 6 November 2019
# 25-254 Future versions 25 25 Version implemented on 6 May 2020
# 26-254 Future versions
255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used. 255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used.

View File

@ -1,16 +1,16 @@
# Code table 1.3 - Production status of data # Code table 1.3 - Production status of data
0 0 Operational products 0 0 Operational products
1 1 Operational test products 1 1 Operational test products
2 2 Research products 2 2 Research products
3 3 Re-analysis products 3 3 Re-analysis products
4 4 THORPEX Interactive Grand Global Ensemble (TIGGE) 4 4 THORPEX Interactive Grand Global Ensemble (TIGGE)
5 5 THORPEX Interactive Grand Global Ensemble test (TIGGE) 5 5 THORPEX Interactive Grand Global Ensemble test (TIGGE)
6 6 S2S operational products 6 6 S2S operational products
7 7 S2S test products 7 7 S2S test products
8 8 Uncertainties in Ensembles of Regional ReAnalyses project (UERRA) 8 8 Uncertainties in Ensembles of Regional ReAnalyses project (UERRA)
9 9 Uncertainties in Ensembles of Regional ReAnalyses project test (UERRA) 9 9 Uncertainties in Ensembles of Regional ReAnalyses project test (UERRA)
10 10 Copernicus regional reanalysis (CARRA/CERRA) 10 10 Copernicus regional reanalysis (CARRA/CERRA)
11 11 Copernicus regional reanalysis test (CARRA/CERRA) 11 11 Copernicus regional reanalysis test (CARRA/CERRA)
# 12-191 Reserved # 12-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -1,4 +1,4 @@
# Code table 3.2 - Shape of the Earth # Code table 3.2 - Shape of the reference system
0 0 Earth assumed spherical with radius = 6 367 470.0 m 0 0 Earth assumed spherical with radius = 6 367 470.0 m
1 1 Earth assumed spherical with radius specified (in m) by data producer 1 1 Earth assumed spherical with radius specified (in m) by data producer
2 2 Earth assumed oblate spheroid with size as determined by IAU in 1965 (major axis = 6 378 160.0 m, minor axis = 6 356 775.0 m, f = 1/297.0) 2 2 Earth assumed oblate spheroid with size as determined by IAU in 1965 (major axis = 6 378 160.0 m, minor axis = 6 356 775.0 m, f = 1/297.0)
@ -9,6 +9,8 @@
7 7 Earth assumed oblate spheroid with major or minor axes specified (in m) by data producer 7 7 Earth assumed oblate spheroid with major or minor axes specified (in m) by data producer
8 8 Earth model assumed spherical with radius of 6 371 200 m, but the horizontal datum of the resulting latitude/longitude field is the WGS-84 reference frame 8 8 Earth model assumed spherical with radius of 6 371 200 m, but the horizontal datum of the resulting latitude/longitude field is the WGS-84 reference frame
9 9 Earth represented by the Ordnance Survey Great Britain 1936 Datum, using the Airy 1830 Spheroid, the Greenwich meridian as 0 longitude, and the Newlyn datum as mean sea level, 0 height 9 9 Earth represented by the Ordnance Survey Great Britain 1936 Datum, using the Airy 1830 Spheroid, the Greenwich meridian as 0 longitude, and the Newlyn datum as mean sea level, 0 height
# 10-191 Reserved 10 10 Earth model assumed WGS84 with corrected geomagnetic coordinates (latitude and longitude) defined by Gustafsson et al., 1992
11 11 Sun assumed spherical with radius = 695,990,000 m (Allen, C.W., 1976 Astrophysical Quantities (3rd Ed.; London: Athlone) and Stonyhurst latitude and longitude system with origin at the intersection of the solar central meridian (as seen from Earth) and the solar equator (Thompson, W, Coordinate systems for solar image data, A&A 449, 791803 (2006))
# 12-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -1,63 +1,63 @@
# Code table 4.0 - Product definition template number # Code table 4.0 - Product definition template number
0 0 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time 0 0 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time
1 1 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time 1 1 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time
2 2 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer at a point in time 2 2 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer at a point in time
3 3 Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time 3 3 Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time
4 4 Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time 4 4 Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time
5 5 Probability forecasts at a horizontal level or in a horizontal layer at a point in time 5 5 Probability forecasts at a horizontal level or in a horizontal layer at a point in time
6 6 Percentile forecasts at a horizontal level or in a horizontal layer at a point in time 6 6 Percentile forecasts at a horizontal level or in a horizontal layer at a point in time
7 7 Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time 7 7 Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time
8 8 Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 8 8 Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
9 9 Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 9 9 Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
10 10 Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 10 10 Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
11 11 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 11 11 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval
12 12 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 12 12 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval
13 13 Derived forecasts based on a cluster of ensemble members over a rectangular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 13 13 Derived forecasts based on a cluster of ensemble members over a rectangular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval
14 14 Derived forecasts based on a cluster of ensemble members over a circular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 14 14 Derived forecasts based on a cluster of ensemble members over a circular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval
15 15 Average, accumulation, extreme values, or other statistically processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time 15 15 Average, accumulation, extreme values, or other statistically processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time
# 16-19 Reserved # 16-19 Reserved
20 20 Radar product 20 20 Radar product
# 21-29 Reserved # 21-29 Reserved
30 30 Satellite product (deprecated) 30 30 Satellite product (deprecated)
31 31 Satellite product 31 31 Satellite product
32 32 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data 32 32 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
33 33 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data 33 33 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
34 34 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data 34 34 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data
35 35 Satellite product with or without associated quality values 35 35 Satellite product with or without associated quality values
# 36-39 Reserved # 36-39 Reserved
40 40 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents 40 40 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents
41 41 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents 41 41 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents
42 42 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents 42 42 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents
43 43 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents 43 43 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents
44 44 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol 44 44 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol
45 45 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for aerosol 45 45 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for aerosol
46 46 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol 46 46 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol
47 47 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol 47 47 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol
48 48 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol 48 48 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol
49 49 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol 49 49 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol
# 50 Reserved # 50 Reserved
51 51 Categorical forecasts at a horizontal level or in a horizontal layer at a point in time 51 51 Categorical forecasts at a horizontal level or in a horizontal layer at a point in time
# 52 Reserved # 52 Reserved
53 53 Partitioned parameters at a horizontal level or in a horizontal layer at a point in time 53 53 Partitioned parameters at a horizontal level or in a horizontal layer at a point in time
54 54 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters 54 54 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters
55 55 Spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time 55 55 Spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time
56 56 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (deprecated) 56 56 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (deprecated)
57 57 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function 57 57 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function
58 58 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function 58 58 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function
59 59 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (corrected version of template 4.56) 59 59 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (corrected version of template 4.56)
60 60 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time 60 60 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time
61 61 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval 61 61 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval
62 62 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time 62 62 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time
63 63 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles 63 63 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles
# 64-66 Reserved # 64-66 Reserved
67 67 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function 67 67 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function
68 68 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function 68 68 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function
# 69 Reserved # 69 Reserved
70 70 Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a point in time 70 70 Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a point in time
71 71 Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time 71 71 Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time
72 72 Post-processing average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 72 72 Post-processing average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
73 73 Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval 73 73 Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval
# 74-75 Reserved # 74-75 Reserved
76 76 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source/sink 76 76 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source/sink
77 77 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source/sink 77 77 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source/sink
78 78 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents with source/sink 78 78 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents with source/sink
@ -66,21 +66,21 @@
81 81 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source/sink 81 81 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source/sink
82 82 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source/sink 82 82 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source/sink
83 83 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source/sink 83 83 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source/sink
# 84-90 Reserved # 84-90 Reserved
91 91 Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 91 91 Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
# 92-253 Reserved # 92-253 Reserved
254 254 CCITT IA5 character string 254 254 CCITT IA5 character string
# 255-999 Reserved # 255-999 Reserved
1000 1000 Cross-section of analysis and forecast at a point in time 1000 1000 Cross-section of analysis and forecast at a point in time
1001 1001 Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time 1001 1001 Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time
1002 1002 Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude 1002 1002 Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude
# 1003-1099 Reserved # 1003-1099 Reserved
1100 1100 Hovmoller-type grid with no averaging or other statistical processing 1100 1100 Hovmoller-type grid with no averaging or other statistical processing
1101 1101 Hovmoller-type grid with averaging or other statistical processing 1101 1101 Hovmoller-type grid with averaging or other statistical processing
50001 50001 Forecasting Systems with Variable Resolution in a point in time 50001 50001 Forecasting Systems with Variable Resolution in a point in time
50011 50011 Forecasting Systems with Variable Resolution in a continous or non countinous time interval 50011 50011 Forecasting Systems with Variable Resolution in a continous or non countinous time interval
# 1102-32767 Reserved # 1102-32767 Reserved
# 32768-65534 Reserved for local use # 32768-65534 Reserved for local use
40033 40033 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data 40033 40033 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
40034 40034 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data 40034 40034 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data
65535 65535 Missing 65535 65535 Missing

View File

@ -1,7 +1,7 @@
# Code table 4.1 - Parameter category by product discipline # Code table 4.1 - Parameter category by product discipline
0 0 Health indicators 0 0 Health indicators
1 1 Epidemiology 1 1 Epidemiology
2 2 Socioeconomic indicators 2 2 Socioeconomic indicators
# 3-191 Reserved # 3-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -0,0 +1,15 @@
# Code table 4.1 - Parameter category by product discipline
0 0 Temperature
1 1 Momentum
2 2 Charged particle mass and number
3 3 Electric and magnetic fields
4 4 Energetic particles
5 5 Waves
6 6 Solar electromagnetic emissions
7 7 Terrestrial electromagnetic emissions
8 8 Imagery
9 9 Ion-neutral coupling
10 10 Space weather indices
# 11-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -36,6 +36,7 @@
34 34 Visibility through ice fog (m) 34 34 Visibility through ice fog (m)
35 35 Visibility through blowing snow (m) 35 35 Visibility through blowing snow (m)
36 36 Presence of snow squalls (Code table 4.222) 36 36 Presence of snow squalls (Code table 4.222)
# 37-191 Reserved 37 37 Icing severity (Code table 4.228)
# 38-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -27,6 +27,7 @@
25 25 Snow depth at elevation bands (kg m-2) 25 25 Snow depth at elevation bands (kg m-2)
26 26 Soil heat flux (W m-2) 26 26 Soil heat flux (W m-2)
27 27 Soil depth (m) 27 27 Soil depth (m)
# 28-191 Reserved 28 28 Snow temperature (K)
# 29-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -4,13 +4,13 @@
2 2 Haines index (Numeric) 2 2 Haines index (Numeric)
3 3 Fire burned area (%) 3 3 Fire burned area (%)
4 4 Fosberg index (Numeric) 4 4 Fosberg index (Numeric)
5 5 Forest Fire Weather Index (Canadian Forest Service) (Numeric) 5 5 Forest Fire Weather Index (as defined by the Canadian Forest Service) (Numeric)
6 6 Fine Fuel Moisture Code (Canadian Forest Service) (Numeric) 6 6 Fine Fuel Moisture Code (as defined by the Canadian Forest Service) (Numeric)
7 7 Duff Moisture Code (Canadian Forest Service) (Numeric) 7 7 Duff Moisture Code (as defined by the Canadian Forest Service) (Numeric)
8 8 Drought Code (Canadian Forest Service) (Numeric) 8 8 Drought Code (as defined by the Canadian Forest Service) (Numeric)
9 9 Initial Fire Spread Index (Canadian Forest Service) (Numeric) 9 9 Initial Fire Spread Index (as defined by the Canadian Forest Service) (Numeric)
10 10 Fire Buildup Index (Canadian Forest Service) (Numeric) 10 10 Fire Buildup Index (as defined by the Canadian Forest Service) (Numeric)
11 11 Fire Daily Severity Rating (Canadian Forest Service) (Numeric) 11 11 Fire Daily Severity Rating (as defined by the Canadian Forest Service) (Numeric)
# 12-191 Reserved # 12-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -1,2 +1,6 @@
# Code table 4.2 - Parameter number by product discipline and parameter category # Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Glacier cover (Proportion)
1 1 Glacier temperature (K) 1 1 Glacier temperature (K)
# 2-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -1,6 +1,6 @@
# Code table 4.2 - Parameter number by product discipline and parameter category # Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Universal thermal climate index (K) 0 0 Universal thermal climate index (K)
1 1 Mean radiant temperature (K) 1 1 Mean radiant temperature (K)
# 2-191 Reserved # 2-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -2,13 +2,13 @@
0 0 Malaria cases (Fraction) 0 0 Malaria cases (Fraction)
1 1 Malaria circumsporozoite protein rate (Fraction) 1 1 Malaria circumsporozoite protein rate (Fraction)
2 2 Plasmodium falciparum entomological inoculation rate (Bites per day per person) 2 2 Plasmodium falciparum entomological inoculation rate (Bites per day per person)
3 3 Human bite rate by anopheles vectors (Bites per day per person) 3 3 Human bite rate by anopheles vectors (Bites per day per person)
4 4 Malaria immunity (Fraction) 4 4 Malaria immunity (Fraction)
5 5 Falciparum parasite rates (Fraction) 5 5 Falciparum parasite rates (Fraction)
6 6 Detectable falciparum parasite ratio (after day 10) (Fraction) 6 6 Detectable falciparum parasite ratio (after day 10) (Fraction)
7 7 Anopheles vector to host ratio (Fraction) 7 7 Anopheles vector to host ratio (Fraction)
8 8 Anopheles vector number (Number m-2) 8 8 Anopheles vector number (Number m-2)
9 9 Fraction of malarial vector reproductive habitat (Fraction) 9 9 Fraction of malarial vector reproductive habitat (Fraction)
# 10-191 Reserved # 10-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -1,5 +1,5 @@
# Code table 4.2 - Parameter number by product discipline and parameter category # Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Population density (Person m-2) 0 0 Population density (Person m-2)
# 1-191 Reserved # 1-191 Reserved
# 192-254 Reserved for local use # 192-254 Reserved for local use
255 255 Missing 255 255 Missing

View File

@ -0,0 +1,10 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Temperature (K)
1 1 Electron temperature (K)
2 2 Proton temperature (K)
3 3 Ion temperature (K)
4 4 Parallel temperature (K)
5 5 Perpendicular temperature (K)
# 6-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,8 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Velocity magnitude (speed) (m s-1)
1 1 1st vector component of velocity (coordinate system dependent) (m s-1)
2 2 2nd vector component of velocity (coordinate system dependent) (m s-1)
3 3 3rd vector component of velocity (coordinate system dependent) (m s-1)
# 4-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,12 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Scintillation index (sigma phi) (rad)
1 1 Scintillation index S4 (Numeric)
2 2 Rate of Change of TEC Index (ROTI) (TECU/min)
3 3 Disturbance Ionosphere Index Spatial Gradient (DIXSG) (Numeric)
4 4 Along Arc TEC Rate (AATR) (TECU/min)
5 5 Kp (Numeric)
6 6 Equatorial disturbance storm time index (Dst) (nT)
7 7 Auroral Electrojet (AE) (nT)
# 8-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,18 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Particle number density (m-3)
1 1 Electron density (m-3)
2 2 Proton density (m-3)
3 3 Ion density (m-3)
4 4 Vertical total electron content (TECU)
5 5 HF absorption frequency (Hz)
6 6 HF absorption (dB)
7 7 Spread F (m)
8 8 h (m)
9 9 Critical frequency (Hz)
10 10 Maximal usable frequency (MUF) (Hz)
11 11 Peak height (hm) (m)
12 12 Peak density (Nm) (m-3)
13 13 Equivalent slab thickness (tau) (km)
# 14-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,12 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Magnetic field magnitude (T)
1 1 1st vector component of magnetic field (T)
2 2 2nd vector component of magnetic field (T)
3 3 3rd vector component of magnetic field (T)
4 4 Electric field magnitude (V m-1)
5 5 1st vector component of electric field (V m-1)
6 6 2nd vector component of electric field (V m-1)
7 7 3rd vector component of electric field (V m-1)
# 8-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,11 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Proton flux (differential) ((m2 s sr eV)-1)
1 1 Proton flux (integral) ((m2 s sr )-1)
2 2 Electron flux (differential) ((m2 s sr eV)-1)
3 3 Electron flux (integral) ((m2 s sr)-1)
4 4 Heavy ion flux (differential) ((m2 s sr eV/nuc)-1)
5 5 Heavy ion flux (integral) ((m2 s sr)-1)
6 6 Cosmic ray neutron flux (/h)
# 7-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,8 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Amplitude (dB)
1 1 Phase (rad)
2 2 Frequency (Hz)
3 3 Wave length (m)
# 4-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,11 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Integrated solar irradiance (W m-2)
1 1 Solar X-ray flux (XRS long) (W m-2)
2 2 Solar X-ray flux (XRS short) (W m-2)
3 3 Solar EUV irradiance (W m-2)
4 4 Solar spectral irradiance (W m-2 nm-1)
5 5 F10.7 (W m-2 Hz-1)
6 6 Solar radio emissions (W m-2 Hz-1)
# 7-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,8 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Limb intensity (J m-2 s-1)
1 1 Disk intensity (J m-2 s-1)
2 2 Disk intensity day (J m-2 s-1)
3 3 Disk intensity night (J m-2 s-1)
# 4-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,12 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 X-ray radiance (W sr-1 m-2)
1 1 EUV radiance (W sr-1 m-2)
2 2 H-alpha radiance (W sr-1 m-2)
3 3 White light radiance (W sr-1 m-2)
4 4 CaII-K radiance (W sr-1 m-2)
5 5 White light coronagraph radiance (W sr-1 m-2)
6 6 Heliospheric radiance (W sr-1 m-2)
7 7 Thematic mask (Numeric)
# 8-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,7 @@
# Code table 4.2 - Parameter number by product discipline and parameter category
0 0 Pedersen conductivity (S m-1)
1 1 Hall conductivity (S m-1)
2 2 Parallel conductivity (S m-1)
# 3-191 Reserved
# 192-254 Reserved for local use
255 255 Missing

View File

@ -0,0 +1,8 @@
# Code table 4.228 - Icing severity
0 0 None
1 1 Trace
2 2 Light
3 3 Moderate
4 4 Severe
# 5-254 Reserved
255 255 Missing value

View File

@ -1,9 +1,9 @@
# Code table 4.240 - Type of distribution function # Code table 4.240 - Type of distribution function
0 0 No specific distribution function given 0 0 No specific distribution function given
1 1 Delta functions with spatially variable concentration and fixed diameters Dl (p1) in metre 1 1 Delta functions with spatially variable concentration and fixed diameters Dl (p1) in metre
2 2 Delta functions with spatially variable concentration and fixed masses Ml (p1) in kg 2 2 Delta functions with spatially variable concentration and fixed masses Ml (p1) in kg
3 3 Gaussian (normal) distribution with spatially variable concentration and fixed mean diameter Dl(p1) and variance(p2) 3 3 Gaussian (normal) distribution with spatially variable concentration and fixed mean diameter Dl(p1) and variance(p2)
4 4 Gaussian (normal) distribution with spatially variable concentration, mean diameter and variance 4 4 Gaussian (normal) distribution with spatially variable concentration, mean diameter and variance
5 5 Log-normal distribution with spatially variable number density, mean diameter and variance 5 5 Log-normal distribution with spatially variable number density, mean diameter and variance
6 6 Log-normal distribution with spatially variable number density, mean diameter and fixed variance(p1) 6 6 Log-normal distribution with spatially variable number density, mean diameter and fixed variance(p1)
7 7 Log-normal distribution with spatially variable number density and mass density and fixed variance(p1) and fixed particle density(p2) 7 7 Log-normal distribution with spatially variable number density and mass density and fixed variance(p1) and fixed particle density(p2)

View File

@ -23,7 +23,14 @@
23 23 Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration) (Bq m-3) 23 23 Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration) (Bq m-3)
24 24 Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration) (Bq m-3) 24 24 Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration) (Bq m-3)
25 25 Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity) (dBZ) 25 25 Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity) (dBZ)
# 26-99 Reserved # 26-29 Reserved
30 30 Specified radius from the center of the Sun (m)
31 31 Solar photosphere
32 32 Ionospheric D-region level
33 33 Ionospheric E-region level
34 34 Ionospheric F1-region level
35 35 Ionospheric F2-region level
# 36-99 Reserved
100 pl Isobaric surface (Pa) 100 pl Isobaric surface (Pa)
101 sfc Mean sea level 101 sfc Mean sea level
102 102 Specific altitude above mean sea level (m) 102 102 Specific altitude above mean sea level (m)
@ -47,7 +54,8 @@
# 120-149 Reserved # 120-149 Reserved
150 150 Generalized vertical height coordinate 150 150 Generalized vertical height coordinate
151 sol Soil level (Numeric) 151 sol Soil level (Numeric)
# 152-159 Reserved 152 152 Sea ice level (Numeric)
# 153-159 Reserved
160 160 Depth below sea level (m) 160 160 Depth below sea level (m)
161 161 Depth below water surface (m) 161 161 Depth below water surface (m)
162 162 Lake or river bottom (-) 162 162 Lake or river bottom (-)

View File

@ -4,7 +4,7 @@
2 2 Grid point data - complex packing 2 2 Grid point data - complex packing
3 3 Grid point data - complex packing and spatial differencing 3 3 Grid point data - complex packing and spatial differencing
4 4 Grid point data - IEEE floating point data 4 4 Grid point data - IEEE floating point data
# 5-39 Reserved # 5-39 Reserved
40 40 Grid point data - JPEG 2000 code stream format 40 40 Grid point data - JPEG 2000 code stream format
41 41 Grid point data - Portable Network Graphics (PNG) 41 41 Grid point data - Portable Network Graphics (PNG)
42 42 Grid point and spectral data - CCSDS recommended lossless compression 42 42 Grid point and spectral data - CCSDS recommended lossless compression
@ -12,15 +12,15 @@
50 50 Spectral data - simple packing 50 50 Spectral data - simple packing
51 51 Spherical harmonics data - complex packing 51 51 Spherical harmonics data - complex packing
# 52 Reserved # 52 Reserved
53 53 Spectral data for limited area models - complex packing 53 53 Spectral data for limited area models - complex packing
# 54-60 Reserved # 54-60 Reserved
61 61 Grid point data - simple packing with logarithm pre-processing 61 61 Grid point data - simple packing with logarithm pre-processing
# 62-199 Reserved # 62-199 Reserved
200 200 Run length packing with level values 200 200 Run length packing with level values
# 201-49151 Reserved # 201-49151 Reserved
# 49152-65534 Reserved for local use # 49152-65534 Reserved for local use
40000 40000 JPEG2000 Packing 40000 40000 JPEG2000 Packing
40010 40010 PNG pacling 40010 40010 PNG packing
50000 50000 Sperical harmonics ieee packing 50000 50000 Sperical harmonics ieee packing
50001 50001 Second order packing 50001 50001 Second order packing
50002 50002 Second order packing 50002 50002 Second order packing

View File

@ -2450,7 +2450,7 @@ static int create_keys(grib_accessor* a, long onlySubset, long startSubset, long
grib_sarray_delete(c, self->tempStrings); grib_sarray_delete(c, self->tempStrings);
self->tempStrings = NULL; self->tempStrings = NULL;
} }
self->tempStrings = grib_sarray_new(c, self->numberOfSubsets, 500); self->tempStrings = self->numberOfSubsets? grib_sarray_new(c, self->numberOfSubsets, 500) : NULL;
end = self->compressedData ? 1 : self->numberOfSubsets; end = self->compressedData ? 1 : self->numberOfSubsets;
groupNumber = 1; groupNumber = 1;

View File

@ -384,6 +384,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len)
} }
if (str == 0 || strlen(str) == 0) { if (str == 0 || strlen(str) == 0) {
grib_context_free(c, str);
*len = 0; *len = 0;
*val = 0; *val = 0;
return ret; return ret;

View File

@ -191,6 +191,7 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err)
char dictName[1024] = {0,}; char dictName[1024] = {0,};
char* localFilename = 0; char* localFilename = 0;
char** list = 0; char** list = 0;
char** cached_list = 0;
size_t len = 1024; size_t len = 1024;
grib_trie* dictionary = NULL; grib_trie* dictionary = NULL;
FILE* f = NULL; FILE* f = NULL;
@ -261,6 +262,8 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err)
dictionary = grib_trie_new(c); dictionary = grib_trie_new(c);
while (fgets(line, sizeof(line) - 1, f)) { while (fgets(line, sizeof(line) - 1, f)) {
DebugAssert( strlen(line) > 0 );
if (line[0] == '#') continue; /* Ignore first line with column titles */
list = string_split(line, "|"); list = string_split(line, "|");
grib_trie_insert(dictionary, list[0], list); grib_trie_insert(dictionary, list[0], list);
} }
@ -276,7 +279,16 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err)
} }
while (fgets(line, sizeof(line) - 1, f)) { while (fgets(line, sizeof(line) - 1, f)) {
DebugAssert( strlen(line) > 0 );
if (line[0] == '#') continue; /* Ignore first line with column titles */
list = string_split(line, "|"); list = string_split(line, "|");
/* Look for the descriptor code in the trie. It might be there from before */
cached_list = (char**)grib_trie_get(dictionary, list[0]);
if (cached_list) { /* If found, we are about to overwrite it. So free memory */
int i;
for (i = 0; cached_list[i] != NULL; ++i) free(cached_list[i]);
free(cached_list);
}
grib_trie_insert(dictionary, list[0], list); grib_trie_insert(dictionary, list[0], list);
} }

View File

@ -482,13 +482,13 @@ static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment)
static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment) static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment)
{ {
grib_dumper_bufr_decode_C* self = (grib_dumper_bufr_decode_C*)d; grib_dumper_bufr_decode_C* self = (grib_dumper_bufr_decode_C*)d;
char** values = NULL; char** values;
size_t size = 0; size_t size = 0, i = 0;
grib_context* c = NULL; grib_context* c = NULL;
int err = 0; int err = 0;
long count = 0; long count = 0;
int r = 0; int r = 0;
grib_handle* h = grib_handle_of_accessor(a); grib_handle* h = grib_handle_of_accessor(a);
c = a->context; c = a->context;
@ -542,6 +542,7 @@ static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comm
depth -= 2; depth -= 2;
} }
for (i = 0; i < size; i++) grib_context_free(c, values[i]);
grib_context_free(c, values); grib_context_free(c, values);
(void)err; /* TODO */ (void)err; /* TODO */
} }
@ -574,8 +575,10 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment)
err = grib_unpack_string(a, value, &size); err = grib_unpack_string(a, value, &size);
p = value; p = value;
r = compute_bufr_key_rank(h, self->keys, a->name); r = compute_bufr_key_rank(h, self->keys, a->name);
if (grib_is_missing_string(a, (unsigned char*)value, size)) if (grib_is_missing_string(a, (unsigned char*)value, size)) {
grib_context_free(c, value);
return; return;
}
while (*p) { while (*p) {
if (!isprint(*p)) if (!isprint(*p))

View File

@ -665,6 +665,7 @@ static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comm
depth -= 2; depth -= 2;
} }
for (i = 0; i < size; i++) grib_context_free(c, values[i]);
grib_context_free(c, values); grib_context_free(c, values);
(void)err; /* TODO */ (void)err; /* TODO */
} }

View File

@ -1776,8 +1776,11 @@ int grib_index_dump_file(FILE* fout, const char* filename)
return err; return err;
f = file; f = file;
while (f) { while (f) {
grib_file *prev = f;
fprintf(fout, "GRIB File: %s\n", f->name); fprintf(fout, "GRIB File: %s\n", f->name);
grib_context_free(c, f->name);
f = f->next; f = f->next;
grib_context_free(c, prev);
} }
fclose(fh); fclose(fh);
} }

View File

@ -37,7 +37,7 @@ fRules=${label}.filter
#----------------------------------------------------------- #-----------------------------------------------------------
files=`cat ${data_dir}/bufr/bufr_data_files.txt` files=`cat ${data_dir}/bufr/bufr_data_files.txt`
# Exclude BUFR files for various reasosn: # Exclude BUFR files for various reasons:
# ias1_240.bufr: Too large. The filter rules file generated is too big for the parser! # ias1_240.bufr: Too large. The filter rules file generated is too big for the parser!
# tropical_cyclone.bufr: multi-message # tropical_cyclone.bufr: multi-message
# syno_multi.bufr: multi-message # syno_multi.bufr: multi-message

View File

@ -19,205 +19,40 @@ tempLog=temp.${label}.log
tempSupp=temp.${label}.supp tempSupp=temp.${label}.supp
if test "x$ECCODES_TEST_WITH_VALGRIND" = "x"; then if test "x$ECCODES_TEST_WITH_VALGRIND" = "x"; then
echo "Environment variable ECCODES_TEST_WITH_VALGRIND not defined. Test disabled" echo "Environment variable ECCODES_TEST_WITH_VALGRIND not defined. Test disabled"
exit 0 exit 0
fi fi
# The presence of ECCODES_TEST_WITH_VALGRIND environment variable redefines # The presence of ECCODES_TEST_WITH_VALGRIND environment variable redefines
# tools_dir so we reset it to its original # tools_dir so we reset it to its original
tools_dir=$build_dir/bin tools_dir=$build_dir/bin
# --------------------------------------------------------- files=`cat ${data_dir}/bufr/bufr_data_files.txt`
# Test 1: Set of BUFR files which have zero leaks.
# Over time this list should increase
# ---------------------------------------------------------
bufr_files_zero_leaks="
207003.bufr
PraticaTemp.bufr
aaen_55.bufr
aben_55.bufr
aeolus_wmo_26.bufr
delayed_repl_01.bufr
goes16_nm.bufr
israel_observations_2017041010.bufr
mhen_55.bufr
modw_87.bufr
sentinel1.bufr
synop_multi_subset.bufr
tropical_cyclone.bufr
uegabe.bufr
"
VALGRIND_OPTIONS="--error-exitcode=1 --leak-check=full --log-file=$tempLog" VALGRIND_OPTIONS="--error-exitcode=1 --leak-check=full --log-file=$tempLog"
# bufr_filter has a small leak to do with parsing and action files not related to BUFR decoding, # bufr_filter has a small leak to do with parsing and action files not related to BUFR decoding,
# So instead we use bufr_ls to do the unpacking # So instead we use bufr_ls to do the unpacking
for bf in $bufr_files_zero_leaks; do for bf in $files; do
valgrind $VALGRIND_OPTIONS ${tools_dir}/bufr_ls -s unpack=1 ${data_dir}/bufr/$bf >/dev/null valgrind $VALGRIND_OPTIONS ${tools_dir}/bufr_ls -s unpack=1 ${data_dir}/bufr/$bf >/dev/null
done done
# --------------------------------------------------------- # Suppressions file
# Test 2: Set of BUFR files which have a small known leak. # ------------------
# Over time this list should decrease #cat > $tempSupp << EOF
# --------------------------------------------------------- #{
bufr_files_known_leaks=" # eccodes_string_split_suppression
ahws_139.bufr # Memcheck:Leak
airc_142.bufr # match-leak-kinds: definite
airc_144.bufr # fun:malloc
airs_57.bufr # fun:string_split
alws_139.bufr # fun:load_bufr_elements_table*
amda_144.bufr # fun:bufr_get_from_table
amsa_55.bufr # fun:accessor_bufr_elements_table_get_descriptor
amsb_55.bufr # fun:grib_bufr_descriptor_new
amse_55.bufr #}
amsu_55.bufr #EOF
amv2_87.bufr #VALGRIND_OPTIONS="--error-exitcode=1 --leak-check=full --log-file=$tempLog --suppressions=$tempSupp "
amv3_87.bufr
asbh_139.bufr
asbl_139.bufr
asca_139.bufr
asch_139.bufr
ascs_139.bufr
aseh_139.bufr
asel_139.bufr
ashs_139.bufr
atap_55.bufr
ateu_155.bufr
atms_201.bufr
atov_55.bufr
avhm_87.bufr
avhn_87.bufr
avhr_58.bufr
b002_95.bufr
b002_96.bufr
b003_56.bufr
b004_145.bufr
b005_87.bufr
b005_89.bufr
b006_96.bufr
b007_31.bufr
bssh_170.bufr
bssh_176.bufr
bssh_178.bufr
bssh_180.bufr
btem_109.bufr
buoy_27.bufr
cmwi_87.bufr
cmwn_87.bufr
cnow_28.bufr
cori_156.bufr
crit_202.bufr
csrh_189.bufr
emsg_189.bufr
emsg_87.bufr
eum_iasi_twt.bufr
eumetsat_iasi_co.bufr
euwv_87.bufr
fy3a_154.bufr
fy3b_154.bufr
g2nd_208.bufr
g2to_206.bufr
go15_87.bufr
goee_87.bufr
goes_87.bufr
goga_89.bufr
gosat.bufr
grst_26.bufr
gsd1_208.bufr
gsd2_208.bufr
gsd3_208.bufr
gst4_26.bufr
hirb_55.bufr
hirs_55.bufr
ias1_240.bufr
iasi_241.bufr
ifco_208.bufr
ikco_217.bufr
imssnow.bufr
itrg_208.bufr
itwt_233.bufr
j2eo_216.bufr
j2nb_216.bufr
jaso_214.bufr
kond_209.bufr
maer_207.bufr
meta_140.bufr
metar_with_2_bias.bufr
mhsa_55.bufr
mhsb_55.bufr
mhse_55.bufr
mloz_206.bufr
modi_87.bufr
monw_87.bufr
new.bufr
nomi_206.bufr
nos1_208.bufr
nos2_208.bufr
nos3_208.bufr
nos4_208.bufr
nos5_208.bufr
nos6_208.bufr
nos7_208.bufr
nos8_208.bufr
ocea_131.bufr
ocea_132.bufr
ocea_133.bufr
ocea_21.bufr
pgps_110.bufr
pilo_91.bufr
profiler_european.bufr
rada_250.bufr
rado_250.bufr
s4kn_165.bufr
sb19_206.bufr
sbu8_206.bufr
ship_13.bufr
ship_19.bufr
ship_9.bufr
smin_49.bufr
smis_49.bufr
smiu_49.bufr
smos_203.bufr
sn4k_165.bufr
soil_7.bufr
srals3_ecmwf4.bufr
srals3_eumetsat.bufr
ssbt_127.bufr
stuk_7.bufr
syno_1.bufr
syno_3.bufr
syno_4.bufr
syno_multi.bufr
temp-land-with-substituted-values.bufr
temp_101.bufr
temp_102.bufr
temp_106.bufr
tmr7_129.bufr
tros_31.bufr
wavb_134.bufr
"
cat > $tempSupp << EOF
{
eccodes_string_split_suppression
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:string_split
fun:load_bufr_elements_table*
fun:bufr_get_from_table
fun:accessor_bufr_elements_table_get_descriptor
fun:grib_bufr_descriptor_new
}
EOF
VALGRIND_OPTIONS="--error-exitcode=1 --leak-check=full --log-file=$tempLog --suppressions=$tempSupp"
# bufr_filter has a small leak to do with parsing and action files not related to BUFR decoding,
# So instead we use bufr_ls to do the unpacking
for bf in $bufr_files_known_leaks; do
valgrind $VALGRIND_OPTIONS ${tools_dir}/bufr_ls -s unpack=1 ${data_dir}/bufr/$bf >/dev/null
done
# Clean up # Clean up

View File

@ -80,6 +80,8 @@ if [ -x "${tools_dir}/grib_check_gaussian_grid" ]; then
${tools_dir}/grib_check_gaussian_grid $input $output ${tools_dir}/grib_check_gaussian_grid $input $output
fi fi
rm -f $output
#sed "s:toolsdir:${tools_dir}/:" ${tools_dir}/grib1to2.txt > ${tools_dir}/grib1to2.test #sed "s:toolsdir:${tools_dir}/:" ${tools_dir}/grib1to2.txt > ${tools_dir}/grib1to2.test
#chmod +x ${tools_dir}/grib1to2.test #chmod +x ${tools_dir}/grib1to2.test
#${tools_dir}/grib1to2.test -f ${data_dir}/test.grib1 ${data_dir}/test.grib2 #${tools_dir}/grib1to2.test -f ${data_dir}/test.grib1 ${data_dir}/test.grib2

View File

@ -30,7 +30,7 @@ rm -f out.gribidx $temp
tempIndex=temp.$label.$$.idx tempIndex=temp.$label.$$.idx
tempOut=temp.$label.$$.out tempOut=temp.$label.$$.out
tempRef=temp.$label.$$.ref tempRef=temp.$label.$$.ref
${tools_dir}/grib_index_build -o $tempIndex ${infile} >/dev/null ${tools_dir}/grib_index_build -N -o $tempIndex ${infile} >/dev/null
# Must remove first two lines and the last (filename specifics) # Must remove first two lines and the last (filename specifics)
${tools_dir}/grib_dump -D ${tempIndex} | sed '1,2d' | sed '$d' > $tempOut ${tools_dir}/grib_dump -D ${tempIndex} | sed '1,2d' | sed '$d' > $tempOut
@ -38,23 +38,63 @@ cat $tempOut
cat > $tempRef <<EOF cat > $tempRef <<EOF
Index keys: Index keys:
key name = mars.date
values = 20090129
key name = mars.time
values = 0
key name = mars.expver
values = 0001
key name = mars.stream
values = enfo
key name = mars.class
values = od
key name = mars.type
values = pf
key name = mars.step key name = mars.step
values = 12, 24, 48, 60 values = 12, 24, 48, 60
key name = mars.param key name = mars.param
values = 130.128, 129.128 values = 130.128, 129.128
key name = mars.levtype
values = pl
key name = mars.levelist key name = mars.levelist
values = 10, 50, 100, 200, 250, 300, 400, 500, 700, 850, 925, 1000 values = 10, 50, 100, 200, 250, 300, 400, 500, 700, 850, 925, 1000
key name = mars.number key name = mars.number
values = 1, 2, 3, 4 values = 1, 2, 3, 4
key name = mars.iteration
values = undef
key name = mars.domain
values = g
key name = mars.fcmonth
values = undef
key name = mars.fcperiod
values = undef
key name = mars.hdate
values = undef
key name = mars.method
values = undef
key name = mars.model
values = undef
key name = mars.origin
values = undef
key name = mars.quantile
values = undef
key name = mars.range
values = undef
key name = mars.refdate
values = undef
key name = mars.direction
values = undef
key name = mars.frequency
values = undef
Index count = 384 Index count = 384
EOF EOF
diff $tempRef $tempOut diff $tempRef $tempOut
${tools_dir}/grib_index_build -k mars.levtype -o $tempIndex ${data_dir}/tigge_cf_ecmwf.grib2 |\ ${tools_dir}/grib_index_build -N -k mars.levtype -o $tempIndex ${data_dir}/tigge_cf_ecmwf.grib2 |\
grep -q "mars.levtype = { sfc, pl, pv, pt }" grep -q "mars.levtype = { sfc, pl, pv, pt }"
${tools_dir}/grib_index_build -k mars.levtype:i -o $tempIndex ${data_dir}/tigge_cf_ecmwf.grib2 |\ ${tools_dir}/grib_index_build -N -k mars.levtype:i -o $tempIndex ${data_dir}/tigge_cf_ecmwf.grib2 |\
grep -q "mars.levtype = { 103, 1, 106, 100, 101, 8, 109, 107 }" grep -q "mars.levtype = { 103, 1, 106, 100, 101, 8, 109, 107 }"
# grib_compare with index files # grib_compare with index files
@ -66,8 +106,8 @@ tempGribFile2=temp.$label.$$.file2.grib
cat ${data_dir}/high_level_api.grib2 ${data_dir}/sample.grib2 > $tempGribFile1 cat ${data_dir}/high_level_api.grib2 ${data_dir}/sample.grib2 > $tempGribFile1
cat ${data_dir}/sample.grib2 ${data_dir}/high_level_api.grib2 > $tempGribFile2 cat ${data_dir}/sample.grib2 ${data_dir}/high_level_api.grib2 > $tempGribFile2
${tools_dir}/grib_index_build -o $tempIndex1 $tempGribFile1 ${tools_dir}/grib_index_build -N -o $tempIndex1 $tempGribFile1
${tools_dir}/grib_index_build -o $tempIndex2 $tempGribFile2 ${tools_dir}/grib_index_build -N -o $tempIndex2 $tempGribFile2
${tools_dir}/grib_compare $tempIndex1 $tempIndex2 ${tools_dir}/grib_compare $tempIndex1 $tempIndex2
rm -f $tempIndex1 $tempIndex2 $tempGribFile1 $tempGribFile2 rm -f $tempIndex1 $tempIndex2 $tempGribFile1 $tempGribFile2

View File

@ -104,3 +104,4 @@ ${tools_dir}/grib_get_data $outfile > /dev/null
### Clean up ### Clean up
rm -f $outfile $tempOut rm -f $outfile $tempOut
rm -f error.data

View File

@ -86,4 +86,4 @@ grep -q "'E', 'C', 'M', 'W', 'F', ' '" $tempTxt
# Clean up # Clean up
rm -f $tempOut $tempRef rm -f $tempOut $tempRef $tempTxt

View File

@ -559,7 +559,9 @@ static int grib_tool_index(grib_runtime_options* options)
} }
navigate(options->index2->fields, options); navigate(options->index2->fields, options);
/* TODO(masn): memleak
* grib_context_free(c, options->index2->current);
*/
grib_tool_finalise_action(options); grib_tool_finalise_action(options);
return 0; return 0;