Merge branch 'feature/ECC-1691-DestineClimateDT' of github.com:ecmwf/eccodes into feature/ECC-1691-DestineClimateDT

This commit is contained in:
Matthew Griffith 2023-10-09 14:59:04 +00:00
commit 12c2516410
59 changed files with 7028 additions and 431 deletions

View File

@ -1 +1 @@
2.32.0
2.33.0

View File

@ -52,6 +52,9 @@ transient unitsFactor=1 : hidden;
transient unitsBias=0 : hidden;
constant globalDomain = "g";
transient timeRangeIndicatorFromStepRange=-1 : hidden;
# Format specifiers for converting a number (float or int) into a string
transient formatForDoubles = "%g" : no_copy,hidden;
transient formatForLongs = "%ld" : no_copy,hidden;
# ECC-868
transient produceLargeConstantFields = 0 : hidden;

View File

@ -1,4 +1,4 @@
# Automatically generated by get_definitionsALL.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2020-11-05 10:29
# Automatically generated by get_definitionsALL.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2023-07-18 16:26
#paramId: 500000
#Pressure (S) (not reduced)
'Pressure (S) (not reduced)' = {
@ -5441,6 +5441,104 @@
indicatorOfParameter = 128 ;
}
#paramId: 500779
#DUMMY_129
'DUMMY_129' = {
table2Version = 254 ;
indicatorOfParameter = 129 ;
}
#paramId: 500780
#DUMMY_130
'DUMMY_130' = {
table2Version = 254 ;
indicatorOfParameter = 130 ;
}
#paramId: 500781
#DUMMY_131
'DUMMY_131' = {
table2Version = 254 ;
indicatorOfParameter = 131 ;
}
#paramId: 500782
#DUMMY_132
'DUMMY_132' = {
table2Version = 254 ;
indicatorOfParameter = 132 ;
}
#paramId: 500783
#DUMMY_133
'DUMMY_133' = {
table2Version = 254 ;
indicatorOfParameter = 133 ;
}
#paramId: 500784
#DUMMY_134
'DUMMY_134' = {
table2Version = 254 ;
indicatorOfParameter = 134 ;
}
#paramId: 500785
#DUMMY_135
'DUMMY_135' = {
table2Version = 254 ;
indicatorOfParameter = 135 ;
}
#paramId: 500786
#DUMMY_136
'DUMMY_136' = {
table2Version = 254 ;
indicatorOfParameter = 136 ;
}
#paramId: 500787
#DUMMY_137
'DUMMY_137' = {
table2Version = 254 ;
indicatorOfParameter = 137 ;
}
#paramId: 500788
#DUMMY_138
'DUMMY_138' = {
table2Version = 254 ;
indicatorOfParameter = 138 ;
}
#paramId: 500789
#DUMMY_139
'DUMMY_139' = {
table2Version = 254 ;
indicatorOfParameter = 139 ;
}
#paramId: 500790
#DUMMY_140
'DUMMY_140' = {
table2Version = 254 ;
indicatorOfParameter = 140 ;
}
#paramId: 500791
#DUMMY_141
'DUMMY_141' = {
table2Version = 254 ;
indicatorOfParameter = 141 ;
}
#paramId: 500792
#DUMMY_142
'DUMMY_142' = {
table2Version = 254 ;
indicatorOfParameter = 142 ;
}
#paramId: 500793
#DUMMY_143
'DUMMY_143' = {
@ -7342,13 +7440,6 @@
indicatorOfParameter = 18 ;
}
#paramId: 502505
#Visibility
'Visibility' = {
table2Version = 2 ;
indicatorOfParameter = 20 ;
}
#paramId: 502506
#Radar spectra (2)
'Radar spectra (2)' = {
@ -8657,6 +8748,13 @@
indicatorOfParameter = 71 ;
}
#paramId: 502946
#Visibility
'Visibility' = {
table2Version = 2 ;
indicatorOfParameter = 20 ;
}
#paramId: 503049
#Eddy dissipitation rate of TKE
'Eddy dissipitation rate of TKE' = {

View File

@ -1,4 +1,4 @@
# Automatically generated by get_definitionsALL.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE,do not edit! 2020-11-05 10:29
# Automatically generated by get_definitionsALL.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE,do not edit! 2023-07-18 16:26
#paramId: 500000
#Pressure (S) (not reduced)
'500000' = {
@ -2073,13 +2073,6 @@
indicatorOfParameter = 18 ;
}
#paramId: 502505
#Visibility
'502505' = {
table2Version = 2 ;
indicatorOfParameter = 20 ;
}
#paramId: 502506
#Radar spectra (2)
'502506' = {
@ -3381,6 +3374,13 @@
indicatorOfParameter = 35 ;
}
#paramId: 502946
#Visibility
'502946' = {
table2Version = 2 ;
indicatorOfParameter = 20 ;
}
#paramId: 503063
#Momentum Flux, U-Component (m)
'503063' = {
@ -7922,6 +7922,104 @@
indicatorOfParameter = 128 ;
}
#paramId: 500779
#DUMMY_129
'500779' = {
table2Version = 254 ;
indicatorOfParameter = 129 ;
}
#paramId: 500780
#DUMMY_130
'500780' = {
table2Version = 254 ;
indicatorOfParameter = 130 ;
}
#paramId: 500781
#DUMMY_131
'500781' = {
table2Version = 254 ;
indicatorOfParameter = 131 ;
}
#paramId: 500782
#DUMMY_132
'500782' = {
table2Version = 254 ;
indicatorOfParameter = 132 ;
}
#paramId: 500783
#DUMMY_133
'500783' = {
table2Version = 254 ;
indicatorOfParameter = 133 ;
}
#paramId: 500784
#DUMMY_134
'500784' = {
table2Version = 254 ;
indicatorOfParameter = 134 ;
}
#paramId: 500785
#DUMMY_135
'500785' = {
table2Version = 254 ;
indicatorOfParameter = 135 ;
}
#paramId: 500786
#DUMMY_136
'500786' = {
table2Version = 254 ;
indicatorOfParameter = 136 ;
}
#paramId: 500787
#DUMMY_137
'500787' = {
table2Version = 254 ;
indicatorOfParameter = 137 ;
}
#paramId: 500788
#DUMMY_138
'500788' = {
table2Version = 254 ;
indicatorOfParameter = 138 ;
}
#paramId: 500789
#DUMMY_139
'500789' = {
table2Version = 254 ;
indicatorOfParameter = 139 ;
}
#paramId: 500790
#DUMMY_140
'500790' = {
table2Version = 254 ;
indicatorOfParameter = 140 ;
}
#paramId: 500791
#DUMMY_141
'500791' = {
table2Version = 254 ;
indicatorOfParameter = 141 ;
}
#paramId: 500792
#DUMMY_142
'500792' = {
table2Version = 254 ;
indicatorOfParameter = 142 ;
}
#paramId: 500793
#DUMMY_143
'500793' = {

View File

@ -1,4 +1,4 @@
# Automatically generated by get_definitionsALL.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2020-11-05 10:29
# Automatically generated by get_definitionsALL.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2023-07-18 16:26
#paramId: 500000
#Pressure (S) (not reduced)
'PS' = {
@ -5441,6 +5441,104 @@
indicatorOfParameter = 128 ;
}
#paramId: 500779
#DUMMY_129
'DUMMY_129' = {
table2Version = 254 ;
indicatorOfParameter = 129 ;
}
#paramId: 500780
#DUMMY_130
'DUMMY_130' = {
table2Version = 254 ;
indicatorOfParameter = 130 ;
}
#paramId: 500781
#DUMMY_131
'DUMMY_131' = {
table2Version = 254 ;
indicatorOfParameter = 131 ;
}
#paramId: 500782
#DUMMY_132
'DUMMY_132' = {
table2Version = 254 ;
indicatorOfParameter = 132 ;
}
#paramId: 500783
#DUMMY_133
'DUMMY_133' = {
table2Version = 254 ;
indicatorOfParameter = 133 ;
}
#paramId: 500784
#DUMMY_134
'DUMMY_134' = {
table2Version = 254 ;
indicatorOfParameter = 134 ;
}
#paramId: 500785
#DUMMY_135
'DUMMY_135' = {
table2Version = 254 ;
indicatorOfParameter = 135 ;
}
#paramId: 500786
#DUMMY_136
'DUMMY_136' = {
table2Version = 254 ;
indicatorOfParameter = 136 ;
}
#paramId: 500787
#DUMMY_137
'DUMMY_137' = {
table2Version = 254 ;
indicatorOfParameter = 137 ;
}
#paramId: 500788
#DUMMY_138
'DUMMY_138' = {
table2Version = 254 ;
indicatorOfParameter = 138 ;
}
#paramId: 500789
#DUMMY_139
'DUMMY_139' = {
table2Version = 254 ;
indicatorOfParameter = 139 ;
}
#paramId: 500790
#DUMMY_140
'DUMMY_140' = {
table2Version = 254 ;
indicatorOfParameter = 140 ;
}
#paramId: 500791
#DUMMY_141
'DUMMY_141' = {
table2Version = 254 ;
indicatorOfParameter = 141 ;
}
#paramId: 500792
#DUMMY_142
'DUMMY_142' = {
table2Version = 254 ;
indicatorOfParameter = 142 ;
}
#paramId: 500793
#DUMMY_143
'DUMMY_143' = {
@ -7342,13 +7440,6 @@
indicatorOfParameter = 18 ;
}
#paramId: 502505
#Visibility
'VIS' = {
table2Version = 2 ;
indicatorOfParameter = 20 ;
}
#paramId: 502506
#Radar spectra (2)
'RDSP2' = {
@ -8657,6 +8748,13 @@
indicatorOfParameter = 71 ;
}
#paramId: 502946
#Visibility
'VIS' = {
table2Version = 2 ;
indicatorOfParameter = 20 ;
}
#paramId: 503049
#Eddy dissipitation rate of TKE
'EDR' = {

View File

@ -1,4 +1,4 @@
# Automatically generated by get_definitionsALL.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2020-11-05 10:29
# Automatically generated by get_definitionsALL.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2023-07-18 16:26
#paramId: 500000
#Pressure (S) (not reduced)
'Pa' = {
@ -5441,6 +5441,104 @@
indicatorOfParameter = 128 ;
}
#paramId: 500779
#DUMMY_129
'' = {
table2Version = 254 ;
indicatorOfParameter = 129 ;
}
#paramId: 500780
#DUMMY_130
'' = {
table2Version = 254 ;
indicatorOfParameter = 130 ;
}
#paramId: 500781
#DUMMY_131
'' = {
table2Version = 254 ;
indicatorOfParameter = 131 ;
}
#paramId: 500782
#DUMMY_132
'' = {
table2Version = 254 ;
indicatorOfParameter = 132 ;
}
#paramId: 500783
#DUMMY_133
'' = {
table2Version = 254 ;
indicatorOfParameter = 133 ;
}
#paramId: 500784
#DUMMY_134
'' = {
table2Version = 254 ;
indicatorOfParameter = 134 ;
}
#paramId: 500785
#DUMMY_135
'' = {
table2Version = 254 ;
indicatorOfParameter = 135 ;
}
#paramId: 500786
#DUMMY_136
'' = {
table2Version = 254 ;
indicatorOfParameter = 136 ;
}
#paramId: 500787
#DUMMY_137
'' = {
table2Version = 254 ;
indicatorOfParameter = 137 ;
}
#paramId: 500788
#DUMMY_138
'' = {
table2Version = 254 ;
indicatorOfParameter = 138 ;
}
#paramId: 500789
#DUMMY_139
'' = {
table2Version = 254 ;
indicatorOfParameter = 139 ;
}
#paramId: 500790
#DUMMY_140
'' = {
table2Version = 254 ;
indicatorOfParameter = 140 ;
}
#paramId: 500791
#DUMMY_141
'' = {
table2Version = 254 ;
indicatorOfParameter = 141 ;
}
#paramId: 500792
#DUMMY_142
'' = {
table2Version = 254 ;
indicatorOfParameter = 142 ;
}
#paramId: 500793
#DUMMY_143
'' = {
@ -7342,13 +7440,6 @@
indicatorOfParameter = 18 ;
}
#paramId: 502505
#Visibility
'm' = {
table2Version = 2 ;
indicatorOfParameter = 20 ;
}
#paramId: 502506
#Radar spectra (2)
'Numeric' = {
@ -8657,6 +8748,13 @@
indicatorOfParameter = 71 ;
}
#paramId: 502946
#Visibility
'm' = {
table2Version = 2 ;
indicatorOfParameter = 20 ;
}
#paramId: 503049
#Eddy dissipitation rate of TKE
'm2 s-3' = {

View File

@ -3029,7 +3029,7 @@
typeOfFirstFixedSurface = 1 ;
typeOfStatisticalProcessing = 1 ;
}
#Runoff water equivalent
#Runoff water equivalent (surface plus subsurface)
'rowe' = {
discipline = 2 ;
parameterCategory = 0 ;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3029,8 +3029,8 @@
typeOfFirstFixedSurface = 1 ;
typeOfStatisticalProcessing = 1 ;
}
#Runoff water equivalent
'Runoff water equivalent' = {
#Runoff water equivalent (surface plus subsurface)
'Runoff water equivalent (surface plus subsurface)' = {
discipline = 2 ;
parameterCategory = 0 ;
parameterNumber = 42 ;

View File

@ -3029,7 +3029,7 @@
typeOfFirstFixedSurface = 1 ;
typeOfStatisticalProcessing = 1 ;
}
#Runoff water equivalent
#Runoff water equivalent (surface plus subsurface)
'231002' = {
discipline = 2 ;
parameterCategory = 0 ;

View File

@ -16,3 +16,4 @@
"mhm_mrm" = { typeOfPostProcessing = 203; }
"pcrg_mrm" = { typeOfPostProcessing = 204; }
"meteogrid" = { typeOfPostProcessing = 205; }
"ecPoint" = { typeOfPostProcessing = 206; }

View File

@ -3029,7 +3029,7 @@
typeOfFirstFixedSurface = 1 ;
typeOfStatisticalProcessing = 1 ;
}
#Runoff water equivalent
#Runoff water equivalent (surface plus subsurface)
'rowe' = {
discipline = 2 ;
parameterCategory = 0 ;

View File

@ -0,0 +1,26 @@
# This file is automatically generated, don't edit!
#
# Table 2.120 contains (additional) scaled metadata
# for single radar volume scans for local use
#
# IMPORTANT "Meaning" must not contain numbers and parentheses, except in the "(unit)"!!!
#
# 2*(Code figure) Meaning
#
0 0 Undetected value
1 1 Missing value
# 2-5 Reserved (for further indicators of special data points)
6 6 Station height above mean sea level - mod (m)
7 7 Station height above mean sea level - true (m)
8 8 Reflectivity calibration constant (dB)
9 9 Reference reflectivity for echo top (dB)
10 10 Extended Nyquist (s-1)
11 11 High Nyquist (s-1)
12 12 Dual PRF ratio (proportion)
13 13 Range gate length (m)
14 14 Number of ranges averaged over (numeric)
15 15 Number of pulses averaged over (numeric)
16 16 ppiStartAzimuth (degree)
17 17 ppiConstantElevation (degree)
255 255 Missing

View File

@ -43,4 +43,8 @@
233 233 Percentage of precipitation in snow (from total prec.)(%)
234 234 Standard deviation of saturation deficit(Numeric)
235 235 Maximum snow height during contiguous accumulating snow period (coupled with snow age)(m)
236 236 Vertically-integrated zonal water flux (kg m-1 s-1)
237 237 Vertically-integrated meridional water flux (kg m-1 s-1)
238 238 Hail diameter (mm)
239 239 Extreme weather index (EWI) of total precipitation rate (kg m-2 s-1)
240 240 Extreme weather index (EWI) of snow precipitation rate (kg m-2 s-1)

View File

@ -6,3 +6,4 @@
196 196 Radar quality information (Proportion)
197 197 Radar blacklist (Numeric)
198 198 Height of radar beam above ground (m)
200 200 Reflectivity (dB)

View File

@ -1,2 +1,3 @@
# This file is automatically generated, don't edit!
192 192 Lightning potential index (J kg-1)
193 193 Lightning Potential Index from convection scheme, modified by convection index (J kg-1)

View File

@ -30,10 +30,15 @@
226 226 Eddy Dissipation Rate Total Col-Max. Upper UIR (<FL450)(m2/3 s-1)
227 227 Eddy dissipitation rate of TKE(m2 s-3)
228 228 Eddy Dissipation Rate Total Col-Max. Lower FIR (< FL165)(m2/3 s-1)
229 229 probability density function of EDP for turbulence greater well defined threshold and model grid box(%)
229 229 probability density function of EDP for turbulence greater well defined threshold and model grid box(%)
230 230 Ellrod and Knapp turbulence index1(s-2)
231 231 Ellrod and Knapp turbulence index2(s-2)
232 232 Divergence trend (scaled divergence tendency needed for CAT_DVI)(s-2)
233 233 Divergence modified turbulence index (Ellrod and Knox)(s-2)
234 234 Sea ice albedo - diffusive solar (0.3 - 5.0 m-6) (%)
235 235 Random pattern for the stochastically perturbed parametrization tendencies (SPPT) scheme at levels without tapering. If multi-scale random patterns are used, RAPA_SPPT is the sum of those. (Numeric)
236 236 Turbulence intensity (Numeric)
240 240 Potential flight distance PFD (gliding) (m)
241 241 Lifting ratio VST (gliding) (m s-1)
242 242 Probability for freezing precipitation/wet snow, TOT_PREC > 15mm, -3 < T_2M < 1 ?C
243 243 Probability for freezing precipitation with wind, TOT_PREC > 3mm, -3 < T_2M < 1 ?C, VMAX_10M > 10 m/s

View File

@ -9,3 +9,5 @@
199 199 Swiss coordinate (west-east) (m)
200 200 Swiss coordinate LV 95 (south-north) (m)
201 201 Swiss coordinate LV 95 (west-east) (m)
202 202 Solar elevation angle (degree)
203 203 Solar azimuth angle (degree)

View File

@ -0,0 +1,9 @@
# This file is automatically generated, dont edit!
192 192 solution of 2-d Helmholtz equations - needed for restart(Numeric)
193 193 Area weights for regular lon-lat grid(Numeric)
194 194 Gauss Boaga Coordinates West to East,East Sector(m)
195 195 Gauss Boaga Coordinates South to North,East Sector(m)
196 196 Gauss Boaga Coordinates West to East, West Sector(m)
197 197 Gauss Boaga Coordinates South to North, West Sector(m)
198 198 Swiss coodinate (south-north)(m)
199 199 Swiss coodinate (west-east)(m)

View File

@ -19,3 +19,6 @@
209 209 V-component of (vertical) wind shear vector between two levels (m s-1)
210 210 Updraft duration(s)
211 211 Updraft mask(Numeric)
212 212 U-component of mean wind (vertical mean over specified layer) (m s-1)
213 213 V-component of mean wind (vertical mean over specified layer) (m s-1)
214 214 Extreme weather index (EWI) of wind speed (gust) (m s-1)

View File

@ -17,3 +17,6 @@
207 207 Wet deposition of number concentration if rain reaches the surface (m-2 s-1)
208 208 Sedimentation of number concentration (m-2 s-1)
209 209 Aerosol backscatter (not attenuated) for given wavelength (m-1 sr-1)
210 210 Volumetric content of constituent in snow (m3 m-3)
211 211 Emission tuning factor for pollen (Numeric)
220 220 Mass median diameter (m)

View File

@ -5,3 +5,6 @@
195 195 3 hour pressure change(Pa-3h)
196 196 Height of -10 degree Celsius isotherm(m)
197 197 Pressure difference between two specific levels (Pa)
198 198 Slope of orography (using average of maximum gradient in different directions) (Numeric)
199 199 Updraught mass flux associated with passive clouds (kg m-2 s-1)
200 200 Updraught mass flux associated with active clouds (kg m-2 s-1)

View File

@ -13,3 +13,6 @@
204 204 Mass density of cloud ice(kg m-3)
205 205 Possible astronomical sunshine duration (s)
206 206 Relative duration of sunshine (DURSUN * 100 / DURSUN_M)(%)
210 210 Number of active clouds per horizontal unit area (m-2)
211 211 Number of passive clouds per horizontal unit area (m-2)
215 215 Cloud cover for use in radiative transfer (modified where large hydrometeors are present) (%)

View File

@ -1,2 +1,5 @@
# This file is automatically generated, don't edit!
192 192 Tidal tendencies (s2 m-2)
193 193 Water table depth (m)
194 194 Soil moisture saturation level (-)
195 195 Ground water runoff rate, aquifer (kg m-3 s-1)

View File

@ -0,0 +1,8 @@
# This file is automatically generated, don't edit!
0 0 Building area fraction (proportion: 0=no building, 1=whole urban area)
1 1 Street canyon aspect (height - width) ratio
2 2 Height of building (m)
3 3 Urban material thermal albedo (%)
4 4 Urban material shortwave (solar) albedo (%)
5 5 Volumetric heat capacity of urban material (capacity x density) (J m-3 K-1)
6 6 Heat conductivity of urban material (W m-1 K-1)

View File

@ -8,3 +8,10 @@
198 198 Covariance of soil moisture content (kg2 m-4)
199 199 Surface emissivity (Numeric)
200 200 Soil moisture index (multilayers) (Numeric)
201 201 Soil water mass flux (sum of conductive and diffusive fluxes) (kg m-2 s-1)
206 206 Number of snow layer (Numeric)
207 207 Height of new snow (without settling)
208 208 Temperature at interface or boundary of snow layers (e.g. in a multi-level/layer snow model) (K)
209 209 Volumetric ice content of snow layer (m3 m-3)
210 210 Volumetric water content of snow layer (m3 m-3)
211 211 Volumetric air content of snow layer (m3 m-3)

View File

@ -1,4 +1,4 @@
# This file is automatically generated, dont edit!
# This file is automatically generated, don't edit!
1 1 Downward long-wave radiation flux at surface based on T_2M(W m-2 )
2 2 Downward long-wave radiation flux at surface based on T_G(W m-2 )
3 3 Downward long-wave radiation flux at surface based on T_SO(0)(W m-2 )

View File

@ -0,0 +1,4 @@
# Code table 4.230 - Atmospheric chemical constituent type
63000 63000 Ice in ambient (a composite of different constituents)
63001 63001 Air in ambient (a composite of different constituents)

View File

@ -1,3 +1,4 @@
# This file is automatically generated, don't edit!
192 192 bias corrected ensemble forecast
193 193 calibrated forecast
194 194 calibrated ensemble f.
@ -6,12 +7,17 @@
197 197 smoothed forecast
198 198 smoothed and calibrated forecast
199 199 probability forecast derived by neighbourhood method
201 201 diff. analysis - first guess
200 200 diff. init. analysis - analysis*
201 201 diff. analysis - first guess
202 202 nudging
203 203 nudgecast
204 204 product derived by statistical model
205 205 deterministic forecast on ensemble mean(DOM)
206 206 time filtered bias
207 207 Time-filtered assimilation increment
208 208 Time-filtered assimilation increment, weighted with cos(2pi loc.time/day)
220 220 postprocessing
221 221 Stochastic model of the model error
225 225 EMVORADO
226 226 Dual Pol Doppler Radar
255 255 Missing

View File

@ -3,7 +3,8 @@
192 ML ML start level of mixed layer parcel(CAPE/CIN)
193 MU MU start level of most unstable parcel(CAPE/CIN)
194 LFC Level of free convection
#195-198 reserved
#195-197 reserved
198 radarElev radarElev Radar antenna elevation angle (degree)
199 radarElevComposite radarElevComposite radarElevComposite
#200 reserved
201 hor Surface: horizontal plane

View File

@ -11,12 +11,12 @@
011 icXla icXla (ICON LAM)
012 icXln icXln (ICON LAM nest)
013 icXls icXls (ICON LAM sub-nest)
014 dwd dwd (reserved ICON DWD)
015 dwd dwd (reserved ICON DWD)
016 dwd dwd (reserved ICON DWD)
017 dwd dwd (reserved ICON DWD)
018 dwd dwd (reserved ICON DWD)
019 dwd dwd (reserved ICON DWD)
014 icXls2 icXls2 (ICON LAM sub-nest 2)
015 icXls3 icXls3 (ICON LAM sub-nest 3)
016 rucXla rucXla (ICON LAM RUC)
017 rucXln rucXln (ICON LAM RUC nest)
018 rucXls rucXls (ICON LAM RUC sub-nest)
019 rucXls2 rucXls2 (ICON LAM RUC sub-nest 2)
020 icX1b icX1b (ICON Bw 1)
021 bw bw (reserved ICON Bw)
022 bw bw (reserved ICON Bw)

View File

@ -0,0 +1,11 @@
# (C) Copyright 2005- ECMWF.
# TEMPLATE 4.89, Post-processed quantile forecasts at a horizontal level or in a horizontal layer at a point in time
include "grib2/template.4.parameter.def"
include "grib2/template.4.postproc.def"
include "grib2/template.4.generating_process.def"
include "grib2/template.4.forecast_time.def"
include "grib2/template.4.point_in_time.def"
include "grib2/template.4.horizontal.def"
include "grib2/template.4.quantile.def"

View File

@ -0,0 +1,11 @@
# (C) Copyright 2005- ECMWF.
# TEMPLATE 4.90, Post-processed quantile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
include "grib2/template.4.parameter.def"
include "grib2/template.4.postproc.def"
include "grib2/template.4.generating_process.def"
include "grib2/template.4.forecast_time.def"
include "grib2/template.4.horizontal.def"
include "grib2/template.4.quantile.def"
include "grib2/template.4.statistical.def"

View File

@ -75,7 +75,7 @@ if (extraDim) {
}
}
# ECC-1333: levtype should be read-only in GRIB2
concept mars.levtype(unknown,"marsLevtypeConcept.def",conceptsDir2,conceptsDir1):no_copy;
concept mars.levtype(unknown,"marsLevtypeConcept.def",conceptsDir2,conceptsDir1):no_copy, read_only;
# GRIB-372: levelist alias does not pertain to surface parameters
if (levtype is "sfc" || levtype is "o2d") {
unalias mars.levelist;

View File

@ -3029,7 +3029,7 @@
typeOfFirstFixedSurface = 1 ;
typeOfStatisticalProcessing = 1 ;
}
#Runoff water equivalent
#Runoff water equivalent (surface plus subsurface)
'kg m**-2' = {
discipline = 2 ;
parameterCategory = 0 ;

View File

@ -0,0 +1,9 @@
alias mars.number = perturbationNumber;
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;

View File

@ -0,0 +1,9 @@
alias mars.number = perturbationNumber;
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;

View File

@ -0,0 +1,8 @@
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;
meta marsQuantile sprintf("%d:%d",quantileValue,totalNumberOfQuantiles);
alias mars.quantile = marsQuantile;

View File

@ -0,0 +1,9 @@
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;
meta marsQuantile sprintf("%d:%d",quantileValue,totalNumberOfQuantiles);
alias mars.quantile = marsQuantile;

View File

@ -0,0 +1,9 @@
alias mars.number = perturbationNumber;
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;

View File

@ -0,0 +1,9 @@
alias mars.number = perturbationNumber;
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;

View File

@ -0,0 +1,8 @@
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;
meta marsQuantile sprintf("%d:%d",quantileValue,totalNumberOfQuantiles);
alias mars.quantile = marsQuantile;

View File

@ -0,0 +1,9 @@
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;
meta marsQuantile sprintf("%d:%d",quantileValue,totalNumberOfQuantiles);
alias mars.quantile = marsQuantile;

View File

@ -0,0 +1,5 @@
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;

View File

@ -0,0 +1,5 @@
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;

View File

@ -0,0 +1,9 @@
alias mars.step = stepRange;
# We need this because 'postProcessing' is defined later
meta ecpt_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = ecpt_model;
meta marsQuantile sprintf("%d:%d",quantileValue,totalNumberOfQuantiles);
alias mars.quantile = marsQuantile;

View File

@ -69,3 +69,7 @@
88 gsd Gridded satellite data
89 ga GFAS analysis
90 gai Gridded analysis input
91 gbf Bias-corrected gridbox
92 pfc Point values
93 ppm Point value metrics
94 gwt Weather types

View File

@ -2152,7 +2152,7 @@ static grib_accessor* create_accessor_from_descriptor(const grib_accessor* a, gr
#define IS_COORDINATE_DESCRIPTOR(a) (a == 8 || a == 1 || a == 2 || a == 4 || a == 5 || a == 6 || a == 7)
#define NUMBER_OF_QUALIFIERS_PER_CATEGORY 256
#define NUMBER_OF_QUALIFIERS_CATEGORIES 7
#define MAX_NUMBER_OF_BITMAPS 5
#define MAX_NUMBER_OF_BITMAPS 8 // See ECC-1699
static const int number_of_qualifiers = NUMBER_OF_QUALIFIERS_PER_CATEGORY * NUMBER_OF_QUALIFIERS_CATEGORIES;
static const int significanceQualifierIndexArray[] = { -1, 0, 1, -1, 2, 3, 4, 5, 6 };

View File

@ -8,10 +8,6 @@
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
*/
/************************************************
* Enrico Fucile
***********************************************/
#include "grib_api_internal.h"
/*
This is used by make_class.pl
@ -115,13 +111,18 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len)
double val = 0;
size_t l = 1;
char repres[1024];
char format[32] = "%g";
grib_handle* h = grib_handle_of_accessor(a);
grib_unpack_double(a, &val, &l);
if ((val == GRIB_MISSING_DOUBLE) && ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0))
if ((val == GRIB_MISSING_DOUBLE) && ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0)) {
snprintf(repres, sizeof(repres), "MISSING");
else
snprintf(repres, sizeof(repres), "%g", val);
} else {
size_t size = sizeof(format);
grib_get_string(h, "formatForDoubles", format, &size);
snprintf(repres, sizeof(repres), format, val);
}
l = strlen(repres) + 1;

View File

@ -120,6 +120,8 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len)
long val = 0;
size_t l = 1;
char repres[1024];
char format[32] = "%ld";
grib_handle* h = grib_handle_of_accessor(a);
err = grib_unpack_long(a, &val, &l);
/* TODO: We should catch all errors but in this case the test ERA_Gen.sh will fail
@ -127,10 +129,13 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len)
/* if (err) return err; */
(void)err;
if ((val == GRIB_MISSING_LONG) && ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0))
if ((val == GRIB_MISSING_LONG) && ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0)) {
snprintf(repres, sizeof(repres), "MISSING");
else
snprintf(repres, sizeof(repres), "%ld", val);
} else {
size_t size = sizeof(format);
grib_get_string(h, "formatForLongs", format, &size);
snprintf(repres, sizeof(repres), format, val);
}
l = strlen(repres) + 1;

View File

@ -51,6 +51,12 @@ struct ibm_table_t
static ibm_table_t ibm_table = { 0, {0,}, {0,}, 0, 0 };
/**
.. seealso::
Documentation for ``init_ieee_float()`` in ``grib_ieeefloat.cc``
*/
static void init_ibm_table()
{
if (!ibm_table.inited) {

View File

@ -56,12 +56,42 @@ struct ieee_table_t
static ieee_table_t ieee_table = { 0, {0,}, {0,}, 0, 0 };
/**
.. _init_ieee_table:
Init IEEE Table
===============
Initializes the ieee_table with IEEE754 single precision (32-bit) values. Nearest smaller values (e.g., reference values for grid_simple and grid_ccsds) are taken from this table.
Details
-------
The table layout is as follows:
+-------+----------------+----------------------+
| idx (i) | multiplier (e) | value (v = mmin * e) |
+-------+----------------+----------------------+
| 1 | 2^(-149) | 0x800000 * 2^(-149) |
| 2 | 2^(-148) | 0x800000 * 2^(-148) |
| ... | ... | ... |
| 253 | 2^103 | 0x800000 * 2^103 |
| 254 | 2^104 | 0x800000 * 2^104 |
+-------+----------------+----------------------+
The vmin and vmax boundaries are defined as:
- vmin = 0x800000 * 2^(-149)
- vmax = 0xffffff * 2^104
*/
static void init_ieee_table()
{
if (!ieee_table.inited) {
unsigned long i;
unsigned long mmin = 0x800000;
unsigned long mmax = 0xffffff;
unsigned long mmin = 0x800000; // minimum mantissa
unsigned long mmax = 0xffffff; // maximum mantissa
double e = 1;
for (i = 1; i <= 104; i++) {
e *= 2;

View File

@ -95,6 +95,7 @@ if( HAVE_BUILD_TOOLS )
grib_packing_order
filter_substr
grib_uerra
grib_ecpoint
grib_s2s
grib_fire
# grib_true_imagery
@ -237,6 +238,7 @@ if( HAVE_BUILD_TOOLS )
grib_set_bytes
grib_set_force
bufr_ecc-556
codes_ecc-1698
gts_get
gts_ls
gts_count

45
tests/codes_ecc-1698.sh Executable file
View File

@ -0,0 +1,45 @@
#!/bin/sh
# (C) Copyright 2005- ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
#
# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
#
. ./include.ctest.sh
REDIRECT=/dev/null
label="codes_ecc-1698_test"
tempGrib=temp.$label.grib
tempBufr=temp.$label.bufr
tempFilt=temp.$label.filt
tempLog=temp.$label.log
tempRef=temp.$label.ref
sample_grib2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
sample_bufr4=$ECCODES_SAMPLES_PATH/BUFR4.tmpl
# Double to string
# ------------------
infile=$sample_grib2
result=$(${tools_dir}/grib_get -p maximum:s $infile)
[ "$result" = "1" ]
result=$(${tools_dir}/grib_get -s formatForDoubles=%e -p maximum:s $infile)
[ "$result" = "1.000000e+00" ]
infile=${data_dir}/sample.grib2
result=$(${tools_dir}/grib_get -s formatForDoubles=%e -p minimum:s $infile)
[ "$result" = "2.704668e+02" ]
# Integer to string
# ------------------
infile=${data_dir}/sample.grib2
result=$(${tools_dir}/grib_get -s formatForLongs=%lX -p year:s $infile)
[ "$result" = "7D8" ]
rm -f $tempGrib $tempBufr $tempFilt $tempLog $tempRef

55
tests/grib_ecpoint.sh Executable file
View File

@ -0,0 +1,55 @@
#!/bin/sh
# (C) Copyright 2005- ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
#
# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
#
. ./include.ctest.sh
label="grib_ecPoint_test"
tempGrib=temp.$label.grib
sample_grib2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
latest=`${tools_dir}/grib_get -p tablesVersionLatest $sample_grib2`
# 1. bias-corrected
## we check if we can set PDTN 73 and typeOfPostProcessing to ecPoint, ecPoint versioning and MARS type
${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=73,backgroundProcess=1,\
setLocalDefinition=1,grib2LocalSectionNumber=1,type=gbf,class=od,stream=enfo,\
generatingProcessIdentifier=2,typeOfPostProcessing=206 $sample_grib2 $tempGrib
grib_check_key_equals $tempGrib backgroundProcess,generatingProcessIdentifier,typeOfPostProcessing,type "1 2 206 gbf"
rm -f $tempGrib
# 2. Point values
## we check if we can set PDTN 90 and typeOfPostProcessing to ecPoint, ecPoint versioning, MARS type, quantile
${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=90,backgroundProcess=1,\
setLocalDefinition=1,grib2LocalSectionNumber=1,type=pfc,class=od,stream=enfo,\
totalNumberOfQuantiles=1000,quantileValue=995,\
generatingProcessIdentifier=2,typeOfPostProcessing=206 $sample_grib2 $tempGrib
grib_check_key_equals $tempGrib backgroundProcess,generatingProcessIdentifier,typeOfPostProcessing,type,quantile "1 2 206 pfc 995:1000"
rm -f $tempGrib
# 3. Point value metrics
## we check if we can set PDTN 90 and typeOfPostProcessing to ecPoint, ecPoint versioning, MARS type, quantile
${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=90,backgroundProcess=1,\
setLocalDefinition=1,grib2LocalSectionNumber=1,type=ppm,class=od,stream=enfo,\
totalNumberOfQuantiles=1000,quantileValue=995,\
generatingProcessIdentifier=2,typeOfPostProcessing=206 $sample_grib2 $tempGrib
grib_check_key_equals $tempGrib backgroundProcess,generatingProcessIdentifier,typeOfPostProcessing,type,quantile "1 2 206 ppm 995:1000"
rm -f $tempGrib
# 4. weather types
## we check if we can set PDTN 73 and typeOfPostProcessing to ecPoint, ecPoint versioning and MARS type
${tools_dir}/grib_set -s tablesVersion=$latest,productDefinitionTemplateNumber=73,backgroundProcess=1,\
setLocalDefinition=1,grib2LocalSectionNumber=1,type=gwt,class=od,stream=enfo,\
generatingProcessIdentifier=2,typeOfPostProcessing=206 $sample_grib2 $tempGrib
grib_check_key_equals $tempGrib backgroundProcess,generatingProcessIdentifier,typeOfPostProcessing,type "1 2 206 gwt"
# Clean up
rm -f $tempGrib

View File

@ -39,5 +39,14 @@ status=$?
set -e
[ $status -ne 0 ]
# Reforecasts
${tools_dir}/grib_set -s \
tablesVersion=14,productionStatusOfProcessedData=6,productDefinitionTemplateNumber=60 \
$grib2_sample $temp1
${tools_dir}/grib_ls -jm $temp1
grib_check_key_equals $temp1 mars.hdate '20070323'
grib_check_key_equals $temp1 mars.stream 'enfh'
grib_check_key_equals $temp1 isHindcast '1'
# Clean up
rm -f $temp1 $temp2 $tempSample