mirror of https://github.com/ecmwf/eccodes.git
Merge remote-tracking branch 'origin/develop' into feature/mtg2
This commit is contained in:
commit
497170a341
|
@ -17,6 +17,8 @@ grib_api.pc
|
|||
grib_api_f90.pc
|
||||
*.analyzerinfo
|
||||
*.snalyzerinfo
|
||||
tags
|
||||
src/convert_*.sh
|
||||
|
||||
# compiled source #
|
||||
###################
|
||||
|
@ -72,3 +74,4 @@ data/bufr/*test
|
|||
|
||||
build/
|
||||
*.back
|
||||
trash
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
22 22 ACMAD
|
||||
23 23 Mozambique (NMC)
|
||||
24 fapr Pretoria (RSMC)
|
||||
25 25 La Reunion (RSMC)
|
||||
26 26 Khabarovsk (RSMC)
|
||||
28 vabb New Delhi (IMD)
|
||||
29 dems New Delhi (NCMRWF)
|
||||
|
@ -58,12 +59,14 @@
|
|||
64 64 Honolulu
|
||||
65 65 Darwin (RSMC)
|
||||
67 67 Melbourne (RSMC)
|
||||
# 68 Reserved
|
||||
69 nzkl Wellington (RSMC/RAFC)
|
||||
71 71 Nadi (RSMC)
|
||||
72 72 Singapore
|
||||
73 73 Malaysia (NMC)
|
||||
74 egrr U.K. Met Office - Exeter
|
||||
76 76 Moscow (RSMC/RAFC)
|
||||
# 77 Reserved
|
||||
78 edzw Offenbach (RSMC)
|
||||
80 cnmc Rome (RSMC)
|
||||
82 eswi Norrkoping
|
||||
|
@ -93,15 +96,68 @@
|
|||
107 107 Uganda (NMC)
|
||||
108 108 United Republic of Tanzania (NMC)
|
||||
109 109 Zimbabwe (NMC)
|
||||
110 110 Hong-Kong
|
||||
110 110 Hong Kong
|
||||
111 111 Afghanistan (NMC)
|
||||
112 112 Bahrain (NMC)
|
||||
113 113 Bangladesh (NMC)
|
||||
114 114 Bhutan (NMC)
|
||||
115 115 Cambodia (NMC)
|
||||
116 116 Democratic People's Republic of Korea (NMC)
|
||||
117 117 Islamic Republic of Iran (NMC)
|
||||
118 118 Iraq (NMC)
|
||||
119 119 Kazakhstan (NMC)
|
||||
120 120 Kuwait (NMC)
|
||||
121 121 Kyrgyzstan (NMC)
|
||||
122 122 Lao People's Democratic Republic (NMC)
|
||||
123 123 "Macao China"
|
||||
124 124 Maldives (NMC)
|
||||
125 125 Myanmar (NMC)
|
||||
126 126 Nepal (NMC)
|
||||
127 127 Oman (NMC)
|
||||
128 128 Pakistan (NMC)
|
||||
129 129 Qatar (NMC)
|
||||
130 130 Yemen (NMC)
|
||||
131 131 Sri Lanka (NMC)
|
||||
132 132 Tajikistan (NMC)
|
||||
133 133 Turkmenistan (NMC)
|
||||
134 134 United Arab Emirates (NMC)
|
||||
135 135 Uzbekistan (NMC)
|
||||
136 136 Viet Nam (NMC)
|
||||
# 137-139 Reserved for other centres
|
||||
140 140 Bolivia (Plurinational State of) (NMC)
|
||||
141 141 Guyana (NMC)
|
||||
142 142 Paraguay (NMC)
|
||||
143 143 Suriname (NMC)
|
||||
144 144 Uruguay (NMC)
|
||||
145 145 French Guiana
|
||||
146 146 Brazilian Navy Hydrographic Centre
|
||||
147 147 National Commission on Space Activities (CONAE) - Argentina
|
||||
148 148 Brazilian Department of Airspace Control - DECEA
|
||||
# 149 Reserved for other centres
|
||||
150 150 Antigua and Barbuda (NMC)
|
||||
151 151 Bahamas (NMC)
|
||||
152 152 Barbados (NMC)
|
||||
153 153 Belize (NMC)
|
||||
154 154 British Caribbean Territories Centre
|
||||
155 155 San Jose
|
||||
156 156 Cuba (NMC)
|
||||
157 157 Dominica (NMC)
|
||||
158 158 Dominican Republic (NMC)
|
||||
159 159 El Salvador (NMC)
|
||||
160 160 US NOAA/NESDIS
|
||||
161 161 US NOAA Office of Oceanic and Atmospheric Research
|
||||
162 162 Guatemala (NMC)
|
||||
163 163 Haiti (NMC)
|
||||
164 164 Honduras (NMC)
|
||||
165 165 Jamaica (NMC)
|
||||
166 166 Mexico
|
||||
167 167 Curacao and Sint Maarten (NMC)
|
||||
168 168 Nicaragua (NMC)
|
||||
169 169 Panama (NMC)
|
||||
170 170 Saint Lucia (NMC)
|
||||
171 171 Trinidad and Tobago (NMC)
|
||||
172 172 French Departments in RA IV
|
||||
173 nasa US National Aeronautics and Space Administration (NASA)
|
||||
|
||||
174 174 Integrated Science Data Management/Marine Environmental Data Service (ISDM/MEDS - Canada)
|
||||
175 175 University Corporation for Atmospheric Research (UCAR) - United States
|
||||
176 176 Cooperative Institute for Meteorological Satellite Studies (CIMSS) - United States
|
||||
|
@ -110,9 +166,23 @@
|
|||
179 179 GeoOptics, Inc.
|
||||
180 180 PlanetiQ
|
||||
181 181 Atmospheric and Environmental Research (AER)
|
||||
|
||||
# 182-189 Reserved for other centres
|
||||
190 190 Cook Islands (NMC)
|
||||
191 191 French Polynesia (NMC)
|
||||
192 192 Tonga (NMC)
|
||||
193 193 Vanuatu (NMC)
|
||||
194 194 Brunei Darussalam (NMC)
|
||||
195 wiix Indonesia (NMC)
|
||||
196 196 Kiribati (NMC)
|
||||
197 197 Federated States of Micronesia (NMC)
|
||||
198 198 New Caledonia (NMC)
|
||||
199 199 Niue
|
||||
200 200 Papua New Guinea (NMC)
|
||||
201 201 Philippines (NMC)
|
||||
202 202 Samoa (NMC)
|
||||
203 203 Solomon Islands (NMC)
|
||||
204 niwa National Institute of Water and Atmospheric Research (NIWA - New Zealand)
|
||||
# 205-209 Reserved for other centres
|
||||
210 210 Frascati (ESA/ESRIN)
|
||||
211 211 Lannion
|
||||
212 212 Lisboa
|
||||
|
@ -139,18 +209,24 @@
|
|||
233 eidb Dublin
|
||||
234 234 Israel (NMC)
|
||||
235 ingv INGV
|
||||
236 236 Latvia (NMC)
|
||||
237 237 Lebanon (NMC)
|
||||
238 238 Lithuania (NMC)
|
||||
239 crfc CERFAX
|
||||
240 240 Malta (NMC)
|
||||
241 241 Monaco
|
||||
242 242 Romania (NMC)
|
||||
243 243 Syrian Arab Republic (NMC)
|
||||
244 vuwien VUWien
|
||||
245 knmi KNMI
|
||||
246 ifmk IfM-Kiel
|
||||
247 hadc Hadley Centre
|
||||
248 248 Montenegro (NMC)
|
||||
249 249 Barcelona Dust Forecast Center
|
||||
250 cosmo COnsortium for Small scale MOdelling (COSMO)
|
||||
251 251 Meteorological Cooperation on Operational NWP (MetCoOp)
|
||||
252 mpim Max Planck Institute for Meteorology (MPI-M)
|
||||
253 253 Alfred Wegener Institute (AWI)
|
||||
254 eums EUMETSAT Operation Centre
|
||||
255 consensus Consensus
|
||||
256 256 Angola (NMC)
|
||||
|
@ -184,9 +260,10 @@
|
|||
284 284 Sierra Leone (NMC)
|
||||
285 285 Somalia (NMC)
|
||||
286 286 Sudan (NMC)
|
||||
287 287 Swaziland (NMC)
|
||||
287 287 Eswatini (NMC)
|
||||
288 288 Togo (NMC)
|
||||
289 289 Zambia (NMC)
|
||||
290 290 EUMETNET E-Profile
|
||||
291 anso Alliance of International Science Organizations (Beijing, China)
|
||||
292 ufz Helmholtz Centre for Environmental Research
|
||||
293 293 University of Bremen
|
||||
|
@ -196,4 +273,28 @@
|
|||
297 297 The Nanjing Institute of Environmental Sciences (NIES)
|
||||
298 298 Dynamic Meteorology Laboratory (LMD)
|
||||
299 299 The Rutherford Appleton Laboratory (RAL)
|
||||
300 300 Greek Atomic Energy Commission (Greece)
|
||||
301 301 United Stated Environmental Protection Agency (USA)
|
||||
302 302 Autralian Radiation Protection and Nuclear Safety (Australia)
|
||||
303 303 Authority for Nuclear Safety and Radiation Protection (The Netherlands)
|
||||
304 304 Autorite de Surete Nucleaire (France)
|
||||
305 305 Bundesamt für Strahlenschutz (Germany)
|
||||
306 306 National Commission for Nuclear Activities Control (Romania)
|
||||
307 307 Consejo de Seguridad Nuclear (Spain)
|
||||
308 308 Danish Emergency Management Agency (Denmark)
|
||||
309 309 Norwegian Radiation Protection Agency (Norway)
|
||||
310 310 Federal Agency for Nuclear Control (Belgium)
|
||||
311 311 Institute of Radiation Protection and Dosimetry (Brazil)
|
||||
312 312 National Inspectorate for Nuclear Safety and Radiation Protection (Italy)
|
||||
313 313 Nuclear Regulatory Authority (Turkiye)
|
||||
314 314 Nuclear Regulation Authority (Japan)
|
||||
315 315 Nuclear Regulatory Agency (Bulgaria)
|
||||
316 316 Ukrainian Radiation Protection Institute (Ukriane)
|
||||
317 317 Health Canada Radio Protection Bureau (Canada)
|
||||
318 318 Portuguese Society for Radiation Protection (Portugal)
|
||||
319 319 Swedish Radiation Safety Authority (Sweden)
|
||||
320 320 Radiation and Nuclear Safety Authority (Finland)
|
||||
321 321 State Office for Nuclear Safety (Czechia)
|
||||
322 322 Nuclear Regulation Authority (Slovakia)
|
||||
# 323-65534 Reserved for other centres
|
||||
65535 65535 Missing value
|
||||
|
|
|
@ -195,12 +195,12 @@
|
|||
indicatorOfParameter = 28 ;
|
||||
}
|
||||
#Type of low vegetation
|
||||
'(code table 4.234)' = {
|
||||
'(Code table 4.234)' = {
|
||||
table2Version = 128 ;
|
||||
indicatorOfParameter = 29 ;
|
||||
}
|
||||
#Type of high vegetation
|
||||
'(code table 4.234)' = {
|
||||
'(Code table 4.234)' = {
|
||||
table2Version = 128 ;
|
||||
indicatorOfParameter = 30 ;
|
||||
}
|
||||
|
|
|
@ -486,7 +486,7 @@
|
|||
indicatorOfParameter = 253 ;
|
||||
}
|
||||
#Type of vegetation
|
||||
'Code Table JMA-252' = {
|
||||
'(Code table JMA-252)' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 252 ;
|
||||
}
|
||||
|
|
|
@ -4795,28 +4795,28 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow density
|
||||
'mrsn' = {
|
||||
'avg_rsn' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 61 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean low vegetation cover
|
||||
'mcvl' = {
|
||||
'avg_cvl' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 53 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean high vegetation cover
|
||||
'mcvh' = {
|
||||
'avg_cvh' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 54 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean sea ice area fraction
|
||||
'mci' = {
|
||||
'avg_ci' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4824,7 +4824,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean sea surface temperature
|
||||
'msst' = {
|
||||
'avg_sst' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4832,21 +4832,21 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean leaf area index, low vegetation
|
||||
'mlai_lv' = {
|
||||
'avg_lai_lv' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 55 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean leaf area index, high vegetation
|
||||
'mlai_hv' = {
|
||||
'avg_lai_hv' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 56 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total column liquid water
|
||||
'mtclw' = {
|
||||
'avg_tclw' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 69 ;
|
||||
|
@ -4855,7 +4855,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total column cloud ice water
|
||||
'mtciw' = {
|
||||
'avg_tciw' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 70 ;
|
||||
|
@ -4864,7 +4864,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 2 metre specific humidity
|
||||
'm2sh' = {
|
||||
'avg_2sh' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4875,7 +4875,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean lake mix-layer temperature
|
||||
'mlmlt' = {
|
||||
'avg_lmlt' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
|
@ -4884,7 +4884,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean lake mix-layer depth
|
||||
'mlmld' = {
|
||||
'avg_lmld' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4893,7 +4893,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 2 metre relative humidity
|
||||
'm2r' = {
|
||||
'avg_2r' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 1 ;
|
||||
|
@ -4903,70 +4903,77 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of snow cover
|
||||
'mfscov' = {
|
||||
'avg_fscov' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 121 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil temperature
|
||||
'msot' = {
|
||||
'avg_sot' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'msde' = {
|
||||
#Time-mean specific rain water content
|
||||
'avg_crwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'msnowc' = {
|
||||
#Time-mean specific snow water content
|
||||
'avg_cswc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean eta-coordinate vertical velocity
|
||||
'avg_etadot' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean geopotential
|
||||
'mz' = {
|
||||
'avg_z' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean temperature
|
||||
'mt' = {
|
||||
'avg_t' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean U component of wind
|
||||
'mu' = {
|
||||
'avg_u' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean V component of wind
|
||||
'mv' = {
|
||||
'avg_v' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 3 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific humidity
|
||||
'mq' = {
|
||||
'avg_q' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean surface pressure
|
||||
'msp' = {
|
||||
'avg_sp' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4974,14 +4981,14 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean vertical velocity
|
||||
'mw' = {
|
||||
'avg_w' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total column water
|
||||
'mtcw' = {
|
||||
'avg_tcw' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 51 ;
|
||||
|
@ -4990,7 +4997,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total column vertically-integrated water vapour
|
||||
'mtcwv' = {
|
||||
'avg_tcwv' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 64 ;
|
||||
|
@ -4998,30 +5005,44 @@
|
|||
typeOfSecondFixedSurface = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean vorticity (relative)
|
||||
'avg_vo' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean mean sea level pressure
|
||||
'mmsl' = {
|
||||
'avg_msl' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 0 ;
|
||||
typeOfFirstFixedSurface = 101 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean divergence
|
||||
'avg_d' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean relative humidity
|
||||
'mr' = {
|
||||
'avg_r' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean boundary layer height
|
||||
'mblh' = {
|
||||
'avg_blh' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 10 metre U wind component
|
||||
'm10u' = {
|
||||
'avg_10u' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 2 ;
|
||||
|
@ -5031,7 +5052,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 10 metre V wind component
|
||||
'm10v' = {
|
||||
'avg_10v' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 3 ;
|
||||
|
@ -5041,7 +5062,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 2 metre dewpoint temperature
|
||||
'm2d' = {
|
||||
'avg_2d' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
|
@ -5050,15 +5071,22 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean ozone mass mixing ratio
|
||||
'avg_o3' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean temperature of snow layer
|
||||
'mtsn' = {
|
||||
'avg_tsn' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 28 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean forecast surface roughness
|
||||
'mfsr' = {
|
||||
'avg_fsr' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 1 ;
|
||||
|
@ -5066,13 +5094,131 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean forecast logarithm of surface roughness for heat
|
||||
'mflsr' = {
|
||||
'avg_flsr' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 54 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud liquid water content
|
||||
'avg_clwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud ice water content
|
||||
'avg_ciwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of cloud cover
|
||||
'avg_cc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean K index
|
||||
'avg_kx' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total totals index
|
||||
'avg_totalx' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean discharge from rivers or streams
|
||||
'avg_dis' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (total layer)
|
||||
'avg_swit' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (root zone)
|
||||
'avg_swir' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 167 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index(layer)
|
||||
'avg_swil' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 151 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain depth
|
||||
'avg_flddep' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded fraction
|
||||
'avg_fldffr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded area
|
||||
'avg_fldfar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river fraction
|
||||
'avg_rivfr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river area
|
||||
'avg_rivar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of river coverage plus river related flooding
|
||||
'avg_rivcffr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean area of river coverage plus river related flooding
|
||||
'avg_rivcfar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Cross sectional area of flow in channel
|
||||
'chcross' = {
|
||||
discipline = 1 ;
|
||||
|
@ -5139,26 +5285,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 15 ;
|
||||
}
|
||||
#Mean discharge in the last 6 hours
|
||||
'dis06' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'dis24' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Snow depth at elevation bands
|
||||
'sd_elev' = {
|
||||
discipline = 2 ;
|
||||
|
@ -5211,6 +5337,48 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#Floodplain depth
|
||||
'flddep' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
}
|
||||
#Floodplain flooded fraction
|
||||
'fldffr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
}
|
||||
#Floodplain flooded area
|
||||
'fldfar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#River fraction
|
||||
'rivfr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
}
|
||||
#River area
|
||||
'rivar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
}
|
||||
#Fraction of river coverage plus river related flooding
|
||||
'rivcffr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
}
|
||||
#Area of river coverage plus river related flooding
|
||||
'rivcfar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
}
|
||||
#Latitude
|
||||
'lat' = {
|
||||
discipline = 0 ;
|
||||
|
@ -7168,6 +7336,48 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 8 ;
|
||||
}
|
||||
#Standardised Precipitation Index (SPI)
|
||||
'spi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Standardised Precipitation Evapotranspiration Index (SPEI)
|
||||
'spei' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Standardised Streamflow Index (SSFI)
|
||||
'ssfi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Standardised Reservoir Supply Index (SRSI)
|
||||
'srsi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Standardised Water-level Index (SWI)
|
||||
'swi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Standardised Snowmelt and Rain Index (SMRI)
|
||||
'smri' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Streamflow Drought Index (SDI)
|
||||
'sdi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Universal thermal climate index
|
||||
'utci' = {
|
||||
discipline = 20 ;
|
||||
|
@ -7305,12 +7515,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Sea ice area fraction
|
||||
'siconc' = {
|
||||
|
@ -8415,12 +8619,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean sea ice area fraction
|
||||
|
@ -10012,6 +10210,38 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Aerosol optical depth
|
||||
'aod' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 102 ;
|
||||
}
|
||||
#Single scattering albedo
|
||||
'ssa' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 103 ;
|
||||
}
|
||||
#Asymmetry Factor
|
||||
'asymf' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 104 ;
|
||||
}
|
||||
#Aerosol backscatter from top of atmosphere
|
||||
'aerbscattoa' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 107 ;
|
||||
typeOfFirstFixedSurface = 8 ;
|
||||
}
|
||||
#Aerosol backscatter from ground
|
||||
'aerbscatgnd' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 108 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
}
|
||||
#Pressure tendency
|
||||
'ptend' = {
|
||||
discipline = 0 ;
|
||||
|
@ -10540,6 +10770,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 44 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'wsp' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 98 ;
|
||||
}
|
||||
#Skin reservoir content
|
||||
'srcrea' = {
|
||||
discipline = 2 ;
|
||||
|
|
|
@ -153,7 +153,21 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'msd_m' = {
|
||||
'avg_sde' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'avg_snowc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'avg_sd_m' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -161,7 +175,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean low cloud cover
|
||||
'mlcc_frac' = {
|
||||
'avg_lcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -169,7 +183,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean medium cloud cover
|
||||
'mmcc_frac' = {
|
||||
'avg_mcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -177,7 +191,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean high cloud cover
|
||||
'mhcc_frac' = {
|
||||
'avg_hcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -185,7 +199,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean forecast albedo
|
||||
'mfal_frac' = {
|
||||
'avg_fal_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
|
|
|
@ -153,6 +153,20 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'Time-mean snow depth' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'Time-mean snow cover' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'Time-mean snow depth' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -153,6 +153,20 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'235095' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'235096' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'235141' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -153,7 +153,21 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'msd_m' = {
|
||||
'avg_sde' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'avg_snowc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'avg_sd_m' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -161,7 +175,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean low cloud cover
|
||||
'mlcc_frac' = {
|
||||
'avg_lcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -169,7 +183,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean medium cloud cover
|
||||
'mmcc_frac' = {
|
||||
'avg_mcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -177,7 +191,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean high cloud cover
|
||||
'mhcc_frac' = {
|
||||
'avg_hcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -185,7 +199,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean forecast albedo
|
||||
'mfal_frac' = {
|
||||
'avg_fal_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
|
|
|
@ -153,6 +153,20 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'm' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'%' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'm of water equivalent' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
# modelName: Contribution from Daniel Lee @ DWD
|
||||
|
||||
# defintions for Roma (COSMO LEPS)
|
||||
'cosmo-leps' = {
|
||||
subCentre=98;
|
||||
grib2LocalSectionNumber=28;
|
||||
}
|
|
@ -13832,15 +13832,23 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'msd_m' = {
|
||||
'avg_sd_m' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 254 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean logarithm of surface pressure
|
||||
'avg_lnsp' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean low cloud cover
|
||||
'mlcc_frac' = {
|
||||
'avg_lcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -13848,7 +13856,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean medium cloud cover
|
||||
'mmcc_frac' = {
|
||||
'avg_mcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -13856,7 +13864,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean high cloud cover
|
||||
'mhcc_frac' = {
|
||||
'avg_hcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -13864,7 +13872,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean forecast albedo
|
||||
'mfal_frac' = {
|
||||
'avg_fal_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
|
@ -16607,12 +16615,6 @@
|
|||
parameterCategory = 140 ;
|
||||
parameterNumber = 250 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'wsp' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
#Indicates a missing value
|
||||
'p255.140' = {
|
||||
discipline = 192 ;
|
||||
|
|
|
@ -1771,3 +1771,9 @@
|
|||
parameterCategory = 172 ;
|
||||
parameterNumber = 212 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'wsp' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
|
|
|
@ -13833,6 +13833,14 @@
|
|||
parameterNumber = 254 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean logarithm of surface pressure
|
||||
'Time-mean logarithm of surface pressure' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean low cloud cover
|
||||
'Time-mean low cloud cover' = {
|
||||
localTablesVersion = 1 ;
|
||||
|
@ -16601,12 +16609,6 @@
|
|||
parameterCategory = 140 ;
|
||||
parameterNumber = 250 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'Wave spectral peakedness' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
#Indicates a missing value
|
||||
'Indicates a missing value' = {
|
||||
discipline = 192 ;
|
||||
|
|
|
@ -1771,3 +1771,9 @@
|
|||
parameterCategory = 172 ;
|
||||
parameterNumber = 212 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'Wave spectral peakedness' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
|
|
|
@ -13833,6 +13833,14 @@
|
|||
parameterNumber = 254 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean logarithm of surface pressure
|
||||
'235152' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean low cloud cover
|
||||
'235186' = {
|
||||
localTablesVersion = 1 ;
|
||||
|
@ -16601,12 +16609,6 @@
|
|||
parameterCategory = 140 ;
|
||||
parameterNumber = 250 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'140254' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
#Indicates a missing value
|
||||
'140255' = {
|
||||
discipline = 192 ;
|
||||
|
|
|
@ -1771,3 +1771,9 @@
|
|||
parameterCategory = 172 ;
|
||||
parameterNumber = 212 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'140254' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
|
|
|
@ -13826,15 +13826,23 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'msd_m' = {
|
||||
'avg_sd_m' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 254 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean logarithm of surface pressure
|
||||
'avg_lnsp' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean low cloud cover
|
||||
'mlcc_frac' = {
|
||||
'avg_lcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -13842,7 +13850,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean medium cloud cover
|
||||
'mmcc_frac' = {
|
||||
'avg_mcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -13850,7 +13858,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean high cloud cover
|
||||
'mhcc_frac' = {
|
||||
'avg_hcc_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
|
@ -13858,7 +13866,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean forecast albedo
|
||||
'mfal_frac' = {
|
||||
'avg_fal_frac' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
|
@ -16601,12 +16609,6 @@
|
|||
parameterCategory = 140 ;
|
||||
parameterNumber = 250 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'wsp' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
#Indicates a missing value
|
||||
'~' = {
|
||||
discipline = 192 ;
|
||||
|
|
|
@ -1771,3 +1771,9 @@
|
|||
parameterCategory = 172 ;
|
||||
parameterNumber = 212 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'wsp' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
|
|
|
@ -13833,6 +13833,14 @@
|
|||
parameterNumber = 254 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean logarithm of surface pressure
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean low cloud cover
|
||||
'(0 - 1)' = {
|
||||
localTablesVersion = 1 ;
|
||||
|
@ -16601,12 +16609,6 @@
|
|||
parameterCategory = 140 ;
|
||||
parameterNumber = 250 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'dimensionless' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
#Indicates a missing value
|
||||
'~' = {
|
||||
discipline = 192 ;
|
||||
|
|
|
@ -1771,3 +1771,9 @@
|
|||
parameterCategory = 172 ;
|
||||
parameterNumber = 212 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'dimensionless' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 140 ;
|
||||
parameterNumber = 254 ;
|
||||
}
|
||||
|
|
|
@ -1,107 +0,0 @@
|
|||
# modelName: Contribution from Daniel Lee @ DWD
|
||||
|
||||
# definitions for Offenbach
|
||||
'cosmo_eu' = {
|
||||
generatingProcessIdentifier=131;
|
||||
}
|
||||
'cosmo_eu' = {
|
||||
generatingProcessIdentifier=132;
|
||||
}
|
||||
'cosmo_eu' = {
|
||||
generatingProcessIdentifier=134;
|
||||
}
|
||||
'cosmo_eu' = {
|
||||
generatingProcessIdentifier=135;
|
||||
}
|
||||
'cosmo_de' = {
|
||||
generatingProcessIdentifier=137;
|
||||
}
|
||||
'cosmo_de' = {
|
||||
generatingProcessIdentifier=138;
|
||||
}
|
||||
'cosmo_de-eps' = {
|
||||
generatingProcessIdentifier=137;
|
||||
typeOfEnsembleForecast=192;
|
||||
}
|
||||
'cosmo_de-eps' = {
|
||||
generatingProcessIdentifier=138;
|
||||
typeOfEnsembleForecast=192;
|
||||
}
|
||||
|
||||
#DWD model names for ICON
|
||||
'icogl' = {
|
||||
gridDefinitionTemplateNumber=101;
|
||||
generatingProcessIdentifier=1;
|
||||
}
|
||||
'icogl130' = {
|
||||
numberOfGridUsed=26;
|
||||
generatingProcessIdentifier=1;
|
||||
}
|
||||
'icogl130l90' = {
|
||||
numberOfGridUsed=26;
|
||||
nlev=91;
|
||||
generatingProcessIdentifier=1;
|
||||
}
|
||||
'icogl130p' = {
|
||||
numberOfGridUsed=26;
|
||||
typeOfFirstFixedSurface=100;
|
||||
generatingProcessIdentifier=1;
|
||||
}
|
||||
'icoeu'= {
|
||||
gridDefinitionTemplateNumber=101;
|
||||
generatingProcessIdentifier=2;
|
||||
}
|
||||
'icoeu065' = {
|
||||
numberOfGridUsed=27;
|
||||
generatingProcessIdentifier=2;
|
||||
}
|
||||
'icoeu065l60' = {
|
||||
numberOfGridUsed=27;
|
||||
nlev=61;
|
||||
generatingProcessIdentifier=2;
|
||||
}
|
||||
'icreu' = {
|
||||
gridDefinitionTemplateNumber=0;
|
||||
generatingProcessIdentifier=2;
|
||||
}
|
||||
'icreu_0.625' = {
|
||||
gridDefinitionTemplateNumber=0;
|
||||
Dx=62500;
|
||||
Dy=62500;
|
||||
generatingProcessIdentifier=2;
|
||||
}
|
||||
'icreu_0.625l60' = {
|
||||
gridDefinitionTemplateNumber=0;
|
||||
Dx=62500;
|
||||
Dy=62500;
|
||||
nlev=61;
|
||||
generatingProcessIdentifier=2;
|
||||
}
|
||||
'icreu_0.625p' = {
|
||||
gridDefinitionTemplateNumber=0;
|
||||
Dx=62500;
|
||||
Dy=62500;
|
||||
typeOfFirstFixedSurface=100;
|
||||
generatingProcessIdentifier=2;
|
||||
}
|
||||
'icreu_0.625z' = {
|
||||
gridDefinitionTemplateNumber=0;
|
||||
Dx=62500;
|
||||
Dy=62500;
|
||||
typeOfFirstFixedSurface=102;
|
||||
generatingProcessIdentifier=2;
|
||||
}
|
||||
'icrde' = {
|
||||
gridDefinitionTemplateNumber=0;
|
||||
generatingProcessIdentifier=3;
|
||||
}
|
||||
'icrgl' = {
|
||||
gridDefinitionTemplateNumber=0;
|
||||
generatingProcessIdentifier=1;
|
||||
}
|
||||
'icrgl_0.25' = {
|
||||
gridDefinitionTemplateNumber=0;
|
||||
Dx=250000;
|
||||
Dy=250000;
|
||||
generatingProcessIdentifier=1;
|
||||
}
|
|
@ -27,6 +27,27 @@
|
|||
parameterNumber = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Vorticity (relative)
|
||||
'atmosphere_relative_vorticity' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Divergence
|
||||
'divergence_of_wind' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Ozone mass mixing ratio
|
||||
'mass_fraction_of_ozone_in_air' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Snow depth
|
||||
'lwe_thickness_of_surface_snow_amount' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,4 +1,25 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Specific rain water content
|
||||
'Specific rain water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific snow water content
|
||||
'Specific snow water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Eta-coordinate vertical velocity
|
||||
'Eta-coordinate vertical velocity' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Geopotential
|
||||
'Geopotential' = {
|
||||
discipline = 0 ;
|
||||
|
@ -27,6 +48,13 @@
|
|||
parameterNumber = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Vorticity (relative)
|
||||
'Vorticity (relative)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Logarithm of surface pressure
|
||||
'Logarithm of surface pressure' = {
|
||||
discipline = 0 ;
|
||||
|
@ -34,6 +62,49 @@
|
|||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
}
|
||||
#Logarithm of surface pressure
|
||||
'Logarithm of surface pressure' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Divergence
|
||||
'Divergence' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Ozone mass mixing ratio
|
||||
'Ozone mass mixing ratio' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud liquid water content
|
||||
'Specific cloud liquid water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud ice water content
|
||||
'Specific cloud ice water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Fraction of cloud cover
|
||||
'Fraction of cloud cover' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Temperature difference
|
||||
'Temperature difference' = {
|
||||
discipline = 192 ;
|
||||
|
@ -479,6 +550,13 @@
|
|||
parameterCategory = 228 ;
|
||||
parameterNumber = 103 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'Precipitation type' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Snow cover
|
||||
'Snow cover' = {
|
||||
discipline = 0 ;
|
||||
|
@ -486,6 +564,20 @@
|
|||
parameterNumber = 42 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#K index
|
||||
'K index' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total totals index
|
||||
'Total totals index' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Sea water potential temperature
|
||||
'Sea water potential temperature' = {
|
||||
discipline = 192 ;
|
||||
|
|
|
@ -1,4 +1,25 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Specific rain water content
|
||||
'75' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific snow water content
|
||||
'76' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Eta-coordinate vertical velocity
|
||||
'77' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Geopotential
|
||||
'129' = {
|
||||
discipline = 0 ;
|
||||
|
@ -27,6 +48,13 @@
|
|||
parameterNumber = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Vorticity (relative)
|
||||
'138' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Logarithm of surface pressure
|
||||
'152' = {
|
||||
discipline = 0 ;
|
||||
|
@ -34,6 +62,49 @@
|
|||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
}
|
||||
#Logarithm of surface pressure
|
||||
'152' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Divergence
|
||||
'155' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Ozone mass mixing ratio
|
||||
'203' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud liquid water content
|
||||
'246' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud ice water content
|
||||
'247' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Fraction of cloud cover
|
||||
'248' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Temperature difference
|
||||
'200130' = {
|
||||
discipline = 192 ;
|
||||
|
@ -479,6 +550,13 @@
|
|||
parameterCategory = 228 ;
|
||||
parameterNumber = 103 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'260015' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Snow cover
|
||||
'260038' = {
|
||||
discipline = 0 ;
|
||||
|
@ -486,6 +564,20 @@
|
|||
parameterNumber = 42 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#K index
|
||||
'260121' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total totals index
|
||||
'260123' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Sea water potential temperature
|
||||
'151129' = {
|
||||
discipline = 192 ;
|
||||
|
|
|
@ -1,4 +1,25 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Specific rain water content
|
||||
'crwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific snow water content
|
||||
'cswc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Eta-coordinate vertical velocity
|
||||
'etadot' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Geopotential
|
||||
'z' = {
|
||||
discipline = 0 ;
|
||||
|
@ -27,6 +48,13 @@
|
|||
parameterNumber = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Vorticity (relative)
|
||||
'vo' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Logarithm of surface pressure
|
||||
'lnsp' = {
|
||||
discipline = 0 ;
|
||||
|
@ -34,6 +62,49 @@
|
|||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
}
|
||||
#Logarithm of surface pressure
|
||||
'lnsp' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Divergence
|
||||
'd' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Ozone mass mixing ratio
|
||||
'o3' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud liquid water content
|
||||
'clwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud ice water content
|
||||
'ciwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Fraction of cloud cover
|
||||
'cc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Temperature difference
|
||||
'tdiff' = {
|
||||
discipline = 192 ;
|
||||
|
@ -479,6 +550,13 @@
|
|||
parameterCategory = 228 ;
|
||||
parameterNumber = 103 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'ptype' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Snow cover
|
||||
'snowc' = {
|
||||
discipline = 0 ;
|
||||
|
@ -486,6 +564,20 @@
|
|||
parameterNumber = 42 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#K index
|
||||
'kx' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total totals index
|
||||
'totalx' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Sea water potential temperature
|
||||
'thetao' = {
|
||||
discipline = 192 ;
|
||||
|
|
|
@ -1,4 +1,25 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Specific rain water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific snow water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Eta-coordinate vertical velocity
|
||||
's**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Geopotential
|
||||
'm**2 s**-2' = {
|
||||
discipline = 0 ;
|
||||
|
@ -27,6 +48,13 @@
|
|||
parameterNumber = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Vorticity (relative)
|
||||
's**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Logarithm of surface pressure
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
|
@ -34,6 +62,49 @@
|
|||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
}
|
||||
#Logarithm of surface pressure
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Divergence
|
||||
's**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Ozone mass mixing ratio
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud liquid water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud ice water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Fraction of cloud cover
|
||||
'(0 - 1)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Temperature difference
|
||||
'K' = {
|
||||
discipline = 192 ;
|
||||
|
@ -479,6 +550,13 @@
|
|||
parameterCategory = 228 ;
|
||||
parameterNumber = 103 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'(Code table 4.201)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Snow cover
|
||||
'%' = {
|
||||
discipline = 0 ;
|
||||
|
@ -486,6 +564,20 @@
|
|||
parameterNumber = 42 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#K index
|
||||
'K' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total totals index
|
||||
'K' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Sea water potential temperature
|
||||
'deg C' = {
|
||||
discipline = 192 ;
|
||||
|
|
|
@ -408,4 +408,12 @@
|
|||
constituentType = 3 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-mean logarithm of surface pressure
|
||||
'Time-mean logarithm of surface pressure' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
|
|
|
@ -408,4 +408,12 @@
|
|||
constituentType = 3 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-mean logarithm of surface pressure
|
||||
'235152' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
|
|
|
@ -408,4 +408,12 @@
|
|||
constituentType = 3 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-mean logarithm of surface pressure
|
||||
'avg_lnsp' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
|
|
|
@ -408,4 +408,12 @@
|
|||
constituentType = 3 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-mean logarithm of surface pressure
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 25 ;
|
||||
typeOfFirstFixedSurface = 105 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,24 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Mean discharge in the last 6 hours
|
||||
'dis06' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'dis24' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'tp06' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,4 +1,24 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Mean discharge in the last 6 hours
|
||||
'Mean discharge in the last 6 hours' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'Mean discharge in the last 24 hours' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'Total precipitation in the last 6 hours' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,4 +1,24 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Mean discharge in the last 6 hours
|
||||
'240023' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'240024' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'260267' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,4 +1,24 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Mean discharge in the last 6 hours
|
||||
'dis06' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'dis24' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'tp06' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,4 +1,24 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Mean discharge in the last 6 hours
|
||||
'm**3 s**-1' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'm**3 s**-1' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
# modelName: Contribution from Daniel Lee @ DWD
|
||||
# definitions for Zurich
|
||||
'cosmo-1' = {
|
||||
generatingProcessIdentifier=101;
|
||||
}
|
||||
'cosmo-2' = {
|
||||
generatingProcessIdentifier=102;
|
||||
}
|
||||
'cosmo-7' = {
|
||||
generatingProcessIdentifier=107;
|
||||
}
|
||||
'cosmo-e' = {
|
||||
generatingProcessIdentifier=103;
|
||||
}
|
||||
'cosmo-e' = {
|
||||
generatingProcessIdentifier=130;
|
||||
}
|
|
@ -75,6 +75,20 @@
|
|||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 2 ;
|
||||
}
|
||||
#Specific rain water content
|
||||
'crwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific snow water content
|
||||
'cswc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column cloud liquid water
|
||||
'tclw' = {
|
||||
discipline = 0 ;
|
||||
|
@ -287,6 +301,20 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud liquid water content
|
||||
'clwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud ice water content
|
||||
'ciwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#2 metre specific humidity
|
||||
'sh2' = {
|
||||
discipline = 0 ;
|
||||
|
@ -298,6 +326,13 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'ptype' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column integrated water vapour
|
||||
'tciwv' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -75,6 +75,20 @@
|
|||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 2 ;
|
||||
}
|
||||
#Specific rain water content
|
||||
'Specific rain water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific snow water content
|
||||
'Specific snow water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column cloud liquid water
|
||||
'Total column cloud liquid water' = {
|
||||
discipline = 0 ;
|
||||
|
@ -287,6 +301,20 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud liquid water content
|
||||
'Specific cloud liquid water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud ice water content
|
||||
'Specific cloud ice water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#2 metre specific humidity
|
||||
'2 metre specific humidity' = {
|
||||
discipline = 0 ;
|
||||
|
@ -298,6 +326,13 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'Precipitation type' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column integrated water vapour
|
||||
'Total column integrated water vapour' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -75,6 +75,20 @@
|
|||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 2 ;
|
||||
}
|
||||
#Specific rain water content
|
||||
'75' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific snow water content
|
||||
'76' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column cloud liquid water
|
||||
'78' = {
|
||||
discipline = 0 ;
|
||||
|
@ -287,6 +301,20 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud liquid water content
|
||||
'246' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud ice water content
|
||||
'247' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#2 metre specific humidity
|
||||
'174096' = {
|
||||
discipline = 0 ;
|
||||
|
@ -298,6 +326,13 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'260015' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column integrated water vapour
|
||||
'260057' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -75,6 +75,20 @@
|
|||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 2 ;
|
||||
}
|
||||
#Specific rain water content
|
||||
'crwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific snow water content
|
||||
'cswc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column cloud liquid water
|
||||
'tclw' = {
|
||||
discipline = 0 ;
|
||||
|
@ -287,6 +301,20 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud liquid water content
|
||||
'clwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud ice water content
|
||||
'ciwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#2 metre specific humidity
|
||||
'2sh' = {
|
||||
discipline = 0 ;
|
||||
|
@ -298,6 +326,13 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'ptype' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column integrated water vapour
|
||||
'tciwv' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -75,6 +75,20 @@
|
|||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 2 ;
|
||||
}
|
||||
#Specific rain water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific snow water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column cloud liquid water
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
|
@ -287,6 +301,20 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud liquid water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Specific cloud ice water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#2 metre specific humidity
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
|
@ -298,6 +326,13 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'(Code table 4.201)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Total column integrated water vapour
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
# modelName: Contribution from Daniel Lee @ DWD
|
||||
|
||||
# COSMO
|
||||
# general definition
|
||||
'cosmo' = { originatingCentre=250; }
|
||||
'cosmo' = { subCentre=250; }
|
||||
|
||||
# definitions for ARPA-SIMC
|
||||
'cosmo-i2' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=36; }
|
||||
'cosmo-i2' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=139; }
|
||||
'cosmo-i2' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=144; }
|
||||
'cosmo-i2' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=148; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=31; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=32; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=34; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=38; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=42; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=46; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=131; }
|
||||
# definitions for Moscow
|
||||
'cosmo_ru' = { originatingCentre=76;
|
||||
generatingProcessIdentifier=135; }
|
||||
'cosmo_ru-eps' = { originatingCentre=76;
|
||||
generatingProcessIdentifier=235;}
|
||||
|
||||
# definitions for Athens
|
||||
'cosmo-greece' = { originatingCentre=96;}
|
||||
# definitions for Warsaw / Poland
|
||||
'cosmo-poland' = { originatingCentre=220;}
|
||||
# definitions for Romania
|
||||
'cosmo-romania' = { originatingCentre=242;}
|
||||
|
|
@ -4922,18 +4922,25 @@
|
|||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'Time-mean snow depth' = {
|
||||
#Time-mean specific rain water content
|
||||
'Time-mean specific rain water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'Time-mean snow cover' = {
|
||||
#Time-mean specific snow water content
|
||||
'Time-mean specific snow water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean eta-coordinate vertical velocity
|
||||
'Time-mean eta-coordinate vertical velocity' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean geopotential
|
||||
|
@ -5004,6 +5011,13 @@
|
|||
typeOfSecondFixedSurface = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean vorticity (relative)
|
||||
'Time-mean vorticity (relative)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean mean sea level pressure
|
||||
'Time-mean mean sea level pressure' = {
|
||||
discipline = 0 ;
|
||||
|
@ -5012,6 +5026,13 @@
|
|||
typeOfFirstFixedSurface = 101 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean divergence
|
||||
'Time-mean divergence' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean relative humidity
|
||||
'Time-mean relative humidity' = {
|
||||
discipline = 0 ;
|
||||
|
@ -5056,6 +5077,13 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean ozone mass mixing ratio
|
||||
'Time-mean ozone mass mixing ratio' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean temperature of snow layer
|
||||
'Time-mean temperature of snow layer' = {
|
||||
discipline = 2 ;
|
||||
|
@ -5079,6 +5107,124 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud liquid water content
|
||||
'Time-mean specific cloud liquid water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud ice water content
|
||||
'Time-mean specific cloud ice water content' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of cloud cover
|
||||
'Time-mean fraction of cloud cover' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean K index
|
||||
'Time-mean K index' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total totals index
|
||||
'Time-mean total totals index' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean discharge from rivers or streams
|
||||
'Time-mean discharge from rivers or streams' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (total layer)
|
||||
'Time-mean soil wetness index (total layer)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (root zone)
|
||||
'Time-mean soil wetness index (root zone)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 167 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index(layer)
|
||||
'Time-mean soil wetness index(layer)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 151 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain depth
|
||||
'Time-mean floodplain depth' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded fraction
|
||||
'Time-mean floodplain flooded fraction' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded area
|
||||
'Time-mean floodplain flooded area' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river fraction
|
||||
'Time-mean river fraction' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river area
|
||||
'Time-mean river area' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of river coverage plus river related flooding
|
||||
'Time-mean fraction of river coverage plus river related flooding' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean area of river coverage plus river related flooding
|
||||
'Time-mean area of river coverage plus river related flooding' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Cross sectional area of flow in channel
|
||||
'Cross sectional area of flow in channel' = {
|
||||
discipline = 1 ;
|
||||
|
@ -5139,26 +5285,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 15 ;
|
||||
}
|
||||
#Mean discharge in the last 6 hours
|
||||
'Mean discharge in the last 6 hours' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'Mean discharge in the last 24 hours' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Snow depth at elevation bands
|
||||
'Snow depth at elevation bands' = {
|
||||
discipline = 2 ;
|
||||
|
@ -5211,6 +5337,48 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#Floodplain depth
|
||||
'Floodplain depth' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
}
|
||||
#Floodplain flooded fraction
|
||||
'Floodplain flooded fraction' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
}
|
||||
#Floodplain flooded area
|
||||
'Floodplain flooded area' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#River fraction
|
||||
'River fraction' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
}
|
||||
#River area
|
||||
'River area' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
}
|
||||
#Fraction of river coverage plus river related flooding
|
||||
'Fraction of river coverage plus river related flooding' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
}
|
||||
#Area of river coverage plus river related flooding
|
||||
'Area of river coverage plus river related flooding' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
}
|
||||
#Latitude
|
||||
'Latitude' = {
|
||||
discipline = 0 ;
|
||||
|
@ -7168,6 +7336,48 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 8 ;
|
||||
}
|
||||
#Standardised Precipitation Index (SPI)
|
||||
'Standardised Precipitation Index (SPI)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Standardised Precipitation Evapotranspiration Index (SPEI)
|
||||
'Standardised Precipitation Evapotranspiration Index (SPEI)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Standardised Streamflow Index (SSFI)
|
||||
'Standardised Streamflow Index (SSFI)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Standardised Reservoir Supply Index (SRSI)
|
||||
'Standardised Reservoir Supply Index (SRSI)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Standardised Water-level Index (SWI)
|
||||
'Standardised Water-level Index (SWI)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Standardised Snowmelt and Rain Index (SMRI)
|
||||
'Standardised Snowmelt and Rain Index (SMRI)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Streamflow Drought Index (SDI)
|
||||
'Streamflow Drought Index (SDI)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Universal thermal climate index
|
||||
'Universal thermal climate index' = {
|
||||
discipline = 20 ;
|
||||
|
@ -7305,12 +7515,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Sea ice area fraction
|
||||
'Sea ice area fraction' = {
|
||||
|
@ -8415,12 +8619,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean sea ice area fraction
|
||||
|
@ -10012,6 +10210,38 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Aerosol optical depth
|
||||
'Aerosol optical depth' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 102 ;
|
||||
}
|
||||
#Single scattering albedo
|
||||
'Single scattering albedo' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 103 ;
|
||||
}
|
||||
#Asymmetry Factor
|
||||
'Asymmetry Factor' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 104 ;
|
||||
}
|
||||
#Aerosol backscatter from top of atmosphere
|
||||
'Aerosol backscatter from top of atmosphere' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 107 ;
|
||||
typeOfFirstFixedSurface = 8 ;
|
||||
}
|
||||
#Aerosol backscatter from ground
|
||||
'Aerosol backscatter from ground' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 108 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
}
|
||||
#Pressure tendency
|
||||
'Pressure tendency' = {
|
||||
discipline = 0 ;
|
||||
|
@ -10540,6 +10770,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 44 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'Wave spectral peakedness' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 98 ;
|
||||
}
|
||||
#Skin reservoir content
|
||||
'Skin reservoir content' = {
|
||||
discipline = 2 ;
|
||||
|
|
|
@ -4922,18 +4922,25 @@
|
|||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'235095' = {
|
||||
#Time-mean specific rain water content
|
||||
'235101' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'235096' = {
|
||||
#Time-mean specific snow water content
|
||||
'235102' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean eta-coordinate vertical velocity
|
||||
'235103' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean geopotential
|
||||
|
@ -5004,6 +5011,13 @@
|
|||
typeOfSecondFixedSurface = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean vorticity (relative)
|
||||
'235138' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean mean sea level pressure
|
||||
'235151' = {
|
||||
discipline = 0 ;
|
||||
|
@ -5012,6 +5026,13 @@
|
|||
typeOfFirstFixedSurface = 101 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean divergence
|
||||
'235155' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean relative humidity
|
||||
'235157' = {
|
||||
discipline = 0 ;
|
||||
|
@ -5056,6 +5077,13 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean ozone mass mixing ratio
|
||||
'235203' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean temperature of snow layer
|
||||
'235238' = {
|
||||
discipline = 2 ;
|
||||
|
@ -5079,6 +5107,124 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud liquid water content
|
||||
'235246' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud ice water content
|
||||
'235247' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of cloud cover
|
||||
'235248' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean K index
|
||||
'235257' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total totals index
|
||||
'235258' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean discharge from rivers or streams
|
||||
'235270' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (total layer)
|
||||
'235271' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (root zone)
|
||||
'235272' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 167 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index(layer)
|
||||
'235273' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 151 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain depth
|
||||
'235274' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded fraction
|
||||
'235275' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded area
|
||||
'235276' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river fraction
|
||||
'235277' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river area
|
||||
'235278' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of river coverage plus river related flooding
|
||||
'235279' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean area of river coverage plus river related flooding
|
||||
'235280' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Cross sectional area of flow in channel
|
||||
'240011' = {
|
||||
discipline = 1 ;
|
||||
|
@ -5139,26 +5285,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 15 ;
|
||||
}
|
||||
#Mean discharge in the last 6 hours
|
||||
'240023' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'240024' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Snow depth at elevation bands
|
||||
'240026' = {
|
||||
discipline = 2 ;
|
||||
|
@ -5211,6 +5337,48 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#Floodplain depth
|
||||
'240035' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
}
|
||||
#Floodplain flooded fraction
|
||||
'240036' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
}
|
||||
#Floodplain flooded area
|
||||
'240037' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#River fraction
|
||||
'240038' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
}
|
||||
#River area
|
||||
'240039' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
}
|
||||
#Fraction of river coverage plus river related flooding
|
||||
'240040' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
}
|
||||
#Area of river coverage plus river related flooding
|
||||
'240041' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
}
|
||||
#Latitude
|
||||
'250001' = {
|
||||
discipline = 0 ;
|
||||
|
@ -7168,6 +7336,48 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 8 ;
|
||||
}
|
||||
#Standardised Precipitation Index (SPI)
|
||||
'260658' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Standardised Precipitation Evapotranspiration Index (SPEI)
|
||||
'260659' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Standardised Streamflow Index (SSFI)
|
||||
'260660' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Standardised Reservoir Supply Index (SRSI)
|
||||
'260661' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Standardised Water-level Index (SWI)
|
||||
'260662' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Standardised Snowmelt and Rain Index (SMRI)
|
||||
'260663' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Streamflow Drought Index (SDI)
|
||||
'260664' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Universal thermal climate index
|
||||
'261001' = {
|
||||
discipline = 20 ;
|
||||
|
@ -7305,12 +7515,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Sea ice area fraction
|
||||
'262001' = {
|
||||
|
@ -8415,12 +8619,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean sea ice area fraction
|
||||
|
@ -10012,6 +10210,38 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Aerosol optical depth
|
||||
'457000' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 102 ;
|
||||
}
|
||||
#Single scattering albedo
|
||||
'458000' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 103 ;
|
||||
}
|
||||
#Asymmetry Factor
|
||||
'459000' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 104 ;
|
||||
}
|
||||
#Aerosol backscatter from top of atmosphere
|
||||
'460000' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 107 ;
|
||||
typeOfFirstFixedSurface = 8 ;
|
||||
}
|
||||
#Aerosol backscatter from ground
|
||||
'461000' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 108 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
}
|
||||
#Pressure tendency
|
||||
'3003' = {
|
||||
discipline = 0 ;
|
||||
|
@ -10540,6 +10770,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 44 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'140254' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 98 ;
|
||||
}
|
||||
#Skin reservoir content
|
||||
'160198' = {
|
||||
discipline = 2 ;
|
||||
|
|
|
@ -61,9 +61,6 @@ if (!chemId is "unknown"){
|
|||
alias parameter.chemShortName = chemShortName;
|
||||
}
|
||||
|
||||
# modelName: Contribution from Daniel Lee @ DWD
|
||||
concept modelName (defaultName,"modelName.def",conceptsDir2,conceptsDir1): no_copy,dump,read_only;
|
||||
|
||||
template_nofail names "grib2/products_[productionStatusOfProcessedData].def";
|
||||
|
||||
meta ifsParam ifs_param(paramId,type);
|
||||
|
|
|
@ -4801,28 +4801,28 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow density
|
||||
'mrsn' = {
|
||||
'avg_rsn' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 61 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean low vegetation cover
|
||||
'mcvl' = {
|
||||
'avg_cvl' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 53 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean high vegetation cover
|
||||
'mcvh' = {
|
||||
'avg_cvh' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 54 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean sea ice area fraction
|
||||
'mci' = {
|
||||
'avg_ci' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4830,7 +4830,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean sea surface temperature
|
||||
'msst' = {
|
||||
'avg_sst' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4838,21 +4838,21 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean leaf area index, low vegetation
|
||||
'mlai_lv' = {
|
||||
'avg_lai_lv' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 55 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean leaf area index, high vegetation
|
||||
'mlai_hv' = {
|
||||
'avg_lai_hv' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 56 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total column liquid water
|
||||
'mtclw' = {
|
||||
'avg_tclw' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 69 ;
|
||||
|
@ -4861,7 +4861,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total column cloud ice water
|
||||
'mtciw' = {
|
||||
'avg_tciw' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 70 ;
|
||||
|
@ -4870,7 +4870,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 2 metre specific humidity
|
||||
'm2sh' = {
|
||||
'avg_2sh' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4881,7 +4881,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean lake mix-layer temperature
|
||||
'mlmlt' = {
|
||||
'avg_lmlt' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
|
@ -4890,7 +4890,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean lake mix-layer depth
|
||||
'mlmld' = {
|
||||
'avg_lmld' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4899,7 +4899,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 2 metre relative humidity
|
||||
'm2r' = {
|
||||
'avg_2r' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 1 ;
|
||||
|
@ -4909,70 +4909,77 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of snow cover
|
||||
'mfscov' = {
|
||||
'avg_fscov' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 121 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil temperature
|
||||
'msot' = {
|
||||
'avg_sot' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'msde' = {
|
||||
#Time-mean specific rain water content
|
||||
'avg_crwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'msnowc' = {
|
||||
#Time-mean specific snow water content
|
||||
'avg_cswc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean eta-coordinate vertical velocity
|
||||
'avg_etadot' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean geopotential
|
||||
'mz' = {
|
||||
'avg_z' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean temperature
|
||||
'mt' = {
|
||||
'avg_t' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean U component of wind
|
||||
'mu' = {
|
||||
'avg_u' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean V component of wind
|
||||
'mv' = {
|
||||
'avg_v' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 3 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific humidity
|
||||
'mq' = {
|
||||
'avg_q' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean surface pressure
|
||||
'msp' = {
|
||||
'avg_sp' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -4980,14 +4987,14 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean vertical velocity
|
||||
'mw' = {
|
||||
'avg_w' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total column water
|
||||
'mtcw' = {
|
||||
'avg_tcw' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 51 ;
|
||||
|
@ -4996,7 +5003,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total column vertically-integrated water vapour
|
||||
'mtcwv' = {
|
||||
'avg_tcwv' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 64 ;
|
||||
|
@ -5004,30 +5011,44 @@
|
|||
typeOfSecondFixedSurface = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean vorticity (relative)
|
||||
'avg_vo' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean mean sea level pressure
|
||||
'mmsl' = {
|
||||
'avg_msl' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 0 ;
|
||||
typeOfFirstFixedSurface = 101 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean divergence
|
||||
'avg_d' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean relative humidity
|
||||
'mr' = {
|
||||
'avg_r' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean boundary layer height
|
||||
'mblh' = {
|
||||
'avg_blh' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 10 metre U wind component
|
||||
'm10u' = {
|
||||
'avg_10u' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 2 ;
|
||||
|
@ -5037,7 +5058,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 10 metre V wind component
|
||||
'm10v' = {
|
||||
'avg_10v' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 3 ;
|
||||
|
@ -5047,7 +5068,7 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean 2 metre dewpoint temperature
|
||||
'm2d' = {
|
||||
'avg_2d' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
|
@ -5056,15 +5077,22 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean ozone mass mixing ratio
|
||||
'avg_o3' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean temperature of snow layer
|
||||
'mtsn' = {
|
||||
'avg_tsn' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 28 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean forecast surface roughness
|
||||
'mfsr' = {
|
||||
'avg_fsr' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 1 ;
|
||||
|
@ -5072,13 +5100,131 @@
|
|||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean forecast logarithm of surface roughness for heat
|
||||
'mflsr' = {
|
||||
'avg_flsr' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 54 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud liquid water content
|
||||
'avg_clwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud ice water content
|
||||
'avg_ciwc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of cloud cover
|
||||
'avg_cc' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean K index
|
||||
'avg_kx' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total totals index
|
||||
'avg_totalx' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean discharge from rivers or streams
|
||||
'avg_dis' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (total layer)
|
||||
'avg_swit' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (root zone)
|
||||
'avg_swir' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 167 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index(layer)
|
||||
'avg_swil' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 151 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain depth
|
||||
'avg_flddep' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded fraction
|
||||
'avg_fldffr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded area
|
||||
'avg_fldfar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river fraction
|
||||
'avg_rivfr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river area
|
||||
'avg_rivar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of river coverage plus river related flooding
|
||||
'avg_rivcffr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean area of river coverage plus river related flooding
|
||||
'avg_rivcfar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Cross sectional area of flow in channel
|
||||
'chcross' = {
|
||||
discipline = 1 ;
|
||||
|
@ -5139,26 +5285,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 15 ;
|
||||
}
|
||||
#Mean discharge in the last 6 hours
|
||||
'dis06' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'dis24' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Snow depth at elevation bands
|
||||
'sd_elev' = {
|
||||
discipline = 2 ;
|
||||
|
@ -5211,6 +5337,48 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#Floodplain depth
|
||||
'flddep' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
}
|
||||
#Floodplain flooded fraction
|
||||
'fldffr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
}
|
||||
#Floodplain flooded area
|
||||
'fldfar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#River fraction
|
||||
'rivfr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
}
|
||||
#River area
|
||||
'rivar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
}
|
||||
#Fraction of river coverage plus river related flooding
|
||||
'rivcffr' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
}
|
||||
#Area of river coverage plus river related flooding
|
||||
'rivcfar' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
}
|
||||
#Latitude
|
||||
'lat' = {
|
||||
discipline = 0 ;
|
||||
|
@ -7168,6 +7336,48 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 8 ;
|
||||
}
|
||||
#Standardised Precipitation Index (SPI)
|
||||
'spi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Standardised Precipitation Evapotranspiration Index (SPEI)
|
||||
'spei' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Standardised Streamflow Index (SSFI)
|
||||
'ssfi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Standardised Reservoir Supply Index (SRSI)
|
||||
'srsi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Standardised Water-level Index (SWI)
|
||||
'swi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Standardised Snowmelt and Rain Index (SMRI)
|
||||
'smri' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Streamflow Drought Index (SDI)
|
||||
'sdi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Universal thermal climate index
|
||||
'utci' = {
|
||||
discipline = 20 ;
|
||||
|
@ -7305,12 +7515,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Sea ice area fraction
|
||||
'siconc' = {
|
||||
|
@ -8415,12 +8619,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean sea ice area fraction
|
||||
|
@ -10012,6 +10210,38 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Aerosol optical depth
|
||||
'aod' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 102 ;
|
||||
}
|
||||
#Single scattering albedo
|
||||
'ssa' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 103 ;
|
||||
}
|
||||
#Asymmetry Factor
|
||||
'asymf' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 104 ;
|
||||
}
|
||||
#Aerosol backscatter from top of atmosphere
|
||||
'aerbscattoa' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 107 ;
|
||||
typeOfFirstFixedSurface = 8 ;
|
||||
}
|
||||
#Aerosol backscatter from ground
|
||||
'aerbscatgnd' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 108 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
}
|
||||
#Pressure tendency
|
||||
'ptend' = {
|
||||
discipline = 0 ;
|
||||
|
@ -10540,6 +10770,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 44 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'wsp' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 98 ;
|
||||
}
|
||||
#Skin reservoir content
|
||||
'srcrea' = {
|
||||
discipline = 2 ;
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
|
||||
# TEMPLATE 4.124, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for radionuclides
|
||||
|
||||
include "grib2/template.4.parameter.def"
|
||||
include "grib2/template.4.chemical.def"
|
||||
include "grib2/template.4.source.def"
|
||||
include "grib2/template.4.radionuclides.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"
|
|
@ -0,0 +1,13 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
|
||||
# TEMPLATE 4.125, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for radionuclides
|
||||
|
||||
include "grib2/template.4.parameter.def"
|
||||
include "grib2/template.4.chemical.def"
|
||||
include "grib2/template.4.source.def"
|
||||
include "grib2/template.4.radionuclides.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.eps.def"
|
|
@ -0,0 +1,12 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
|
||||
# TEMPLATE 4.126, 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 radionuclides
|
||||
|
||||
include "grib2/template.4.parameter.def"
|
||||
include "grib2/template.4.chemical.def"
|
||||
include "grib2/template.4.source.def"
|
||||
include "grib2/template.4.radionuclides.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.statistical.def"
|
|
@ -0,0 +1,14 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
|
||||
# TEMPLATE 4.127, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for radionuclides
|
||||
|
||||
include "grib2/template.4.parameter.def"
|
||||
include "grib2/template.4.chemical.def"
|
||||
include "grib2/template.4.source.def"
|
||||
include "grib2/template.4.radionuclides.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.eps.def"
|
||||
include "grib2/template.4.statistical.def"
|
||||
|
|
@ -1,60 +1,60 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
|
||||
# TEMPLATE 4.20, Radar product
|
||||
codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump;
|
||||
codetable[1] parameterCategory('4.1.[discipline:l].table',masterDir,localDir) : dump;
|
||||
|
||||
# Parameter number
|
||||
codetable[1] parameterNumber ('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir) : dump;
|
||||
codetable[1] parameterNumber('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir) : dump;
|
||||
meta parameterUnits codetable_units(parameterNumber) : dump;
|
||||
meta parameterName codetable_title(parameterNumber) : dump;
|
||||
|
||||
codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
|
||||
codetable[1] typeOfGeneratingProcess('4.3.table',masterDir,localDir) : dump;
|
||||
|
||||
# Number of radar sites used
|
||||
unsigned[1] numberOfRadarSitesUsed : dump;
|
||||
unsigned[1] numberOfRadarSitesUsed : dump;
|
||||
|
||||
codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump;
|
||||
alias indicatorOfUnitForForecastTime = indicatorOfUnitOfTimeRange;
|
||||
codetable[1] indicatorOfUnitForForecastTime('4.4.table',masterDir,localDir) : dump;
|
||||
alias indicatorOfUnitOfTimeRange = indicatorOfUnitForForecastTime;
|
||||
include "grib2/stepUnits.def"
|
||||
|
||||
# Site latitude (in microdegrees)
|
||||
unsigned[4] siteLatitude : dump;
|
||||
unsigned[4] siteLatitude : dump;
|
||||
|
||||
# Site longitude (in microdegrees)
|
||||
unsigned[4] siteLongitude : dump;
|
||||
unsigned[4] siteLongitude : dump;
|
||||
|
||||
# Site elevation (meters)
|
||||
unsigned[2] siteElevation : dump;
|
||||
unsigned[2] siteElevation : dump;
|
||||
|
||||
# Site ID (alphanumeric)
|
||||
unsigned[4] siteId : dump;
|
||||
unsigned[4] siteId : dump;
|
||||
|
||||
# Site ID (numeric)
|
||||
unsigned[2] siteId : dump;
|
||||
unsigned[2] siteId : dump;
|
||||
|
||||
# Operating mode
|
||||
codetable[1] operatingMode ('4.12.table',masterDir,localDir) : dump;
|
||||
codetable[1] operatingMode('4.12.table',masterDir,localDir) : dump;
|
||||
|
||||
# Reflectivity calibration constant (tenths of dB)
|
||||
unsigned[1] reflectivityCalibrationConstant : dump;
|
||||
unsigned[1] reflectivityCalibrationConstant : dump;
|
||||
|
||||
# Quality control indicator
|
||||
codetable[1] qualityControlIndicator ('4.13.table',masterDir,localDir) : dump;
|
||||
codetable[1] qualityControlIndicator('4.13.table',masterDir,localDir) : dump;
|
||||
|
||||
# Clutter filter indicator
|
||||
codetable[1] clutterFilterIndicator ('4.14.table',masterDir,localDir) : dump;
|
||||
codetable[1] clutterFilterIndicator('4.14.table',masterDir,localDir) : dump;
|
||||
|
||||
# Constant antenna elevation angle (tenths of degree true)
|
||||
unsigned[1] constantAntennaElevationAngle : dump;
|
||||
unsigned[1] constantAntennaElevationAngle : dump;
|
||||
|
||||
# Accumulation interval (minutes)
|
||||
unsigned[2] accumulationInterval : dump;
|
||||
unsigned[2] accumulationInterval : dump;
|
||||
|
||||
# Reference reflectivity for echo top (dB)
|
||||
unsigned[1] referenceReflectivityForEchoTop : dump;
|
||||
unsigned[1] referenceReflectivityForEchoTop : dump;
|
||||
|
||||
# Range bin spacing (meters)
|
||||
unsigned[3] rangeBinSpacing : dump;
|
||||
unsigned[3] rangeBinSpacing : dump;
|
||||
|
||||
# Radial angular spacing (tenths of degree true)
|
||||
unsigned[2] radialAngularSpacing : dump;
|
||||
unsigned[2] radialAngularSpacing : dump;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
codetable[1] spatialVicinityType ('4.103.table',masterDir,localDir)=255 ;
|
||||
|
||||
unsigned[1] numberOfSpatialVicinityValues = 1 : edition_specific;
|
||||
|
|
|
@ -9,8 +9,8 @@ unsigned[1] minutesAfterDataCutoff = missing() : edition_specific,can_be_missin
|
|||
alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff;
|
||||
|
||||
# Indicator of unit for forecastTime (ECC-1709)
|
||||
codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump;
|
||||
alias indicatorOfUnitForForecastTime = indicatorOfUnitOfTimeRange;
|
||||
codetable[1] indicatorOfUnitForForecastTime ('4.4.table',masterDir,localDir) : dump;
|
||||
alias indicatorOfUnitOfTimeRange = indicatorOfUnitForForecastTime;
|
||||
|
||||
include "grib2/stepUnits.def"
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@ unsigned[1] minutesAfterDataCutoff = missing() : edition_specific,can_be_missin
|
|||
alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff;
|
||||
|
||||
# Indicator of unit for forecastTime (ECC-1709)
|
||||
codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump;
|
||||
alias indicatorOfUnitForForecastTime = indicatorOfUnitOfTimeRange;
|
||||
codetable[1] indicatorOfUnitForForecastTime ('4.4.table',masterDir,localDir) : dump;
|
||||
alias indicatorOfUnitOfTimeRange = indicatorOfUnitForForecastTime;
|
||||
|
||||
include "grib2/stepUnits.def"
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ localTimeForecastList list(numberOfForecastsUsedInLocalTime)
|
|||
unsigned[1] secondOfForecastUsedInLocalTime=0 : dump, edition_specific;
|
||||
|
||||
# Indicator of unit of time for ForecastTime
|
||||
codetable[1] indicatorOfUnitForForecastTime ('4.4.table',masterDir,localDir)=1 : dump;
|
||||
codetable[1] indicatorOfUnitForForecastTime('4.4.table',masterDir,localDir)=1 : dump;
|
||||
|
||||
# Length of the time range over which statistical processing is done, in units defined by the previous octet
|
||||
unsigned[4] forecastTime=0 : dump;
|
||||
|
@ -43,7 +43,7 @@ localTimeForecastList list(numberOfForecastsUsedInLocalTime)
|
|||
unsigned[1] numberOfTimeIncrementsOfForecastsUsedInLocalTime=1 : dump;
|
||||
|
||||
# Indicator of unit of time for the increment between the successive steps used
|
||||
codetable[1] indicatorOfUnitForTimeIncrement ('4.4.table',masterDir,localDir)=255 : dump;
|
||||
codetable[1] indicatorOfUnitForTimeIncrement('4.4.table',masterDir,localDir)=255 : dump;
|
||||
|
||||
# Time increment between successive fields, in units defined by the previous octet
|
||||
unsigned[4] timeIncrement=0 : dump;
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# (C) Copyright 2005- ECMWF
|
||||
|
||||
codetable[2] transportModelUsed ('4.333.table',masterDir,localDir) = 255 : dump;
|
||||
|
||||
codetable[2] requestedByEntity 'common/c-11.table' : dump,string_type;
|
||||
|
||||
codetable[2] scenarioOrigin ('4.335.table',masterDir,localDir) = 255 : dump;
|
||||
|
||||
codetable[2] NWPused ('4.336.table',masterDir,localDir) = 255 : dump;
|
||||
|
||||
unsigned[2] releaseStartYear : dump;
|
||||
unsigned[1] releaseStartMonth : dump;
|
||||
unsigned[1] releaseStartDay : dump;
|
||||
unsigned[1] releaseStartHour : dump;
|
||||
unsigned[1] releaseStartMinute : dump;
|
||||
unsigned[1] releaseStartSecond : dump;
|
||||
|
||||
unsigned[2] wallClockInitialTimeOfExecutionYear : dump;
|
||||
unsigned[1] wallClockInitialTimeOfExecutionMonth : dump;
|
||||
unsigned[1] wallClockInitialTimeOfExecutionDay : dump;
|
||||
unsigned[1] wallClockInitialTimeOfExecutionHour : dump;
|
||||
unsigned[1] wallClockInitialTimeOfExecutionMinute : dump;
|
||||
unsigned[1] wallClockInitialTimeOfExecutionSecond : dump;
|
|
@ -1,10 +1,11 @@
|
|||
# Type of reference dataset
|
||||
# (C) Copyright 2005- ECMWF.
|
||||
# Type of reference dataset
|
||||
codetable[1] typeOfReferenceDataset ('4.100.table',masterDir,localDir) = 255 : dump,edition_specific;
|
||||
|
||||
# Type of relation to reference dataset
|
||||
# Type of relation to reference dataset
|
||||
codetable[1] typeOfRelationToReferenceDataset ('4.101.table',masterDir,localDir) = 255 : dump,edition_specific;
|
||||
|
||||
# number of additional parameters
|
||||
# Number of additional parameters
|
||||
unsigned[1] numberOfAdditionalParametersForReferencePeriod=0 ;
|
||||
additionalParameter list(numberOfAdditionalParametersForReferencePeriod)
|
||||
{
|
||||
|
@ -32,7 +33,7 @@ meta startDateOfReferencePeriod g2date(yearOfStartOfReferencePeriod,monthOfStart
|
|||
|
||||
unsigned[4] sampleSizeOfReferencePeriod = 0;
|
||||
|
||||
# n - number of time range specifications describing the time intervals used to calculate the statistically-processed field
|
||||
# Number of time range specifications describing the time intervals used to calculate the statistically-processed field
|
||||
unsigned[1] numberOfReferencePeriodTimeRanges = 1 : edition_specific;
|
||||
alias nref = numberOfReferencePeriodTimeRanges;
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
# The Model Version Date
|
||||
# This is the date when the reforecast is produced with a particular version of the model
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
# Template for wave parameters
|
||||
|
||||
## Direction part
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
# Template for wave parameters defined on a certain period range
|
||||
|
||||
# Type of period interval
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
# Template for wave spectra defined using a formula for frequency and direction
|
||||
|
||||
## Direction part
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
|
||||
# Template for wave spectra defined using an array of frequencies and directions
|
||||
|
||||
## Direction part
|
||||
|
|
|
@ -200,13 +200,13 @@
|
|||
parameterNumber = 54 ;
|
||||
}
|
||||
#Type of low vegetation
|
||||
'(code table 4.234)' = {
|
||||
'(Code table 4.234)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 57 ;
|
||||
}
|
||||
#Type of high vegetation
|
||||
'(code table 4.234)' = {
|
||||
'(Code table 4.234)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 58 ;
|
||||
|
@ -3383,7 +3383,7 @@
|
|||
parameterNumber = 45 ;
|
||||
}
|
||||
#Wetland type
|
||||
'Code table 4.239' = {
|
||||
'(Code table 4.239)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 46 ;
|
||||
|
@ -4922,18 +4922,25 @@
|
|||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow depth
|
||||
'm' = {
|
||||
#Time-mean specific rain water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 11 ;
|
||||
parameterNumber = 85 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean snow cover
|
||||
'%' = {
|
||||
#Time-mean specific snow water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 42 ;
|
||||
parameterNumber = 86 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean eta-coordinate vertical velocity
|
||||
's**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean geopotential
|
||||
|
@ -5004,6 +5011,13 @@
|
|||
typeOfSecondFixedSurface = 8 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean vorticity (relative)
|
||||
's**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 12 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean mean sea level pressure
|
||||
'Pa' = {
|
||||
discipline = 0 ;
|
||||
|
@ -5012,6 +5026,13 @@
|
|||
typeOfFirstFixedSurface = 101 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean divergence
|
||||
's**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean relative humidity
|
||||
'%' = {
|
||||
discipline = 0 ;
|
||||
|
@ -5056,6 +5077,13 @@
|
|||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean ozone mass mixing ratio
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 14 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean temperature of snow layer
|
||||
'K' = {
|
||||
discipline = 2 ;
|
||||
|
@ -5079,6 +5107,124 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud liquid water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 83 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean specific cloud ice water content
|
||||
'kg kg**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 84 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of cloud cover
|
||||
'(0 - 1)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean K index
|
||||
'K' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 2 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean total totals index
|
||||
'K' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 4 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean discharge from rivers or streams
|
||||
'm**3 s**-1' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (total layer)
|
||||
'Numeric' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index (root zone)
|
||||
'Numeric' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 167 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean soil wetness index(layer)
|
||||
'Numeric' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 30 ;
|
||||
typeOfFirstFixedSurface = 151 ;
|
||||
typeOfSecondFixedSurface = 151 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain depth
|
||||
'm' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded fraction
|
||||
'Proportion' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean floodplain flooded area
|
||||
'm**2' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river fraction
|
||||
'Proportion' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean river area
|
||||
'm**2' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean fraction of river coverage plus river related flooding
|
||||
'Proportion' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean area of river coverage plus river related flooding
|
||||
'm**2' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Cross sectional area of flow in channel
|
||||
'm**2' = {
|
||||
discipline = 1 ;
|
||||
|
@ -5139,26 +5285,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 15 ;
|
||||
}
|
||||
#Mean discharge in the last 6 hours
|
||||
'm**3 s**-1' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Mean discharge in the last 24 hours
|
||||
'm**3 s**-1' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Snow depth at elevation bands
|
||||
'kg m**-2' = {
|
||||
discipline = 2 ;
|
||||
|
@ -5211,6 +5337,48 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#Floodplain depth
|
||||
'm' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 17 ;
|
||||
}
|
||||
#Floodplain flooded fraction
|
||||
'Proportion' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 18 ;
|
||||
}
|
||||
#Floodplain flooded area
|
||||
'm**2' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 19 ;
|
||||
}
|
||||
#River fraction
|
||||
'Proportion' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 20 ;
|
||||
}
|
||||
#River area
|
||||
'm**2' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 21 ;
|
||||
}
|
||||
#Fraction of river coverage plus river related flooding
|
||||
'Proportion' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 22 ;
|
||||
}
|
||||
#Area of river coverage plus river related flooding
|
||||
'm**2' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 23 ;
|
||||
}
|
||||
#Latitude
|
||||
'Degree N' = {
|
||||
discipline = 0 ;
|
||||
|
@ -5384,7 +5552,7 @@
|
|||
parameterNumber = 18 ;
|
||||
}
|
||||
#Precipitation type
|
||||
'code table (4.201)' = {
|
||||
'(Code table 4.201)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
|
@ -5452,7 +5620,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Precipitable water category
|
||||
'code table (4.202)' = {
|
||||
'(Code table 4.202)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 30 ;
|
||||
|
@ -5869,7 +6037,7 @@
|
|||
parameterNumber = 7 ;
|
||||
}
|
||||
#Cloud type
|
||||
'code table (4.203)' = {
|
||||
'(Code table 4.203)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 8 ;
|
||||
|
@ -5881,7 +6049,7 @@
|
|||
parameterNumber = 9 ;
|
||||
}
|
||||
#Thunderstorm coverage
|
||||
'code table (4.204)' = {
|
||||
'(Code table 4.204)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 6 ;
|
||||
parameterNumber = 10 ;
|
||||
|
@ -6013,7 +6181,7 @@
|
|||
parameterNumber = 11 ;
|
||||
}
|
||||
#Aerosol type
|
||||
'code table (4.205)' = {
|
||||
'(Code table 4.205)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 13 ;
|
||||
parameterNumber = 0 ;
|
||||
|
@ -6123,7 +6291,7 @@
|
|||
parameterNumber = 8 ;
|
||||
}
|
||||
#Volcanic ash
|
||||
'code table (4.206)' = {
|
||||
'(Code table 4.206)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
parameterNumber = 4 ;
|
||||
|
@ -6141,7 +6309,7 @@
|
|||
parameterNumber = 6 ;
|
||||
}
|
||||
#Icing
|
||||
'code table (4.207)' = {
|
||||
'(Code table 4.207)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
parameterNumber = 7 ;
|
||||
|
@ -6159,7 +6327,7 @@
|
|||
parameterNumber = 9 ;
|
||||
}
|
||||
#Turbulence
|
||||
'code table (4.208)' = {
|
||||
'(Code table 4.208)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
parameterNumber = 10 ;
|
||||
|
@ -6171,19 +6339,19 @@
|
|||
parameterNumber = 11 ;
|
||||
}
|
||||
#Planetary boundary layer regime
|
||||
'code table (4.209)' = {
|
||||
'(Code table 4.209)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
parameterNumber = 12 ;
|
||||
}
|
||||
#Contrail intensity
|
||||
'code table (4.210)' = {
|
||||
'(Code table 4.210)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
parameterNumber = 13 ;
|
||||
}
|
||||
#Contrail engine type
|
||||
'code table (4.211)' = {
|
||||
'(Code table 4.211)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 19 ;
|
||||
parameterNumber = 14 ;
|
||||
|
@ -6261,13 +6429,13 @@
|
|||
parameterNumber = 1 ;
|
||||
}
|
||||
#Remotely sensed snow cover
|
||||
'(code table 4.215)' = {
|
||||
'(Code table 4.215)' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Elevation of snow covered terrain
|
||||
'(code table 4.216)' = {
|
||||
'(Code table 4.216)' = {
|
||||
discipline = 1 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 3 ;
|
||||
|
@ -6333,7 +6501,7 @@
|
|||
parameterNumber = 7 ;
|
||||
}
|
||||
#Land use
|
||||
'code table (4.212)' = {
|
||||
'(Code table 4.212)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 8 ;
|
||||
|
@ -6501,7 +6669,7 @@
|
|||
parameterNumber = 2 ;
|
||||
}
|
||||
#Cloud top height quality indicator
|
||||
'Code table 4.219' = {
|
||||
'(Code table 4.219)' = {
|
||||
discipline = 3 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 3 ;
|
||||
|
@ -6707,7 +6875,7 @@
|
|||
parameterNumber = 0 ;
|
||||
}
|
||||
#Precipitation type (most severe) in the last 1 hour
|
||||
'code table (4.201)' = {
|
||||
'(Code table 4.201)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
|
@ -6716,7 +6884,7 @@
|
|||
lengthOfTimeRange = 1 ;
|
||||
}
|
||||
#Precipitation type (most severe) in the last 3 hours
|
||||
'code table (4.201)' = {
|
||||
'(Code table 4.201)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
|
@ -6725,7 +6893,7 @@
|
|||
lengthOfTimeRange = 3 ;
|
||||
}
|
||||
#Precipitation type (most frequent) in the last 1 hour
|
||||
'code table (4.201)' = {
|
||||
'(Code table 4.201)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
|
@ -6734,7 +6902,7 @@
|
|||
lengthOfTimeRange = 1 ;
|
||||
}
|
||||
#Precipitation type (most frequent) in the last 3 hours
|
||||
'code table (4.201)' = {
|
||||
'(Code table 4.201)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
|
@ -6743,7 +6911,7 @@
|
|||
lengthOfTimeRange = 3 ;
|
||||
}
|
||||
#Precipitation type (most severe) in the last 6 hours
|
||||
'code table (4.201)' = {
|
||||
'(Code table 4.201)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
|
@ -6752,7 +6920,7 @@
|
|||
lengthOfTimeRange = 6 ;
|
||||
}
|
||||
#Precipitation type (most frequent) in the last 6 hours
|
||||
'code table (4.201)' = {
|
||||
'(Code table 4.201)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 19 ;
|
||||
|
@ -6928,19 +7096,19 @@
|
|||
parameterNumber = 6 ;
|
||||
}
|
||||
#Cloud mask
|
||||
'Code table 4.217' = {
|
||||
'(Code table 4.217)' = {
|
||||
discipline = 3 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Pixel scene type
|
||||
'Code table 4.218' = {
|
||||
'(Code table 4.218)' = {
|
||||
discipline = 3 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Fire detection indicator
|
||||
'Code table 4.223' = {
|
||||
'(Code table 4.223)' = {
|
||||
discipline = 3 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
|
@ -7168,6 +7336,48 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfSecondFixedSurface = 8 ;
|
||||
}
|
||||
#Standardised Precipitation Index (SPI)
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Standardised Precipitation Evapotranspiration Index (SPEI)
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Standardised Streamflow Index (SSFI)
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Standardised Reservoir Supply Index (SRSI)
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Standardised Water-level Index (SWI)
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Standardised Snowmelt and Rain Index (SMRI)
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Streamflow Drought Index (SDI)
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 22 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Universal thermal climate index
|
||||
'K' = {
|
||||
discipline = 20 ;
|
||||
|
@ -7305,12 +7515,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Sea ice area fraction
|
||||
'Fraction' = {
|
||||
|
@ -8415,12 +8619,6 @@
|
|||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 1 ;
|
||||
typeOfFirstFixedSurface = 174 ;
|
||||
typeOfSecondFixedSurface = 176 ;
|
||||
scaledValueOfFirstFixedSurface = missing() ;
|
||||
scaleFactorOfFirstFixedSurface = missing() ;
|
||||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
typeOfStatisticalProcessing = 0 ;
|
||||
}
|
||||
#Time-mean sea ice area fraction
|
||||
|
@ -10012,6 +10210,38 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Aerosol optical depth
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 102 ;
|
||||
}
|
||||
#Single scattering albedo
|
||||
'(0 - 1)' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 103 ;
|
||||
}
|
||||
#Asymmetry Factor
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 104 ;
|
||||
}
|
||||
#Aerosol backscatter from top of atmosphere
|
||||
'm**-1 sr**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 107 ;
|
||||
typeOfFirstFixedSurface = 8 ;
|
||||
}
|
||||
#Aerosol backscatter from ground
|
||||
'm**-1 sr**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 108 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
}
|
||||
#Pressure tendency
|
||||
'Pa s**-1' = {
|
||||
discipline = 0 ;
|
||||
|
@ -10540,6 +10770,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 44 ;
|
||||
}
|
||||
#Wave spectral peakedness
|
||||
'dimensionless' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 98 ;
|
||||
}
|
||||
#Skin reservoir content
|
||||
'kg m**-2' = {
|
||||
discipline = 2 ;
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
# modelName: Contribution from Daniel Lee @ DWD
|
||||
|
||||
# COSMO
|
||||
# general definition
|
||||
'cosmo' = { originatingCentre=250; }
|
||||
'cosmo' = { subCentre=250; }
|
||||
|
||||
# definitions for ARPA-SIMC
|
||||
'cosmo-i2' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=36; }
|
||||
'cosmo-i2' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=139; }
|
||||
'cosmo-i2' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=144; }
|
||||
'cosmo-i2' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=148; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=31; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=32; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=34; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=38; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=42; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=46; }
|
||||
'cosmo-i7' = { originatingCentre=200;
|
||||
generatingProcessIdentifier=131; }
|
||||
# definitions for Moscow
|
||||
'cosmo_ru' = { originatingCentre=76;
|
||||
generatingProcessIdentifier=135; }
|
||||
'cosmo_ru-eps' = { originatingCentre=76;
|
||||
generatingProcessIdentifier=235;}
|
||||
|
||||
# definitions for Athens
|
||||
'cosmo-greece' = { originatingCentre=96;}
|
||||
# definitions for Warsaw / Poland
|
||||
'cosmo-poland' = { originatingCentre=220;}
|
||||
# definitions for Romania
|
||||
'cosmo-romania' = { originatingCentre=242;}
|
||||
|
|
@ -23,9 +23,6 @@ concept cfName (cfNameECMF,"cfName.def",conceptsMasterDir,conceptsLocalDirAll) :
|
|||
concept cfVarNameECMF (defaultShortName,"cfVarName.def",conceptsMasterDir,conceptsLocalDirECMF) : no_copy,dump;
|
||||
concept cfVarName (cfVarNameECMF,"cfVarName.def",conceptsMasterDir,conceptsLocalDirAll) : no_copy,dump;
|
||||
|
||||
# modelName: Contribution from Daniel Lee @ DWD
|
||||
concept modelName (defaultName,"modelName.def",conceptsMasterDir,conceptsLocalDirAll): no_copy,dump,read_only;
|
||||
|
||||
template_nofail names "grib3/products_[productionStatusOfProcessedData].def";
|
||||
|
||||
meta ifsParam ifs_param(paramId,type);
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
#no step in type an
|
||||
unalias mars.step;
|
||||
|
||||
if (class is "od") { alias mars.system = systemNumber; }
|
||||
if (class is "me") { alias mars.system = systemNumber; }
|
||||
if (class is "en") { alias mars.system = systemNumber; }
|
||||
if (class is "c3") { alias mars.system = systemNumber; }
|
||||
if (class is "ci") { alias mars.system = systemNumber; }
|
||||
alias mars.number = perturbationNumber;
|
||||
alias mars.method = methodNumber;
|
||||
|
||||
if (!(class is "gw")) { # ECC-1448
|
||||
alias mars.origin = centre;
|
||||
}
|
||||
|
||||
# See ECC-624
|
||||
if (centre == 80 && subCentre == 98 && class is "c3") {
|
||||
constant cnmc_cmcc = 'cmcc';
|
||||
alias mars.origin = cnmc_cmcc;
|
||||
}
|
||||
|
||||
if (class is "ci") { unalias mars.method; }
|
||||
|
|
@ -0,0 +1 @@
|
|||
alias mars.step = stepRange;
|
|
@ -0,0 +1 @@
|
|||
alias mars.step = stepRange;
|
|
@ -0,0 +1 @@
|
|||
alias mars.step = stepRange;
|
|
@ -0,0 +1,7 @@
|
|||
if (levtype is "o2d" || levtype is "o3d") {
|
||||
alias mars.step = stepRange;
|
||||
} else {
|
||||
alias mars.step = endStep;
|
||||
}
|
||||
|
||||
alias mars.number = perturbationNumber;
|
|
@ -9,11 +9,22 @@
|
|||
*/
|
||||
|
||||
#include <pthread.h>
|
||||
#include "grib_api_internal.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
/*#include "grib_api_internal.h"*/
|
||||
|
||||
#include "eccodes.h"
|
||||
#define NUM_THREADS 4
|
||||
|
||||
void Assert(int condition)
|
||||
{
|
||||
if (!condition) {
|
||||
printf("Assertion failed\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Return 0 if numbers considered equal, otherwise 1 */
|
||||
static int compare_doubles(double a, double b, double tolerance)
|
||||
{
|
||||
|
@ -40,7 +51,7 @@ static void* process_grib(void* threadID)
|
|||
ProductKind prod_kind = 0;
|
||||
|
||||
codes_handle* h = codes_grib_handle_new_from_samples(0, "regular_ll_pl_grib2");
|
||||
Assert(h);
|
||||
Assert(h != NULL);
|
||||
CODES_CHECK(codes_get_product_kind(h, &prod_kind), 0);
|
||||
Assert(prod_kind == PRODUCT_GRIB);
|
||||
printf("Thread %ld running\n", tid);
|
||||
|
|
|
@ -42,7 +42,7 @@ if( HAVE_FORTRAN )
|
|||
# Note: $<BUILD_INTERFACE:...> will be present only while building (for the whole bundle),
|
||||
# whereas $<INSTALL_INTERFACE:...> is only present once you install the package / bundle
|
||||
ecbuild_add_library( TARGET eccodes_f90
|
||||
SOURCES grib_fortran.c grib_f90.f90 eccodes_f90.f90 grib_kinds.h
|
||||
SOURCES grib_fortran.cc grib_f90.f90 eccodes_f90.f90 grib_kinds.h
|
||||
GENERATED grib_f90.f90 eccodes_f90.f90
|
||||
PUBLIC_INCLUDES $<BUILD_INTERFACE:${CMAKE_Fortran_MODULE_DIRECTORY}>
|
||||
$<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
*/
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
#include "grib_fortran_prototypes.h"
|
||||
|
||||
#if HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
|
@ -986,7 +987,7 @@ void grib_f_write_on_fail(int* gid) {
|
|||
file_count++;
|
||||
GRIB_MUTEX_UNLOCK(&handle_mutex)
|
||||
|
||||
sprintf(filename,"%ld_%d_error.grib",(long)pid,file_count);
|
||||
snprintf(filename, sizeof(filename), "%ld_%d_error.grib",(long)pid,file_count);
|
||||
|
||||
h=get_handle(*gid);
|
||||
if (h) grib_write_message(h,filename,"w");
|
||||
|
@ -1249,7 +1250,7 @@ int grib_f_keys_iterator_get_name_(int* iterid,char* name,int len)
|
|||
|
||||
fort_char_clean(name, len);
|
||||
|
||||
sprintf(buf,"%s",grib_keys_iterator_get_name(kiter));
|
||||
snprintf(buf, sizeof(buf), "%s",grib_keys_iterator_get_name(kiter));
|
||||
lsize = strlen(buf);
|
||||
if (input_len < lsize) return GRIB_ARRAY_TOO_SMALL;
|
||||
|
||||
|
@ -1321,7 +1322,7 @@ int codes_f_bufr_keys_iterator_get_name_(int* iterid, char* name, int len)
|
|||
|
||||
fort_char_clean(name, len);
|
||||
|
||||
sprintf(buf, "%s", codes_bufr_keys_iterator_get_name(kiter));
|
||||
snprintf(buf, sizeof(buf), "%s", codes_bufr_keys_iterator_get_name(kiter));
|
||||
lsize = strlen(buf);
|
||||
if (input_len < lsize) return GRIB_ARRAY_TOO_SMALL;
|
||||
|
|
@ -0,0 +1,332 @@
|
|||
/*
|
||||
* Copyright 2005-2018 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.
|
||||
*/
|
||||
|
||||
/* grib_fortran.c */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int grib_f_read_any_headers_only_from_file_(int *fid, char *buffer, size_t *nbytes);
|
||||
int grib_f_write_file_(int* fid, void* buffer, size_t* nbytes);
|
||||
int any_f_new_from_loaded_(int* msgid, int* gid);
|
||||
int codes_f_bufr_copy_data_(int* gid1,int* gid2);
|
||||
int grib_f_get_string_array_(int* gid, char* key, char* val,int* nvals,int* slen, int len);
|
||||
int codes_f_bufr_keys_iterator_rewind_(int* kiter);
|
||||
int any_f_scan_file_(int* fid, int* n);
|
||||
int grib_f_new_from_message_int_(int* gid, int* buffer , size_t* bufsize);
|
||||
int grib_f_copy_key_(int* gidsrc, char* key, int* giddest, int len);
|
||||
int grib_f_set_samples_path_(char* path, int len);
|
||||
|
||||
int grib_f_read_file(int *fid, char *buffer, size_t *nbytes);
|
||||
int grib_f_open_file_(int *fid, char *name, char *op, int lname, int lop);
|
||||
int grib_f_open_file__(int *fid, char *name, char *op, int lname, int lop);
|
||||
int grib_f_open_file(int *fid, char *name, char *op, int lname, int lop);
|
||||
int grib_f_close_file_(int *fid);
|
||||
int grib_f_close_file__(int *fid);
|
||||
int grib_f_close_file(int *fid);
|
||||
void grib_f_write_on_fail(int *gid);
|
||||
void grib_f_write_on_fail_(int* gid);
|
||||
void grib_f_write_on_fail__(int* gid);
|
||||
int grib_f_multi_support_on_(void);
|
||||
int grib_f_multi_support_on__(void);
|
||||
int grib_f_multi_support_on(void);
|
||||
int grib_f_multi_support_off_(void);
|
||||
int grib_f_multi_support_off__(void);
|
||||
int grib_f_multi_support_off(void);
|
||||
int grib_f_iterator_new_(int *gid, int *iterid, int *mode);
|
||||
int grib_f_iterator_new__(int *gid, int *iterid, int *mode);
|
||||
int grib_f_iterator_new(int *gid, int *iterid, int *mode);
|
||||
int grib_f_iterator_next_(int *iterid, double *lat, double *lon, double *value);
|
||||
int grib_f_iterator_next__(int *iterid, double *lat, double *lon, double *value);
|
||||
int grib_f_iterator_next(int *iterid, double *lat, double *lon, double *value);
|
||||
int grib_f_iterator_delete_(int *iterid);
|
||||
int grib_f_iterator_delete__(int *iterid);
|
||||
int grib_f_iterator_delete(int *iterid);
|
||||
int grib_f_keys_iterator_new_(int *gid, int *iterid, char *name_space, int len);
|
||||
int grib_f_keys_iterator_new__(int *gid, int *iterid, char *name_space, int len);
|
||||
int grib_f_keys_iterator_new(int *gid, int *iterid, char *name_space, int len);
|
||||
int grib_f_keys_iterator_next_(int *iterid);
|
||||
int grib_f_keys_iterator_next__(int *iterid);
|
||||
int grib_f_keys_iterator_next(int *iterid);
|
||||
int grib_f_keys_iterator_delete_(int *iterid);
|
||||
int grib_f_keys_iterator_delete__(int *iterid);
|
||||
int grib_f_keys_iterator_delete(int *iterid);
|
||||
int grib_f_gribex_mode_on_(void);
|
||||
int grib_f_gribex_mode_on__(void);
|
||||
int grib_f_gribex_mode_on(void);
|
||||
int grib_f_gribex_mode_off_(void);
|
||||
int grib_f_gribex_mode_off__(void);
|
||||
int grib_f_gribex_mode_off(void);
|
||||
int grib_f_skip_computed_(int *iterid);
|
||||
int grib_f_skip_computed__(int *iterid);
|
||||
int grib_f_skip_computed(int *iterid);
|
||||
int grib_f_skip_coded_(int *iterid);
|
||||
int grib_f_skip_coded__(int *iterid);
|
||||
int grib_f_skip_coded(int *iterid);
|
||||
int grib_f_skip_edition_specific_(int *iterid);
|
||||
int grib_f_skip_edition_specific__(int *iterid);
|
||||
int grib_f_skip_edition_specific(int *iterid);
|
||||
int grib_f_skip_duplicates_(int *iterid);
|
||||
int grib_f_skip_duplicates__(int *iterid);
|
||||
int grib_f_skip_duplicates(int *iterid);
|
||||
int grib_f_skip_read_only_(int *iterid);
|
||||
int grib_f_skip_read_only__(int *iterid);
|
||||
int grib_f_skip_read_only(int *iterid);
|
||||
int grib_f_skip_function_(int *iterid);
|
||||
int grib_f_skip_function__(int *iterid);
|
||||
int grib_f_skip_function(int *iterid);
|
||||
int grib_f_keys_iterator_get_name_(int *iterid, char *name, int len);
|
||||
int grib_f_keys_iterator_get_name__(int *kiter, char *name, int len);
|
||||
int grib_f_keys_iterator_get_name(int *kiter, char *name, int len);
|
||||
int grib_f_keys_iterator_rewind_(int *kiter);
|
||||
int grib_f_keys_iterator_rewind__(int *kiter);
|
||||
int grib_f_keys_iterator_rewind(int *kiter);
|
||||
int grib_f_new_from_message_(int *gid, void *buffer, size_t *bufsize);
|
||||
int grib_f_new_from_message__(int *gid, void *buffer, size_t *bufsize);
|
||||
int grib_f_new_from_message(int *gid, void *buffer, size_t *bufsize);
|
||||
int grib_f_new_from_message_copy_(int *gid, void *buffer, size_t *bufsize);
|
||||
int grib_f_new_from_message_copy__(int *gid, void *buffer, size_t *bufsize);
|
||||
int grib_f_new_from_message_copy(int *gid, void *buffer, size_t *bufsize);
|
||||
int grib_f_new_from_samples_(int *gid, char *name, int lname);
|
||||
int grib_f_new_from_samples__(int *gid, char *name, int lname);
|
||||
int grib_f_new_from_samples(int *gid, char *name, int lname);
|
||||
int grib_f_new_from_template_(int *gid, char *name, int lname);
|
||||
int grib_f_new_from_template__(int *gid, char *name, int lname);
|
||||
int grib_f_new_from_template(int *gid, char *name, int lname);
|
||||
int grib_f_clone_(int *gidsrc, int *giddest);
|
||||
int grib_f_clone__(int *gidsrc, int *giddest);
|
||||
int grib_f_clone(int *gidsrc, int *giddest);
|
||||
int grib_f_util_sections_copy_(int *gidfrom, int *gidto, int *what, int *gidout);
|
||||
int grib_f_util_sections_copy__(int *gidfrom, int *gidto, int *what, int *gidout);
|
||||
int grib_f_util_sections_copy(int *gidfrom, int *gidto, int *what, int *gidout);
|
||||
int grib_f_copy_namespace_(int *gidsrc, char *name, int *giddest, int len);
|
||||
int grib_f_copy_namespace__(int *gidsrc, char *name, int *giddest, int len);
|
||||
int grib_f_copy_namespace(int *gidsrc, char *name, int *giddest, int len);
|
||||
int grib_f_count_in_file(int *fid, int *n);
|
||||
int grib_f_count_in_file_(int *fid, int *n);
|
||||
int grib_f_count_in_file__(int *fid, int *n);
|
||||
int grib_f_new_from_file_(int *fid, int *gid);
|
||||
int grib_f_new_from_file__(int *fid, int *gid);
|
||||
int grib_f_new_from_file(int *fid, int *gid);
|
||||
int grib_f_headers_only_new_from_file_(int *fid, int *gid);
|
||||
int grib_f_headers_only_new_from_file__(int *fid, int *gid);
|
||||
int grib_f_headers_only_new_from_file(int *fid, int *gid);
|
||||
int grib_f_new_from_index_(int *iid, int *gid);
|
||||
int grib_f_new_from_index__(int *iid, int *gid);
|
||||
int grib_f_new_from_index(int *iid, int *gid);
|
||||
int grib_f_index_new_from_file_(char *file, char *keys, int *gid, int lfile, int lkeys);
|
||||
int grib_f_index_new_from_file__(char *file, char *keys, int *gid, int lfile, int lkeys);
|
||||
int grib_f_index_new_from_file(char *file, char *keys, int *gid, int lfile, int lkeys);
|
||||
int grib_f_index_add_file_(int* iid, char* file, int lfile);
|
||||
int grib_f_index_add_file__(int* iid, char* file, int lfile);
|
||||
int grib_f_index_add_file(int* iid, char* file, int lfile);
|
||||
int grib_f_index_read_(char *file, int *gid, int lfile);
|
||||
int grib_f_index_read__(char *file, int *gid, int lfile);
|
||||
int grib_f_index_read(char *file, int *gid, int lfile);
|
||||
int grib_f_index_write_(int *gid, char *file, int lfile);
|
||||
int grib_f_index_write__(int *gid, char *file, int lfile);
|
||||
int grib_f_index_write(int *gid, char *file, int lfile);
|
||||
int grib_f_index_release_(int *hid);
|
||||
int grib_f_index_release__(int *hid);
|
||||
int grib_f_index_release(int *hid);
|
||||
int grib_f_multi_handle_release_(int *hid);
|
||||
int grib_f_multi_handle_release__(int *hid);
|
||||
int grib_f_multi_handle_release(int *hid);
|
||||
int grib_f_release_(int *hid);
|
||||
int grib_f_release__(int *hid);
|
||||
int grib_f_release(int *hid);
|
||||
int grib_f_dump_(int *gid);
|
||||
int grib_f_dump__(int *gid);
|
||||
int grib_f_dump(int *gid);
|
||||
int grib_f_print_(int *gid, char *key, int len);
|
||||
int grib_f_print__(int *gid, char *key, int len);
|
||||
int grib_f_print(int *gid, char *key, int len);
|
||||
int grib_f_get_error_string_(int *err, char *buf, int len);
|
||||
int grib_f_get_error_string__(int *err, char *buf, int len);
|
||||
int grib_f_get_error_string(int *err, char *buf, int len);
|
||||
int grib_f_get_size_int_(int *gid, char *key, int *val, int len);
|
||||
int grib_f_get_size_int__(int *gid, char *key, int *val, int len);
|
||||
int grib_f_get_size_int(int *gid, char *key, int *val, int len);
|
||||
int grib_f_get_size_long_(int *gid, char *key, long *val, int len);
|
||||
int grib_f_get_size_long__(int *gid, char *key, long *val, int len);
|
||||
int grib_f_get_size_long(int *gid, char *key, long *val, int len);
|
||||
int grib_f_index_get_size_int_(int *gid, char *key, int *val, int len);
|
||||
int grib_f_index_get_size_int__(int *gid, char *key, int *val, int len);
|
||||
int grib_f_index_get_size_int(int *gid, char *key, int *val, int len);
|
||||
int grib_f_index_get_size_long_(int *gid, char *key, long *val, int len);
|
||||
int grib_f_index_get_size_long__(int *gid, char *key, long *val, int len);
|
||||
int grib_f_index_get_size_long(int *gid, char *key, long *val, int len);
|
||||
int grib_f_get_int_(int *gid, char *key, int *val, int len);
|
||||
int grib_f_get_int__(int *gid, char *key, int *val, int len);
|
||||
int grib_f_get_int(int *gid, char *key, int *val, int len);
|
||||
int grib_f_get_long_(int *gid, char *key, long *val, int len);
|
||||
int grib_f_get_long__(int *gid, char *key, long *val, int len);
|
||||
int grib_f_get_long(int *gid, char *key, long *val, int len);
|
||||
int grib_f_get_int_array_(int *gid, char *key, int *val, int *size, int len);
|
||||
int grib_f_get_int_array__(int *gid, char *key, int *val, int *size, int len);
|
||||
int grib_f_get_int_array(int *gid, char *key, int *val, int *size, int len);
|
||||
int grib_f_get_long_array_(int *gid, char *key, long *val, int *size, int len);
|
||||
int grib_f_get_long_array__(int *gid, char *key, long *val, int *size, int len);
|
||||
int grib_f_get_long_array(int *gid, char *key, long *val, int *size, int len);
|
||||
int grib_f_get_byte_array_(int* gid, char* key, unsigned char *val, int* size, int len, int lenv);
|
||||
int grib_f_get_byte_array__(int* gid, char* key, unsigned char *val, int* size, int len, int lenv);
|
||||
int grib_f_get_byte_array(int* gid, char* key, unsigned char *val, int* size, int len, int lenv);
|
||||
int grib_f_index_get_string_(int *gid, char *key, char *val, int *eachsize, int *size, int len);
|
||||
int grib_f_index_get_string__(int *gid, char *key, char *val, int *eachsize, int *size, int len);
|
||||
int grib_f_index_get_string(int *gid, char *key, char *val, int *eachsize, int *size, int len);
|
||||
int grib_f_index_get_long_(int *gid, char *key, long *val, int *size, int len);
|
||||
int grib_f_index_get_long__(int *gid, char *key, long *val, int *size, int len);
|
||||
int grib_f_index_get_long(int *gid, char *key, long *val, int *size, int len);
|
||||
int grib_f_index_get_int_(int *gid, char *key, int *val, int *size, int len);
|
||||
int grib_f_index_get_int__(int *gid, char *key, int *val, int *size, int len);
|
||||
int grib_f_index_get_int(int *gid, char *key, int *val, int *size, int len);
|
||||
int grib_f_index_get_real8_(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_index_get_real8__(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_index_get_real8(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_set_int_array_(int *gid, char *key, int *val, int *size, int len);
|
||||
int grib_f_set_int_array__(int *gid, char *key, int *val, int *size, int len);
|
||||
int grib_f_set_int_array(int *gid, char *key, int *val, int *size, int len);
|
||||
int grib_f_set_long_array_(int *gid, char *key, long *val, int *size, int len);
|
||||
int grib_f_set_long_array__(int *gid, char *key, long *val, int *size, int len);
|
||||
int grib_f_set_long_array(int *gid, char *key, long *val, int *size, int len);
|
||||
int grib_f_set_byte_array_(int* gid, char* key, unsigned char *val, int* size, int len, int lenv);
|
||||
int grib_f_set_byte_array__(int* gid, char* key, unsigned char *val, int* size, int len, int lenv);
|
||||
int grib_f_set_byte_array(int* gid, char* key, unsigned char *val, int* size, int len, int lenv);
|
||||
int grib_f_set_int_(int *gid, char *key, int *val, int len);
|
||||
int grib_f_set_int__(int *gid, char *key, int *val, int len);
|
||||
int grib_f_set_int(int *gid, char *key, int *val, int len);
|
||||
int grib_f_set_long_(int *gid, char *key, long *val, int len);
|
||||
int grib_f_set_long__(int *gid, char *key, long *val, int len);
|
||||
int grib_f_set_long(int *gid, char *key, long *val, int len);
|
||||
int grib_f_set_missing_(int *gid, char *key, int len);
|
||||
int grib_f_set_missing__(int *gid, char *key, int len);
|
||||
int grib_f_set_missing(int *gid, char *key, int len);
|
||||
int grib_f_is_missing_(int *gid, char *key, int *isMissing, int len);
|
||||
int grib_f_is_defined_(int *gid, char *key, int *isDefined, int len);
|
||||
int grib_f_is_missing__(int *gid, char *key, int *isMissing, int len);
|
||||
int grib_f_is_missing(int *gid, char *key, int *isMissing, int len);
|
||||
int grib_f_set_real4_(int *gid, char *key, float *val, int len);
|
||||
int grib_f_set_real4__(int *gid, char *key, float *val, int len);
|
||||
int grib_f_set_real4(int *gid, char *key, float *val, int len);
|
||||
int grib_f_get_real4_element_(int *gid, char *key, int *index, float *val, int len);
|
||||
int grib_f_get_real4_element__(int *gid, char *key, int *index, float *val, int len);
|
||||
int grib_f_get_real4_element(int *gid, char *key, int *index, float *val, int len);
|
||||
int grib_f_get_real4_elements_(int *gid, char *key, int *index, float *val, int *size, int len);
|
||||
int grib_f_get_real4_elements__(int *gid, char *key, int *index, float *val, int *len, int size);
|
||||
int grib_f_get_real4_elements(int *gid, char *key, int *index, float *val, int *len, int size);
|
||||
int grib_f_get_real4_(int *gid, char *key, float *val, int len);
|
||||
int grib_f_get_real4__(int *gid, char *key, float *val, int len);
|
||||
int grib_f_get_real4(int *gid, char *key, float *val, int len);
|
||||
int grib_f_get_real4_array_(int *gid, char *key, float *val, int *size, int len);
|
||||
int grib_f_get_real4_array__(int *gid, char *key, float *val, int *size, int len);
|
||||
int grib_f_get_real4_array(int *gid, char *key, float *val, int *size, int len);
|
||||
int grib_f_set_real4_array_(int *gid, char *key, float *val, int *size, int len);
|
||||
int grib_f_set_real4_array__(int *gid, char *key, float *val, int *size, int len);
|
||||
int grib_f_set_real4_array(int *gid, char *key, float *val, int *size, int len);
|
||||
int grib_f_set_force_real4_array_(int *gid, char *key, float *val, int *size, int len);
|
||||
int grib_f_set_force_real4_array__(int *gid, char *key, float *val, int *size, int len);
|
||||
int grib_f_set_force_real4_array(int *gid, char *key, float *val, int *size, int len);
|
||||
int grib_f_index_select_real8_(int *gid, char *key, double *val, int len);
|
||||
int grib_f_index_select_real8__(int *gid, char *key, double *val, int len);
|
||||
int grib_f_index_select_real8(int *gid, char *key, double *val, int len);
|
||||
int grib_f_index_select_string_(int *gid, char *key, char *val, int len, int vallen);
|
||||
int grib_f_index_select_string__(int *gid, char *key, char *val, int len, int vallen);
|
||||
int grib_f_index_select_string(int *gid, char *key, char *val, int len, int vallen);
|
||||
int grib_f_index_select_int_(int *gid, char *key, int *val, int len);
|
||||
int grib_f_index_select_int__(int *gid, char *key, int *val, int len);
|
||||
int grib_f_index_select_int(int *gid, char *key, int *val, int len);
|
||||
int grib_f_index_select_long_(int *gid, char *key, long *val, int len);
|
||||
int grib_f_index_select_long__(int *gid, char *key, long *val, int len);
|
||||
int grib_f_index_select_long(int *gid, char *key, long *val, int len);
|
||||
int grib_f_set_real8_(int *gid, char *key, double *val, int len);
|
||||
int grib_f_set_real8__(int *gid, char *key, double *val, int len);
|
||||
int grib_f_set_real8(int *gid, char *key, double *val, int len);
|
||||
int grib_f_get_real8_(int *gid, char *key, double *val, int len);
|
||||
int grib_f_get_real8__(int *gid, char *key, double *val, int len);
|
||||
int grib_f_get_real8(int *gid, char *key, double *val, int len);
|
||||
int grib_f_get_real8_element_(int *gid, char *key, int *index, double *val, int len);
|
||||
int grib_f_get_real8_element__(int *gid, char *key, int *index, double *val, int len);
|
||||
int grib_f_get_real8_element(int *gid, char *key, int *index, double *val, int len);
|
||||
int grib_f_get_real8_elements_(int *gid, char *key, int *index, double *val, int *size, int len);
|
||||
int grib_f_get_real8_elements__(int *gid, char *key, int *index, double *val, int *len, int size);
|
||||
int grib_f_get_real8_elements(int *gid, char *key, int *index, double *val, int *len, int size);
|
||||
int grib_f_find_nearest_four_single_(int *gid, int *is_lsm, double *inlat, double *inlon, double *outlats, double *outlons, double *values, double *distances, int *indexes);
|
||||
int grib_f_find_nearest_four_single__(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes);
|
||||
int grib_f_find_nearest_four_single(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes);
|
||||
int grib_f_find_nearest_single_(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes);
|
||||
int grib_f_find_nearest_single__(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes);
|
||||
int grib_f_find_nearest_single(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes);
|
||||
int grib_f_find_nearest_multiple_(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes, int *npoints);
|
||||
int grib_f_find_nearest_multiple__(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes, int *npoints);
|
||||
int grib_f_find_nearest_multiple(int *gid, int *is_lsm, double *inlats, double *inlons, double *outlats, double *outlons, double *values, double *distances, int *indexes, int *npoints);
|
||||
int grib_f_get_real8_array_(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_get_real8_array__(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_get_real8_array(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_set_real8_array_(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_set_real8_array__(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_set_real8_array(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_set_force_real8_array_(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_set_force_real8_array__(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_set_force_real8_array(int *gid, char *key, double *val, int *size, int len);
|
||||
int grib_f_get_string_(int *gid, char *key, char *val, int len, int len2);
|
||||
int grib_f_get_string__(int *gid, char *key, char *val, int len, int len2);
|
||||
int grib_f_get_string(int *gid, char *key, char *val, int len, int len2);
|
||||
int grib_f_set_string_(int *gid, char *key, char *val, int len, int len2);
|
||||
int grib_f_set_string__(int *gid, char *key, char *val, int len, int len2);
|
||||
int grib_f_set_string(int *gid, char *key, char *val, int len, int len2);
|
||||
int grib_f_get_data_real4_(int *gid, float *lats, float *lons, float *values, size_t *size);
|
||||
int grib_f_get_data_real4__(int *gid, float *lats, float *lons, float *values, size_t *size);
|
||||
int grib_f_get_data_real4(int *gid, float *lats, float *lons, float *values, size_t *size);
|
||||
int grib_f_get_data_real8_(int *gid, double *lats, double *lons, double *values, size_t *size);
|
||||
int grib_f_get_data_real8__(int *gid, double *lats, double *lons, double *values, size_t *size);
|
||||
int grib_f_get_data_real8(int *gid, double *lats, double *lons, double *values, size_t *size);
|
||||
int grib_f_get_message_size_(int *gid, size_t *len);
|
||||
int grib_f_get_message_size__(int *gid, size_t *len);
|
||||
int grib_f_get_message_size(int *gid, size_t *len);
|
||||
int grib_f_copy_message_(int *gid, void *mess, size_t *len);
|
||||
int grib_f_copy_message__(int *gid, void *mess, size_t *len);
|
||||
int grib_f_copy_message(int *gid, void *mess, size_t *len);
|
||||
void grib_f_check_(int *err, char *call, char *str, int lencall, int lenstr);
|
||||
void grib_f_check__(int *err, char *call, char *key, int lencall, int lenkey);
|
||||
void grib_f_check(int *err, char *call, char *key, int lencall, int lenkey);
|
||||
int grib_f_write_(int *gid, int *fid);
|
||||
int grib_f_write__(int *gid, int *fid);
|
||||
int grib_f_write(int *gid, int *fid);
|
||||
int grib_f_multi_write_(int *gid, int *fid);
|
||||
int grib_f_multi_write__(int *gid, int *fid);
|
||||
int grib_f_multi_write(int *gid, int *fid);
|
||||
int grib_f_multi_append_(int *ingid, int *sec, int *mgid);
|
||||
int grib_f_multi_append(int *ingid, int *sec, int *mgid);
|
||||
int grib_f_multi_append__(int *ingid, int *sec, int *mgid);
|
||||
|
||||
int codes_f_bufr_keys_iterator_new_(int* gid,int* iterid);
|
||||
int grib_f_read_file_(int* fid, void* buffer, size_t* nbytes);
|
||||
int codes_f_bufr_keys_iterator_delete_(int* iterid);
|
||||
int grib_f_set_definitions_path_(char* path, int len);
|
||||
int grib_f_read_any_from_file_(int* fid, void* buffer, size_t* nbytes);
|
||||
int any_f_new_from_file_(int* fid, int* gid);
|
||||
int grib_f_get_native_type_(int* gid, char* key, int* val, int len);
|
||||
int grib_f_get_api_version_(int* apiVersion,int len);
|
||||
int codes_bufr_f_new_from_samples_(int* gid, char* name, int lname);
|
||||
int any_f_load_all_from_file_(int* fid, int* n);
|
||||
int codes_f_bufr_multi_element_constant_arrays_on_();
|
||||
int bufr_f_new_from_file_(int* fid, int* gid);
|
||||
int grib_f_julian_to_datetime_(double* jd,long* year,long* month,long* day,long *hour,long *minute,long *second);
|
||||
int any_f_new_from_scanned_file_(int* fid, int* msgid, int* gid);
|
||||
int codes_f_bufr_keys_iterator_next_(int* iterid);
|
||||
int grib_f_datetime_to_julian_(long* year,long* month,long* day, long* hour,long* minute,long* second,double* jd);
|
||||
int grib_f_set_string_array_(int* gid, char* key, char* val,int* nvals,int* slen, int len);
|
||||
int codes_f_bufr_keys_iterator_get_name_(int* iterid, char* name, int len);
|
||||
int codes_f_bufr_multi_element_constant_arrays_off_();
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -9,6 +9,10 @@
|
|||
# nor does it submit to any jurisdiction.
|
||||
#
|
||||
list( APPEND eccodes_src_files
|
||||
accessor/grib_accessor.cc
|
||||
accessor/grib_accessors_list.cc
|
||||
grib_accessor_class.cc
|
||||
shared_functions.cc
|
||||
step_unit.cc
|
||||
step.cc
|
||||
step_utilities.cc
|
||||
|
@ -20,9 +24,9 @@ list( APPEND eccodes_src_files
|
|||
action_class_gen.cc
|
||||
action_class_if.cc
|
||||
action_class_switch.cc
|
||||
grib_accessor_class_g1fcperiod.cc
|
||||
grib_accessor_class_g1end_of_interval_monthly.cc
|
||||
grib_accessor_class_mars_param.cc
|
||||
accessor/grib_accessor_class_g1fcperiod.cc
|
||||
accessor/grib_accessor_class_g1end_of_interval_monthly.cc
|
||||
accessor/grib_accessor_class_mars_param.cc
|
||||
action_class_section.cc
|
||||
action_class_list.cc
|
||||
action_class_while.cc
|
||||
|
@ -47,7 +51,6 @@ list( APPEND eccodes_src_files
|
|||
action_class_modify.cc
|
||||
action_class_transient_darray.cc
|
||||
eccodes.cc
|
||||
grib_accessor.cc
|
||||
grib_concept.cc
|
||||
grib_hash_array.cc
|
||||
grib_bufr_descriptor.cc
|
||||
|
@ -60,208 +63,207 @@ list( APPEND eccodes_src_files
|
|||
grib_iarray.cc
|
||||
grib_viarray.cc
|
||||
codes_memfs.cc
|
||||
grib_accessor_class_ascii.cc
|
||||
grib_accessor_class_bit.cc
|
||||
grib_accessor_class_bitmap.cc
|
||||
grib_accessor_class_bits.cc
|
||||
grib_accessor_class_bits_per_value.cc
|
||||
grib_accessor_class_bufr_elements_table.cc
|
||||
grib_accessor_class_bufr_data_array.cc
|
||||
grib_accessor_class_bufr_data_element.cc
|
||||
grib_accessor_class_bufr_group.cc
|
||||
grib_accessor_class_bufr_string_values.cc
|
||||
grib_accessor_class_pack_bufr_values.cc
|
||||
grib_accessor_class_unpack_bufr_values.cc
|
||||
grib_accessor_class_group.cc
|
||||
grib_accessor_class_non_alpha.cc
|
||||
grib_accessor_class_g1bitmap.cc
|
||||
grib_accessor_class_g2bitmap.cc
|
||||
grib_accessor_class_concept.cc
|
||||
grib_accessor_class_hash_array.cc
|
||||
grib_accessor_class_decimal_precision.cc
|
||||
grib_accessor_class_divdouble.cc
|
||||
grib_accessor_class_multdouble.cc
|
||||
grib_accessor_class_budgdate.cc
|
||||
grib_accessor_class_validity_date.cc
|
||||
grib_accessor_class_validity_time.cc
|
||||
grib_accessor_class_bytes.cc
|
||||
grib_accessor_class.cc
|
||||
grib_accessor_class_change_alternative_row_scanning.cc
|
||||
grib_accessor_class_change_scanning_direction.cc
|
||||
grib_accessor_class_check_internal_version.cc
|
||||
grib_accessor_class_codeflag.cc
|
||||
grib_accessor_class_smart_table.cc
|
||||
grib_accessor_class_smart_table_column.cc
|
||||
grib_accessor_class_codetable.cc
|
||||
grib_accessor_class_codetable_units.cc
|
||||
grib_accessor_class_codetable_title.cc
|
||||
grib_accessor_class_step_human_readable.cc
|
||||
grib_accessor_class_count_file.cc
|
||||
grib_accessor_class_count_total.cc
|
||||
grib_accessor_class_double.cc
|
||||
grib_accessor_class_element.cc
|
||||
grib_accessor_class_evaluate.cc
|
||||
grib_accessor_class_g1date.cc
|
||||
grib_accessor_class_g1monthlydate.cc
|
||||
grib_accessor_class_library_version.cc
|
||||
grib_accessor_class_when.cc
|
||||
grib_accessor_class_g1verificationdate.cc
|
||||
grib_accessor_class_g1day_of_the_year_date.cc
|
||||
grib_accessor_class_g1_half_byte_codeflag.cc
|
||||
grib_accessor_class_g1forecastmonth.cc
|
||||
grib_accessor_class_g1step_range.cc
|
||||
grib_accessor_class_g2step_range.cc
|
||||
grib_accessor_class_data_g22order_packing.cc
|
||||
grib_accessor_class_mars_step.cc
|
||||
grib_accessor_class_message_copy.cc
|
||||
grib_accessor_class_dictionary.cc
|
||||
grib_accessor_class_latlon_increment.cc
|
||||
grib_accessor_class_g2date.cc
|
||||
grib_accessor_class_g2level.cc
|
||||
grib_accessor_class_g2end_step.cc
|
||||
grib_accessor_class_g2latlon.cc
|
||||
grib_accessor_class_g2lon.cc
|
||||
grib_accessor_class_global_gaussian.cc
|
||||
grib_accessor_class_gaussian_grid_name.cc
|
||||
grib_accessor_class_gen.cc
|
||||
grib_accessor_class_getenv.cc
|
||||
grib_accessor_class_gts_header.cc
|
||||
grib_accessor_class_ifs_param.cc
|
||||
grib_accessor_class_julian_day.cc
|
||||
grib_accessor_class_julian_date.cc
|
||||
grib_accessor_class_closest_date.cc
|
||||
grib_accessor_class_latlonvalues.cc
|
||||
grib_accessor_class_latitudes.cc
|
||||
grib_accessor_class_longitudes.cc
|
||||
grib_accessor_class_offset_file.cc
|
||||
grib_accessor_class_scale.cc
|
||||
grib_accessor_class_from_scale_factor_scaled_value.cc
|
||||
grib_accessor_class_g2bitmap_present.cc
|
||||
grib_accessor_class_ibmfloat.cc
|
||||
grib_accessor_class_ieeefloat.cc
|
||||
grib_accessor_class_constant.cc
|
||||
grib_accessor_class_iterator.cc
|
||||
grib_accessor_class_message.cc
|
||||
grib_accessor_class_nearest.cc
|
||||
grib_accessor_class_ksec1expver.cc
|
||||
grib_accessor_class_label.cc
|
||||
grib_accessor_class_long.cc
|
||||
grib_accessor_class_lookup.cc
|
||||
grib_accessor_class_octahedral_gaussian.cc
|
||||
grib_accessor_class_octet_number.cc
|
||||
grib_accessor_class_headers_only.cc
|
||||
grib_accessor_class_padding.cc
|
||||
grib_accessor_class_pad.cc
|
||||
grib_accessor_class_padto.cc
|
||||
grib_accessor_class_padtoeven.cc
|
||||
grib_accessor_class_padtomultiple.cc
|
||||
grib_accessor_class_section_padding.cc
|
||||
grib_accessor_class_packing_type.cc
|
||||
grib_accessor_class_section_pointer.cc
|
||||
grib_accessor_class_position.cc
|
||||
grib_accessor_class_signed.cc
|
||||
grib_accessor_class_signed_bits.cc
|
||||
grib_accessor_class_section.cc
|
||||
grib_accessor_class_step_in_units.cc
|
||||
grib_accessor_class_optimal_step_units.cc
|
||||
grib_accessor_class_section_length.cc
|
||||
grib_accessor_class_g1_message_length.cc
|
||||
grib_accessor_class_g1_section4_length.cc
|
||||
grib_accessor_class_size.cc
|
||||
grib_accessor_class_rdbtime_guess_date.cc
|
||||
grib_accessor_class_scale_values.cc
|
||||
grib_accessor_class_offset_values.cc
|
||||
grib_accessor_class_sprintf.cc
|
||||
grib_accessor_class_round.cc
|
||||
grib_accessor_class_spectral_truncation.cc
|
||||
grib_accessor_class_time.cc
|
||||
grib_accessor_class_transient.cc
|
||||
grib_accessor_class_trim.cc
|
||||
grib_accessor_class_transient_darray.cc
|
||||
grib_accessor_class_values.cc
|
||||
grib_accessor_class_simple_packing_error.cc
|
||||
grib_accessor_class_data_simple_packing.cc
|
||||
grib_accessor_class_count_missing.cc
|
||||
grib_accessor_class_data_sh_packed.cc
|
||||
grib_accessor_class_data_sh_unpacked.cc
|
||||
grib_accessor_class_number_of_values_data_raw_packing.cc
|
||||
grib_accessor_class_data_g1simple_packing.cc
|
||||
grib_accessor_class_data_g1shsimple_packing.cc
|
||||
grib_accessor_class_data_shsimple_packing.cc
|
||||
grib_accessor_class_data_dummy_field.cc
|
||||
grib_accessor_class_variable.cc
|
||||
grib_accessor_class_second_order_bits_per_value.cc
|
||||
grib_accessor_class_data_g2simple_packing.cc
|
||||
grib_accessor_class_data_g2simple_packing_with_preprocessing.cc
|
||||
grib_accessor_class_data_g2shsimple_packing.cc
|
||||
grib_accessor_class_data_g2complex_packing.cc
|
||||
grib_accessor_class_data_g1second_order_row_by_row_packing.cc
|
||||
grib_accessor_class_data_g1second_order_constant_width_packing.cc
|
||||
grib_accessor_class_data_g1second_order_general_packing.cc
|
||||
grib_accessor_class_data_g1second_order_general_extended_packing.cc
|
||||
grib_accessor_class_g2grid.cc
|
||||
grib_accessor_class_unexpanded_descriptors.cc
|
||||
grib_accessor_class_expanded_descriptors.cc
|
||||
grib_accessor_class_bufrdc_expanded_descriptors.cc
|
||||
grib_accessor_class_data_apply_bitmap.cc
|
||||
grib_accessor_class_data_apply_boustrophedonic.cc
|
||||
grib_accessor_class_data_apply_boustrophedonic_bitmap.cc
|
||||
grib_accessor_class_data_secondary_bitmap.cc
|
||||
grib_accessor_class_data_g1secondary_bitmap.cc
|
||||
grib_accessor_class_data_g2secondary_bitmap.cc
|
||||
grib_accessor_class_data_jpeg2000_packing.cc
|
||||
grib_accessor_class_data_png_packing.cc
|
||||
grib_accessor_class_data_ccsds_packing.cc
|
||||
grib_accessor_class_data_raw_packing.cc
|
||||
grib_accessor_class_data_complex_packing.cc
|
||||
grib_accessor_class_data_g1complex_packing.cc
|
||||
grib_accessor_class_gds_not_present_bitmap.cc
|
||||
grib_accessor_class_gds_is_present.cc
|
||||
grib_accessor_class_select_step_template.cc
|
||||
grib_accessor_class_local_definition.cc
|
||||
grib_accessor_class_g2_eps.cc
|
||||
grib_accessor_class_g2_aerosol.cc
|
||||
grib_accessor_class_g2_chemical.cc
|
||||
grib_accessor_class_g2_mars_labeling.cc
|
||||
grib_accessor_class_md5.cc
|
||||
grib_accessor_class_proj_string.cc
|
||||
accessor/grib_accessor_class_gen.cc
|
||||
accessor/grib_accessor_class_ascii.cc
|
||||
accessor/grib_accessor_class_bit.cc
|
||||
accessor/grib_accessor_class_bitmap.cc
|
||||
accessor/grib_accessor_class_bits.cc
|
||||
accessor/grib_accessor_class_bits_per_value.cc
|
||||
accessor/grib_accessor_class_bufr_elements_table.cc
|
||||
accessor/grib_accessor_class_bufr_data_array.cc
|
||||
accessor/grib_accessor_class_bufr_data_element.cc
|
||||
accessor/grib_accessor_class_bufr_group.cc
|
||||
accessor/grib_accessor_class_bufr_string_values.cc
|
||||
accessor/grib_accessor_class_pack_bufr_values.cc
|
||||
accessor/grib_accessor_class_unpack_bufr_values.cc
|
||||
accessor/grib_accessor_class_group.cc
|
||||
accessor/grib_accessor_class_non_alpha.cc
|
||||
accessor/grib_accessor_class_g1bitmap.cc
|
||||
accessor/grib_accessor_class_g2bitmap.cc
|
||||
accessor/grib_accessor_class_concept.cc
|
||||
accessor/grib_accessor_class_hash_array.cc
|
||||
accessor/grib_accessor_class_decimal_precision.cc
|
||||
accessor/grib_accessor_class_divdouble.cc
|
||||
accessor/grib_accessor_class_multdouble.cc
|
||||
accessor/grib_accessor_class_budgdate.cc
|
||||
accessor/grib_accessor_class_validity_date.cc
|
||||
accessor/grib_accessor_class_validity_time.cc
|
||||
accessor/grib_accessor_class_bytes.cc
|
||||
accessor/grib_accessor_class_change_alternative_row_scanning.cc
|
||||
accessor/grib_accessor_class_change_scanning_direction.cc
|
||||
accessor/grib_accessor_class_check_internal_version.cc
|
||||
accessor/grib_accessor_class_codeflag.cc
|
||||
accessor/grib_accessor_class_smart_table.cc
|
||||
accessor/grib_accessor_class_smart_table_column.cc
|
||||
accessor/grib_accessor_class_codetable.cc
|
||||
accessor/grib_accessor_class_codetable_units.cc
|
||||
accessor/grib_accessor_class_codetable_title.cc
|
||||
accessor/grib_accessor_class_step_human_readable.cc
|
||||
accessor/grib_accessor_class_count_file.cc
|
||||
accessor/grib_accessor_class_count_total.cc
|
||||
accessor/grib_accessor_class_double.cc
|
||||
accessor/grib_accessor_class_element.cc
|
||||
accessor/grib_accessor_class_evaluate.cc
|
||||
accessor/grib_accessor_class_g1date.cc
|
||||
accessor/grib_accessor_class_g1monthlydate.cc
|
||||
accessor/grib_accessor_class_library_version.cc
|
||||
accessor/grib_accessor_class_when.cc
|
||||
accessor/grib_accessor_class_g1verificationdate.cc
|
||||
accessor/grib_accessor_class_g1day_of_the_year_date.cc
|
||||
accessor/grib_accessor_class_g1_half_byte_codeflag.cc
|
||||
accessor/grib_accessor_class_g1forecastmonth.cc
|
||||
accessor/grib_accessor_class_g1step_range.cc
|
||||
accessor/grib_accessor_class_g2step_range.cc
|
||||
accessor/grib_accessor_class_data_g22order_packing.cc
|
||||
accessor/grib_accessor_class_mars_step.cc
|
||||
accessor/grib_accessor_class_message_copy.cc
|
||||
accessor/grib_accessor_class_dictionary.cc
|
||||
accessor/grib_accessor_class_latlon_increment.cc
|
||||
accessor/grib_accessor_class_g2date.cc
|
||||
accessor/grib_accessor_class_g2level.cc
|
||||
accessor/grib_accessor_class_g2end_step.cc
|
||||
accessor/grib_accessor_class_g2latlon.cc
|
||||
accessor/grib_accessor_class_g2lon.cc
|
||||
accessor/grib_accessor_class_global_gaussian.cc
|
||||
accessor/grib_accessor_class_gaussian_grid_name.cc
|
||||
accessor/grib_accessor_class_getenv.cc
|
||||
accessor/grib_accessor_class_gts_header.cc
|
||||
accessor/grib_accessor_class_ifs_param.cc
|
||||
accessor/grib_accessor_class_julian_day.cc
|
||||
accessor/grib_accessor_class_julian_date.cc
|
||||
accessor/grib_accessor_class_closest_date.cc
|
||||
accessor/grib_accessor_class_latlonvalues.cc
|
||||
accessor/grib_accessor_class_latitudes.cc
|
||||
accessor/grib_accessor_class_longitudes.cc
|
||||
accessor/grib_accessor_class_offset_file.cc
|
||||
accessor/grib_accessor_class_scale.cc
|
||||
accessor/grib_accessor_class_from_scale_factor_scaled_value.cc
|
||||
accessor/grib_accessor_class_g2bitmap_present.cc
|
||||
accessor/grib_accessor_class_ibmfloat.cc
|
||||
accessor/grib_accessor_class_ieeefloat.cc
|
||||
accessor/grib_accessor_class_constant.cc
|
||||
accessor/grib_accessor_class_iterator.cc
|
||||
accessor/grib_accessor_class_message.cc
|
||||
accessor/grib_accessor_class_nearest.cc
|
||||
accessor/grib_accessor_class_ksec1expver.cc
|
||||
accessor/grib_accessor_class_label.cc
|
||||
accessor/grib_accessor_class_long.cc
|
||||
accessor/grib_accessor_class_lookup.cc
|
||||
accessor/grib_accessor_class_octahedral_gaussian.cc
|
||||
accessor/grib_accessor_class_octet_number.cc
|
||||
accessor/grib_accessor_class_headers_only.cc
|
||||
accessor/grib_accessor_class_padding.cc
|
||||
accessor/grib_accessor_class_pad.cc
|
||||
accessor/grib_accessor_class_padto.cc
|
||||
accessor/grib_accessor_class_padtoeven.cc
|
||||
accessor/grib_accessor_class_padtomultiple.cc
|
||||
accessor/grib_accessor_class_section_padding.cc
|
||||
accessor/grib_accessor_class_packing_type.cc
|
||||
accessor/grib_accessor_class_section_pointer.cc
|
||||
accessor/grib_accessor_class_position.cc
|
||||
accessor/grib_accessor_class_signed.cc
|
||||
accessor/grib_accessor_class_signed_bits.cc
|
||||
accessor/grib_accessor_class_section.cc
|
||||
accessor/grib_accessor_class_step_in_units.cc
|
||||
accessor/grib_accessor_class_optimal_step_units.cc
|
||||
accessor/grib_accessor_class_section_length.cc
|
||||
accessor/grib_accessor_class_g1_message_length.cc
|
||||
accessor/grib_accessor_class_g1_section4_length.cc
|
||||
accessor/grib_accessor_class_size.cc
|
||||
accessor/grib_accessor_class_rdbtime_guess_date.cc
|
||||
accessor/grib_accessor_class_scale_values.cc
|
||||
accessor/grib_accessor_class_offset_values.cc
|
||||
accessor/grib_accessor_class_sprintf.cc
|
||||
accessor/grib_accessor_class_round.cc
|
||||
accessor/grib_accessor_class_spectral_truncation.cc
|
||||
accessor/grib_accessor_class_time.cc
|
||||
accessor/grib_accessor_class_transient.cc
|
||||
accessor/grib_accessor_class_trim.cc
|
||||
accessor/grib_accessor_class_transient_darray.cc
|
||||
accessor/grib_accessor_class_values.cc
|
||||
accessor/grib_accessor_class_simple_packing_error.cc
|
||||
accessor/grib_accessor_class_data_simple_packing.cc
|
||||
accessor/grib_accessor_class_count_missing.cc
|
||||
accessor/grib_accessor_class_data_sh_packed.cc
|
||||
accessor/grib_accessor_class_data_sh_unpacked.cc
|
||||
accessor/grib_accessor_class_number_of_values_data_raw_packing.cc
|
||||
accessor/grib_accessor_class_data_g1simple_packing.cc
|
||||
accessor/grib_accessor_class_data_g1shsimple_packing.cc
|
||||
accessor/grib_accessor_class_data_shsimple_packing.cc
|
||||
accessor/grib_accessor_class_data_dummy_field.cc
|
||||
accessor/grib_accessor_class_variable.cc
|
||||
accessor/grib_accessor_class_second_order_bits_per_value.cc
|
||||
accessor/grib_accessor_class_data_g2simple_packing.cc
|
||||
accessor/grib_accessor_class_data_g2simple_packing_with_preprocessing.cc
|
||||
accessor/grib_accessor_class_data_g2shsimple_packing.cc
|
||||
accessor/grib_accessor_class_data_g2complex_packing.cc
|
||||
accessor/grib_accessor_class_data_g1second_order_row_by_row_packing.cc
|
||||
accessor/grib_accessor_class_data_g1second_order_constant_width_packing.cc
|
||||
accessor/grib_accessor_class_data_g1second_order_general_packing.cc
|
||||
accessor/grib_accessor_class_data_g1second_order_general_extended_packing.cc
|
||||
accessor/grib_accessor_class_g2grid.cc
|
||||
accessor/grib_accessor_class_unexpanded_descriptors.cc
|
||||
accessor/grib_accessor_class_expanded_descriptors.cc
|
||||
accessor/grib_accessor_class_bufrdc_expanded_descriptors.cc
|
||||
accessor/grib_accessor_class_data_apply_bitmap.cc
|
||||
accessor/grib_accessor_class_data_apply_boustrophedonic.cc
|
||||
accessor/grib_accessor_class_data_apply_boustrophedonic_bitmap.cc
|
||||
accessor/grib_accessor_class_data_secondary_bitmap.cc
|
||||
accessor/grib_accessor_class_data_g1secondary_bitmap.cc
|
||||
accessor/grib_accessor_class_data_g2secondary_bitmap.cc
|
||||
accessor/grib_accessor_class_data_jpeg2000_packing.cc
|
||||
accessor/grib_accessor_class_data_png_packing.cc
|
||||
accessor/grib_accessor_class_data_ccsds_packing.cc
|
||||
accessor/grib_accessor_class_data_raw_packing.cc
|
||||
accessor/grib_accessor_class_data_complex_packing.cc
|
||||
accessor/grib_accessor_class_data_g1complex_packing.cc
|
||||
accessor/grib_accessor_class_gds_not_present_bitmap.cc
|
||||
accessor/grib_accessor_class_gds_is_present.cc
|
||||
accessor/grib_accessor_class_select_step_template.cc
|
||||
accessor/grib_accessor_class_local_definition.cc
|
||||
accessor/grib_accessor_class_g2_eps.cc
|
||||
accessor/grib_accessor_class_g2_aerosol.cc
|
||||
accessor/grib_accessor_class_g2_chemical.cc
|
||||
accessor/grib_accessor_class_g2_mars_labeling.cc
|
||||
accessor/grib_accessor_class_md5.cc
|
||||
accessor/grib_accessor_class_proj_string.cc
|
||||
grib_jasper_encoding.cc
|
||||
grib_openjpeg_encoding.cc
|
||||
action_class_set_missing.cc
|
||||
grib_accessor_class_number_of_points.cc
|
||||
grib_accessor_class_suppressed.cc
|
||||
accessor/grib_accessor_class_number_of_points.cc
|
||||
accessor/grib_accessor_class_suppressed.cc
|
||||
grib_index.cc
|
||||
grib_accessor_class_number_of_points_gaussian.cc
|
||||
grib_accessor_class_number_of_values.cc
|
||||
grib_accessor_class_number_of_coded_values.cc
|
||||
grib_accessor_class_g1number_of_coded_values_sh_complex.cc
|
||||
grib_accessor_class_g1number_of_coded_values_sh_simple.cc
|
||||
grib_accessor_class_dirty.cc
|
||||
grib_accessor_class_statistics.cc
|
||||
grib_accessor_class_statistics_spectral.cc
|
||||
grib_accessor_class_unsigned.cc
|
||||
grib_accessor_class_unsigned_bits.cc
|
||||
grib_accessor_class_raw.cc
|
||||
grib_accessor_class_bufr_simple_thinning.cc
|
||||
grib_accessor_class_bufr_extract_subsets.cc
|
||||
grib_accessor_class_bufr_extract_area_subsets.cc
|
||||
grib_accessor_class_bufr_extract_datetime_subsets.cc
|
||||
grib_accessor_class_spd.cc
|
||||
grib_accessor_class_sum.cc
|
||||
grib_accessor_class_to_integer.cc
|
||||
grib_accessor_class_to_double.cc
|
||||
grib_accessor_class_to_string.cc
|
||||
grib_accessor_class_sexagesimal2decimal.cc
|
||||
grib_accessor_class_vector.cc
|
||||
grib_accessor_class_long_vector.cc
|
||||
accessor/grib_accessor_class_number_of_points_gaussian.cc
|
||||
accessor/grib_accessor_class_number_of_values.cc
|
||||
accessor/grib_accessor_class_number_of_coded_values.cc
|
||||
accessor/grib_accessor_class_g1number_of_coded_values_sh_complex.cc
|
||||
accessor/grib_accessor_class_g1number_of_coded_values_sh_simple.cc
|
||||
accessor/grib_accessor_class_dirty.cc
|
||||
accessor/grib_accessor_class_statistics.cc
|
||||
accessor/grib_accessor_class_statistics_spectral.cc
|
||||
accessor/grib_accessor_class_unsigned.cc
|
||||
accessor/grib_accessor_class_unsigned_bits.cc
|
||||
accessor/grib_accessor_class_raw.cc
|
||||
accessor/grib_accessor_class_bufr_simple_thinning.cc
|
||||
accessor/grib_accessor_class_bufr_extract_subsets.cc
|
||||
accessor/grib_accessor_class_bufr_extract_area_subsets.cc
|
||||
accessor/grib_accessor_class_bufr_extract_datetime_subsets.cc
|
||||
accessor/grib_accessor_class_spd.cc
|
||||
accessor/grib_accessor_class_sum.cc
|
||||
accessor/grib_accessor_class_to_integer.cc
|
||||
accessor/grib_accessor_class_to_double.cc
|
||||
accessor/grib_accessor_class_to_string.cc
|
||||
accessor/grib_accessor_class_sexagesimal2decimal.cc
|
||||
accessor/grib_accessor_class_vector.cc
|
||||
accessor/grib_accessor_class_long_vector.cc
|
||||
grib_gaussian_reduced.cc
|
||||
grib_accessor_class_abstract_vector.cc
|
||||
grib_accessor_class_abstract_long_vector.cc
|
||||
accessor/grib_accessor_class_abstract_vector.cc
|
||||
accessor/grib_accessor_class_abstract_long_vector.cc
|
||||
grib_loader_from_handle.cc
|
||||
grib_bits.cc
|
||||
grib_ibmfloat.cc
|
||||
grib_ieeefloat.cc
|
||||
grib_accessor_class_reference_value_error.cc
|
||||
accessor/grib_accessor_class_reference_value_error.cc
|
||||
grib_memory.cc
|
||||
grib_buffer.cc
|
||||
grib_dumper.cc
|
||||
|
@ -364,16 +366,16 @@ list( APPEND eccodes_src_files
|
|||
grib_yacc.h
|
||||
md5.h
|
||||
md5.cc
|
||||
grib_accessor_class_uint16.cc
|
||||
grib_accessor_class_uint32.cc
|
||||
grib_accessor_class_uint32_little_endian.cc
|
||||
grib_accessor_class_uint64.cc
|
||||
grib_accessor_class_uint64_little_endian.cc
|
||||
grib_accessor_class_uint8.cc
|
||||
grib_accessor_class_blob.cc
|
||||
accessor/grib_accessor_class_uint16.cc
|
||||
accessor/grib_accessor_class_uint32.cc
|
||||
accessor/grib_accessor_class_uint32_little_endian.cc
|
||||
accessor/grib_accessor_class_uint64.cc
|
||||
accessor/grib_accessor_class_uint64_little_endian.cc
|
||||
accessor/grib_accessor_class_uint8.cc
|
||||
accessor/grib_accessor_class_blob.cc
|
||||
grib_optimize_decimal_factor.cc
|
||||
grib_accessor_class_data_g2bifourier_packing.cc
|
||||
grib_accessor_class_data_run_length_packing.cc
|
||||
accessor/grib_accessor_class_data_g2bifourier_packing.cc
|
||||
accessor/grib_accessor_class_data_run_length_packing.cc
|
||||
eccodes_windef.h
|
||||
# We ship our own generated lex/yacc C files
|
||||
grib_yacc.cc grib_lex.cc )
|
||||
|
|
|
@ -0,0 +1,135 @@
|
|||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
/***************************************************************************
|
||||
* Jean Baptiste Filippi - 01.11.2005
|
||||
***************************************************************************/
|
||||
|
||||
#include "grib_accessor.h"
|
||||
#include <iostream>
|
||||
|
||||
// Note: A fast cut-down version of strcmp which does NOT return -1
|
||||
// 0 means input strings are equal and 1 means not equal
|
||||
GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b)
|
||||
{
|
||||
if (*a != *b)
|
||||
return 1;
|
||||
while ((*a != 0 && *b != 0) && *(a) == *(b)) {
|
||||
a++;
|
||||
b++;
|
||||
}
|
||||
return (*a == 0 && *b == 0) ? 0 : 1;
|
||||
}
|
||||
|
||||
int grib_accessor::compare_accessors(grib_accessor* a2, int compare_flags)
|
||||
{
|
||||
int ret = 0;
|
||||
long type1 = 0;
|
||||
long type2 = 0;
|
||||
int type_mismatch = 0;
|
||||
grib_accessor_class* c1 = NULL;
|
||||
grib_accessor* a1 = this;
|
||||
|
||||
if ((compare_flags & GRIB_COMPARE_NAMES) && grib_inline_strcmp(a1->name, a2->name))
|
||||
return GRIB_NAME_MISMATCH;
|
||||
|
||||
if (compare_flags & GRIB_COMPARE_TYPES) {
|
||||
type1 = a1->get_native_type();
|
||||
type2 = a2->get_native_type();
|
||||
|
||||
type_mismatch = type1 != type2 ? 1 : 0;
|
||||
}
|
||||
|
||||
// ret = GRIB_UNABLE_TO_COMPARE_ACCESSORS;
|
||||
c1 = a1->cclass;
|
||||
ret = c1->compare(a1, a2);
|
||||
|
||||
if (ret == GRIB_VALUE_MISMATCH && type_mismatch)
|
||||
ret = GRIB_TYPE_AND_VALUE_MISMATCH;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int grib_accessor::add_attribute(grib_accessor* attr, int nest_if_clash)
|
||||
{
|
||||
int id = 0;
|
||||
int idx = 0;
|
||||
grib_accessor* pSame = NULL;
|
||||
grib_accessor* pAloc = this;
|
||||
|
||||
if (this->has_attributes()) {
|
||||
pSame = this->get_attribute_index(attr->name, &id);
|
||||
}
|
||||
|
||||
if (pSame) {
|
||||
if (nest_if_clash == 0)
|
||||
return GRIB_ATTRIBUTE_CLASH;
|
||||
pAloc = pSame;
|
||||
}
|
||||
|
||||
for (id = 0; id < MAX_ACCESSOR_ATTRIBUTES; id++) {
|
||||
if (pAloc->attributes[id] == NULL) {
|
||||
// attr->parent=a->parent;
|
||||
pAloc->attributes[id] = attr;
|
||||
attr->parent_as_attribute = pAloc;
|
||||
if (pAloc->same)
|
||||
attr->same = pAloc->same->get_attribute_index(attr->name, &idx);
|
||||
|
||||
grib_context_log(this->context, GRIB_LOG_DEBUG, "added attribute %s->%s", this->name, attr->name);
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
}
|
||||
return GRIB_TOO_MANY_ATTRIBUTES;
|
||||
}
|
||||
|
||||
grib_accessor* grib_accessor::get_attribute_index(const char* name, int* index)
|
||||
{
|
||||
int i = 0;
|
||||
while (i < MAX_ACCESSOR_ATTRIBUTES && this->attributes[i]) {
|
||||
if (!grib_inline_strcmp(this->attributes[i]->name, name)) {
|
||||
*index = i;
|
||||
return this->attributes[i];
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int grib_accessor::has_attributes()
|
||||
{
|
||||
return this->attributes[0] ? 1 : 0;
|
||||
}
|
||||
|
||||
grib_accessor* grib_accessor::get_attribute(const char* name)
|
||||
{
|
||||
int index = 0;
|
||||
const char* p = 0;
|
||||
char* basename = NULL;
|
||||
const char* attribute_name = NULL;
|
||||
grib_accessor* acc = NULL;
|
||||
p = name;
|
||||
while (*(p + 1) != '\0' && (*p != '-' || *(p + 1) != '>'))
|
||||
p++;
|
||||
if (*(p + 1) == '\0') {
|
||||
return this->get_attribute_index(name, &index);
|
||||
}
|
||||
else {
|
||||
size_t size = p - name;
|
||||
attribute_name = p + 2;
|
||||
basename = (char*)grib_context_malloc_clear(this->context, size + 1);
|
||||
basename = (char*)memcpy(basename, name, size);
|
||||
acc = this->get_attribute_index(basename, &index);
|
||||
grib_context_free(this->context, basename);
|
||||
if (acc)
|
||||
return acc->get_attribute(attribute_name);
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,147 @@
|
|||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
#include "grib_value.h"
|
||||
|
||||
class grib_accessor
|
||||
{
|
||||
public:
|
||||
grib_accessor() :
|
||||
name(nullptr), name_space(nullptr), context(nullptr), h(nullptr), creator(nullptr),
|
||||
length(0), offset(0), parent(nullptr), next_(nullptr), previous_(nullptr), cclass(nullptr),
|
||||
flags(0), sub_section(nullptr), dirty(0), same(nullptr), loop(0), vvalue(nullptr),
|
||||
set(nullptr), parent_as_attribute(nullptr) {}
|
||||
virtual ~grib_accessor() {}
|
||||
|
||||
virtual void init_accessor(const long, grib_arguments*) = 0;
|
||||
virtual void dump(grib_dumper* f) = 0;
|
||||
virtual int pack_missing() = 0;
|
||||
//virtual int grib_pack_zero(grib_accessor* a) = 0;
|
||||
virtual int is_missing_internal() = 0;
|
||||
virtual int pack_double(const double* v, size_t* len) = 0;
|
||||
virtual int pack_float(const float* v, size_t* len) = 0;
|
||||
virtual int pack_expression(grib_expression* e) = 0;
|
||||
virtual int pack_string(const char* v, size_t* len) = 0;
|
||||
virtual int pack_string_array(const char** v, size_t* len) = 0;
|
||||
virtual int pack_long(const long* v, size_t* len) = 0;
|
||||
virtual int pack_bytes(const unsigned char* v, size_t* len) = 0;
|
||||
virtual int unpack_bytes(unsigned char* v, size_t* len) = 0;
|
||||
virtual int unpack_double_subarray(double* v, size_t start, size_t len) = 0;
|
||||
virtual int unpack_double(double* v, size_t* len) = 0;
|
||||
virtual int unpack_float(float* v, size_t* len) = 0;
|
||||
virtual int unpack_double_element(size_t i, double* v) = 0;
|
||||
virtual int unpack_float_element(size_t i, float* v) = 0;
|
||||
virtual int unpack_double_element_set(const size_t* index_array, size_t len, double* val_array) = 0;
|
||||
virtual int unpack_float_element_set(const size_t* index_array, size_t len, float* val_array) = 0;
|
||||
virtual int unpack_string(char* v, size_t* len) = 0;
|
||||
virtual int unpack_string_array(char** v, size_t* len) = 0;
|
||||
virtual int unpack_long(long* v, size_t* len) = 0;
|
||||
virtual long get_native_type() = 0;
|
||||
virtual long get_next_position_offset() = 0;
|
||||
virtual long string_length() = 0;
|
||||
virtual long byte_offset() = 0;
|
||||
virtual long byte_count() = 0;
|
||||
virtual int value_count(long* count) = 0;
|
||||
virtual int notify_change(grib_accessor* changed) = 0;
|
||||
virtual grib_accessor* clone(grib_section* s, int* err) = 0;
|
||||
virtual void update_size(size_t len) = 0;
|
||||
virtual int nearest_smaller_value(double val, double* nearest) = 0;
|
||||
virtual size_t preferred_size(int from_handle) = 0;
|
||||
virtual grib_accessor* next_accessor() = 0;
|
||||
virtual void resize(size_t new_size) = 0;
|
||||
virtual void destroy(grib_context* ct) = 0;
|
||||
|
||||
virtual int compare_accessors(grib_accessor* a2, int compare_flags);
|
||||
virtual int add_attribute(grib_accessor* attr, int nest_if_clash);
|
||||
virtual grib_accessor* get_attribute_index(const char* name, int* index);
|
||||
virtual int has_attributes();
|
||||
virtual grib_accessor* get_attribute(const char* name);
|
||||
|
||||
|
||||
const char* name; /** < name of the accessor */
|
||||
const char* name_space; /** < namespace to which the accessor belongs */
|
||||
grib_context* context;
|
||||
grib_handle* h;
|
||||
grib_action* creator; /** < action that created the accessor */
|
||||
long length; /** < byte length of the accessor */
|
||||
long offset; /** < offset of the data in the buffer */
|
||||
grib_section* parent; /** < section to which the accessor is attached */
|
||||
grib_accessor* next_; /** < next accessor in list */
|
||||
grib_accessor* previous_; /** < next accessor in list */
|
||||
grib_accessor_class* cclass; /** < behaviour of the accessor */
|
||||
unsigned long flags; /** < Various flags */
|
||||
grib_section* sub_section;
|
||||
|
||||
const char* all_names[MAX_ACCESSOR_NAMES]= {0,}; /** < name of the accessor */
|
||||
const char* all_name_spaces[MAX_ACCESSOR_NAMES] = {0,}; /** < namespace to which the accessor belongs */
|
||||
int dirty;
|
||||
|
||||
grib_accessor* same; /** < accessors with the same name */
|
||||
long loop; /** < used in lists */
|
||||
grib_virtual_value* vvalue; /** < virtual value used when transient flag on **/
|
||||
const char* set;
|
||||
grib_accessor* attributes[MAX_ACCESSOR_ATTRIBUTES] = {0,}; /** < attributes are accessors */
|
||||
grib_accessor* parent_as_attribute;
|
||||
};
|
||||
|
||||
|
||||
class grib_accessor_class
|
||||
{
|
||||
public:
|
||||
const char* name;
|
||||
|
||||
grib_accessor_class(const char* name) : name(name){}
|
||||
virtual ~grib_accessor_class(){}
|
||||
|
||||
virtual grib_accessor* create_empty_accessor() = 0;
|
||||
virtual grib_section* sub_section(grib_accessor* a) = 0;
|
||||
virtual int get_native_type(grib_accessor*) = 0;
|
||||
virtual int pack_missing(grib_accessor*) = 0;
|
||||
virtual int is_missing(grib_accessor*) = 0;
|
||||
virtual int pack_bytes(grib_accessor*, const unsigned char*, size_t* len) = 0;
|
||||
virtual int pack_double(grib_accessor*, const double* val, size_t* len) = 0;
|
||||
virtual int pack_float(grib_accessor*, const float* val, size_t* len) = 0;
|
||||
virtual int pack_long(grib_accessor*, const long* val, size_t* len) = 0;
|
||||
virtual int pack_string(grib_accessor*, const char*, size_t* len) = 0;
|
||||
virtual int pack_string_array(grib_accessor*, const char**, size_t* len) = 0;
|
||||
virtual int pack_expression(grib_accessor*, grib_expression*) = 0;
|
||||
virtual int unpack_bytes(grib_accessor*, unsigned char*, size_t* len) = 0;
|
||||
virtual int unpack_double(grib_accessor*, double* val, size_t* len) = 0;
|
||||
virtual int unpack_float(grib_accessor*, float* val, size_t* len) = 0;
|
||||
virtual int unpack_long(grib_accessor*, long* val, size_t* len) = 0;
|
||||
virtual int unpack_string(grib_accessor*, char*, size_t* len) = 0;
|
||||
virtual int unpack_string_array(grib_accessor*, char**, size_t* len) = 0;
|
||||
virtual size_t string_length(grib_accessor*) = 0;
|
||||
virtual long byte_count(grib_accessor*) = 0;
|
||||
virtual long byte_offset(grib_accessor*) = 0;
|
||||
virtual long next_offset(grib_accessor*) = 0;
|
||||
virtual int value_count(grib_accessor*, long*) = 0;
|
||||
virtual void destroy(grib_context*, grib_accessor*) = 0;
|
||||
virtual void dump(grib_accessor*, grib_dumper*) = 0;
|
||||
virtual void init(grib_accessor*, const long, grib_arguments*) = 0;
|
||||
virtual void post_init(grib_accessor*) = 0;
|
||||
virtual int notify_change(grib_accessor*, grib_accessor*) = 0;
|
||||
virtual void update_size(grib_accessor*, size_t) = 0;
|
||||
virtual size_t preferred_size(grib_accessor*, int) = 0;
|
||||
virtual void resize(grib_accessor*,size_t) = 0;
|
||||
virtual int nearest_smaller_value (grib_accessor*, double, double*) = 0;
|
||||
virtual grib_accessor* next(grib_accessor*, int) = 0;
|
||||
virtual int compare(grib_accessor*, grib_accessor*) = 0;
|
||||
virtual int unpack_double_element(grib_accessor*, size_t i, double* val) = 0;
|
||||
virtual int unpack_float_element(grib_accessor*, size_t i, float* val) = 0;
|
||||
virtual int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array) = 0;
|
||||
virtual int unpack_float_element_set(grib_accessor*, const size_t* index_array, size_t len, float* val_array) = 0;
|
||||
virtual int unpack_double_subarray(grib_accessor*, double* val, size_t start, size_t len) = 0;
|
||||
virtual int clear(grib_accessor*) = 0;
|
||||
virtual grib_accessor* make_clone(grib_accessor*, grib_section*, int*) = 0;
|
||||
};
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
/*
|
||||
* (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 "grib_accessor_class_abstract_long_vector.h"
|
||||
|
||||
grib_accessor_class_abstract_long_vector_t _grib_accessor_class_abstract_long_vector{"abstract_long_vector"};
|
||||
grib_accessor_class* grib_accessor_class_abstract_long_vector = &_grib_accessor_class_abstract_long_vector;
|
|
@ -0,0 +1,30 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_gen.h"
|
||||
|
||||
class grib_accessor_abstract_long_vector_t : public grib_accessor_gen_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in abstract_long_vector */
|
||||
long* v;
|
||||
long pack_index;
|
||||
int number_of_elements;
|
||||
};
|
||||
|
||||
class grib_accessor_class_abstract_long_vector_t : public grib_accessor_class_gen_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_abstract_long_vector_t(const char* name) : grib_accessor_class_gen_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_abstract_long_vector_t{}; }
|
||||
};
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
/*
|
||||
* (C) Copyright 2005- ECMWF.
|
||||
*
|
||||
|
@ -8,8 +9,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "grib_accessor_class_abstract_vector.h"
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
template <typename T> int grib_unpack(grib_accessor* a, T* v, size_t* len);
|
||||
grib_accessor_class_abstract_vector_t _grib_accessor_class_abstract_vector{"abstract_vector"};
|
||||
grib_accessor_class* grib_accessor_class_abstract_vector = &_grib_accessor_class_abstract_vector;
|
|
@ -0,0 +1,29 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_double.h"
|
||||
|
||||
class grib_accessor_abstract_vector_t : public grib_accessor_double_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in abstract_vector */
|
||||
double* v;
|
||||
int number_of_elements;
|
||||
};
|
||||
|
||||
class grib_accessor_class_abstract_vector_t : public grib_accessor_class_double_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_abstract_vector_t(const char* name) : grib_accessor_class_double_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_abstract_vector_t{}; }
|
||||
};
|
|
@ -0,0 +1,179 @@
|
|||
|
||||
/*
|
||||
* (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 "grib_accessor_class_ascii.h"
|
||||
|
||||
grib_accessor_class_ascii_t _grib_accessor_class_ascii{ "ascii" };
|
||||
grib_accessor_class* grib_accessor_class_ascii = &_grib_accessor_class_ascii;
|
||||
|
||||
|
||||
void grib_accessor_class_ascii_t::init(grib_accessor* a, const long len, grib_arguments* arg)
|
||||
{
|
||||
grib_accessor_class_gen_t::init(a, len, arg);
|
||||
a->length = len;
|
||||
Assert(a->length >= 0);
|
||||
}
|
||||
|
||||
int grib_accessor_class_ascii_t::value_count(grib_accessor* a, long* count)
|
||||
{
|
||||
*count = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t grib_accessor_class_ascii_t::string_length(grib_accessor* a)
|
||||
{
|
||||
return a->length;
|
||||
}
|
||||
|
||||
void grib_accessor_class_ascii_t::dump(grib_accessor* a, grib_dumper* dumper)
|
||||
{
|
||||
grib_dump_string(dumper, a, NULL);
|
||||
}
|
||||
|
||||
int grib_accessor_class_ascii_t::get_native_type(grib_accessor* a)
|
||||
{
|
||||
return GRIB_TYPE_STRING;
|
||||
}
|
||||
|
||||
int grib_accessor_class_ascii_t::unpack_string(grib_accessor* a, char* val, size_t* len)
|
||||
{
|
||||
grib_handle* hand = grib_handle_of_accessor(a);
|
||||
const size_t alen = a->length;
|
||||
|
||||
if (*len < (alen + 1)) {
|
||||
const char* cclass_name = a->cclass->name;
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
"%s: Buffer too small for %s. It is %zu bytes long (len=%zu)",
|
||||
cclass_name, a->name, alen + 1, *len);
|
||||
*len = alen + 1;
|
||||
return GRIB_BUFFER_TOO_SMALL;
|
||||
}
|
||||
|
||||
size_t i = 0;
|
||||
for (i = 0; i < alen; i++)
|
||||
val[i] = hand->buffer->data[a->offset + i];
|
||||
val[i] = 0;
|
||||
*len = i;
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
int grib_accessor_class_ascii_t::pack_string(grib_accessor* a, const char* val, size_t* len)
|
||||
{
|
||||
grib_handle* hand = grib_handle_of_accessor(a);
|
||||
const size_t alen = a->length;
|
||||
if (len[0] > (alen + 1)) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
"pack_string: Wrong size (%zu) for %s, it contains %ld values",
|
||||
len[0], a->name, a->length + 1);
|
||||
len[0] = 0;
|
||||
return GRIB_BUFFER_TOO_SMALL;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < alen; i++) {
|
||||
if (i < len[0])
|
||||
hand->buffer->data[a->offset + i] = val[i];
|
||||
else
|
||||
hand->buffer->data[a->offset + i] = 0;
|
||||
}
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
int grib_accessor_class_ascii_t::pack_long(grib_accessor* a, const long* v, size_t* len)
|
||||
{
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "Should not pack %s as long (It's a string)", a->name);
|
||||
return GRIB_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
int grib_accessor_class_ascii_t::pack_double(grib_accessor* a, const double* v, size_t* len)
|
||||
{
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "Should not pack %s as double (It's a string)", a->name);
|
||||
return GRIB_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
int grib_accessor_class_ascii_t::unpack_long(grib_accessor* a, long* v, size_t* len)
|
||||
{
|
||||
char val[1024] = {0,};
|
||||
size_t l = sizeof(val);
|
||||
size_t i = 0;
|
||||
char* last = NULL;
|
||||
int err = a->unpack_string(val, &l);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
i = 0;
|
||||
while (i < l - 1 && val[i] == ' ')
|
||||
i++;
|
||||
|
||||
if (val[i] == 0) {
|
||||
*v = 0;
|
||||
return 0;
|
||||
}
|
||||
if (val[i + 1] == ' ' && i < l - 2)
|
||||
val[i + 1] = 0;
|
||||
|
||||
*v = strtol(val, &last, 10);
|
||||
|
||||
grib_context_log(a->context, GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
int grib_accessor_class_ascii_t::unpack_double(grib_accessor* a, double* v, size_t* len)
|
||||
{
|
||||
char val[1024];
|
||||
size_t l = sizeof(val);
|
||||
char* last = NULL;
|
||||
|
||||
int err = a->unpack_string(val, &l);
|
||||
if (err) return err;
|
||||
|
||||
*v = strtod(val, &last);
|
||||
|
||||
if (*last == 0) {
|
||||
grib_context_log(a->context, GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
grib_context_log(a->context, GRIB_LOG_WARNING, "Cannot unpack %s as double. Hint: Try unpacking as string", a->name);
|
||||
|
||||
return GRIB_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
int grib_accessor_class_ascii_t::compare(grib_accessor* a, grib_accessor* b)
|
||||
{
|
||||
int retval = 0;
|
||||
char* aval = 0;
|
||||
char* bval = 0;
|
||||
int err = 0;
|
||||
|
||||
size_t alen = a->length + 1;
|
||||
size_t blen = b->length + 1;
|
||||
|
||||
if (alen != blen)
|
||||
return GRIB_COUNT_MISMATCH;
|
||||
|
||||
aval = (char*)grib_context_malloc(a->context, alen * sizeof(char));
|
||||
bval = (char*)grib_context_malloc(b->context, blen * sizeof(char));
|
||||
|
||||
err = a->unpack_string(aval, &alen);
|
||||
if (err) return err;
|
||||
err = b->unpack_string(bval, &blen);
|
||||
if (err) return err;
|
||||
|
||||
retval = GRIB_SUCCESS;
|
||||
if (!STR_EQUAL(aval, bval))
|
||||
retval = GRIB_STRING_VALUE_MISMATCH;
|
||||
|
||||
grib_context_free(a->context, aval);
|
||||
grib_context_free(b->context, bval);
|
||||
|
||||
return retval;
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_gen.h"
|
||||
|
||||
class grib_accessor_ascii_t : public grib_accessor_gen_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in ascii */
|
||||
};
|
||||
|
||||
class grib_accessor_class_ascii_t : public grib_accessor_class_gen_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_ascii_t(const char* name) : grib_accessor_class_gen_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_ascii_t{}; }
|
||||
int get_native_type(grib_accessor*) override;
|
||||
int pack_double(grib_accessor*, const double* val, size_t* len) override;
|
||||
int pack_long(grib_accessor*, const long* val, size_t* len) override;
|
||||
int pack_string(grib_accessor*, const char*, size_t* len) override;
|
||||
int unpack_double(grib_accessor*, double* val, size_t* len) override;
|
||||
int unpack_long(grib_accessor*, long* val, size_t* len) override;
|
||||
int unpack_string(grib_accessor*, char*, size_t* len) override;
|
||||
size_t string_length(grib_accessor*) override;
|
||||
int value_count(grib_accessor*, long*) override;
|
||||
void dump(grib_accessor*, grib_dumper*) override;
|
||||
void init(grib_accessor*, const long, grib_arguments*) override;
|
||||
int compare(grib_accessor*, grib_accessor*) override;
|
||||
};
|
|
@ -0,0 +1,82 @@
|
|||
|
||||
/*
|
||||
* (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 "grib_accessor_class_bit.h"
|
||||
|
||||
grib_accessor_class_bit_t _grib_accessor_class_bit{ "bit" };
|
||||
grib_accessor_class* grib_accessor_class_bit = &_grib_accessor_class_bit;
|
||||
|
||||
|
||||
void grib_accessor_class_bit_t::init(grib_accessor* a, const long len, grib_arguments* arg)
|
||||
{
|
||||
grib_accessor_class_long_t::init(a, len, arg);
|
||||
grib_accessor_bit_t* self = (grib_accessor_bit_t*)a;
|
||||
a->length = 0;
|
||||
self->owner = grib_arguments_get_name(grib_handle_of_accessor(a), arg, 0);
|
||||
self->bit_index = grib_arguments_get_long(grib_handle_of_accessor(a), arg, 1);
|
||||
}
|
||||
|
||||
int grib_accessor_class_bit_t::unpack_long(grib_accessor* a, long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bit_t* self = (grib_accessor_bit_t*)a;
|
||||
int ret = 0;
|
||||
long data = 0;
|
||||
|
||||
if (*len < 1) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_bit_t: unpack_long: Wrong size for %s, it contains %d values ", a->name, 1);
|
||||
*len = 1;
|
||||
return GRIB_ARRAY_TOO_SMALL;
|
||||
}
|
||||
|
||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->owner, &data)) != GRIB_SUCCESS) {
|
||||
*len = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (data & (1 << self->bit_index))
|
||||
*val = 1;
|
||||
else
|
||||
*val = 0;
|
||||
|
||||
*len = 1;
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
int grib_accessor_class_bit_t::pack_long(grib_accessor* a, const long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bit_t* self = (grib_accessor_bit_t*)a;
|
||||
|
||||
if (*len < 1) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_bit_t: pack_long: At least one value to pack for %s", a->name);
|
||||
*len = 1;
|
||||
return GRIB_ARRAY_TOO_SMALL;
|
||||
}
|
||||
|
||||
grib_accessor* owner = grib_find_accessor(grib_handle_of_accessor(a), self->owner);
|
||||
if (!owner) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_bit_t: Cannot get the owner %s for computing the bit value of %s",
|
||||
self->owner, a->name);
|
||||
*len = 0;
|
||||
return GRIB_NOT_FOUND;
|
||||
}
|
||||
|
||||
unsigned char* mdata = grib_handle_of_accessor(a)->buffer->data;
|
||||
mdata += owner->byte_offset();
|
||||
/* Note: In the definitions, flagbit numbers go from 7 to 0 (the bit_index), while WMO convention is from 1 to 8 */
|
||||
if (a->context->debug) {
|
||||
/* Print bit positions from 1 (MSB) */
|
||||
fprintf(stderr, "ECCODES DEBUG Setting bit %d in %s to %d\n", 8 - self->bit_index, owner->name, (*val > 0));
|
||||
}
|
||||
grib_set_bit(mdata, 7 - self->bit_index, *val > 0);
|
||||
|
||||
*len = 1;
|
||||
return GRIB_SUCCESS;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_long.h"
|
||||
|
||||
class grib_accessor_bit_t : public grib_accessor_long_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in bit */
|
||||
const char* owner;
|
||||
int bit_index;
|
||||
};
|
||||
|
||||
class grib_accessor_class_bit_t : public grib_accessor_class_long_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_bit_t(const char* name) : grib_accessor_class_long_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_bit_t{}; }
|
||||
int pack_long(grib_accessor*, const long* val, size_t* len) override;
|
||||
int unpack_long(grib_accessor*, long* val, size_t* len) override;
|
||||
void init(grib_accessor*, const long, grib_arguments*) override;
|
||||
};
|
|
@ -0,0 +1,189 @@
|
|||
|
||||
/*
|
||||
* (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 "grib_accessor_class_bitmap.h"
|
||||
|
||||
grib_accessor_class_bitmap_t _grib_accessor_class_bitmap{ "bitmap" };
|
||||
grib_accessor_class* grib_accessor_class_bitmap = &_grib_accessor_class_bitmap;
|
||||
|
||||
static void compute_size(grib_accessor* a)
|
||||
{
|
||||
long slen = 0;
|
||||
long off = 0;
|
||||
grib_handle* hand = grib_handle_of_accessor(a);
|
||||
|
||||
grib_accessor_bitmap_t* self = (grib_accessor_bitmap_t*)a;
|
||||
grib_get_long_internal(hand, self->offsetbsec, &off);
|
||||
grib_get_long_internal(hand, self->sLength, &slen);
|
||||
|
||||
if (slen == 0) {
|
||||
grib_accessor* seclen;
|
||||
size_t size;
|
||||
/* Assume reparsing */
|
||||
Assert(hand->loader != 0);
|
||||
if (hand->loader != 0) {
|
||||
seclen = grib_find_accessor(hand, self->sLength);
|
||||
Assert(seclen);
|
||||
grib_get_block_length(seclen->parent, &size);
|
||||
slen = size;
|
||||
}
|
||||
}
|
||||
|
||||
// printf("compute_size off=%ld slen=%ld a->offset=%ld\n", (long)off,(long)slen,(long)a->offset);
|
||||
|
||||
a->length = off + (slen - a->offset);
|
||||
|
||||
if (a->length < 0) {
|
||||
/* Assume reparsing */
|
||||
/*Assert(hand->loader != 0);*/
|
||||
a->length = 0;
|
||||
}
|
||||
|
||||
Assert(a->length >= 0);
|
||||
}
|
||||
|
||||
void grib_accessor_class_bitmap_t::init(grib_accessor* a, const long len, grib_arguments* arg)
|
||||
{
|
||||
grib_accessor_class_bytes_t::init(a, len, arg);
|
||||
grib_accessor_bitmap_t* self = (grib_accessor_bitmap_t*)a;
|
||||
grib_handle* hand = grib_handle_of_accessor(a);
|
||||
int n = 0;
|
||||
|
||||
self->tableReference = grib_arguments_get_name(hand, arg, n++);
|
||||
self->missing_value = grib_arguments_get_name(hand, arg, n++);
|
||||
self->offsetbsec = grib_arguments_get_name(hand, arg, n++);
|
||||
self->sLength = grib_arguments_get_name(hand, arg, n++);
|
||||
|
||||
compute_size(a);
|
||||
}
|
||||
|
||||
long grib_accessor_class_bitmap_t::next_offset(grib_accessor* a)
|
||||
{
|
||||
return a->byte_offset() + a->byte_count();
|
||||
}
|
||||
|
||||
void grib_accessor_class_bitmap_t::dump(grib_accessor* a, grib_dumper* dumper)
|
||||
{
|
||||
long len = 0;
|
||||
char label[1024];
|
||||
|
||||
a->value_count(&len);
|
||||
snprintf(label, sizeof(label), "Bitmap of %ld values", len);
|
||||
grib_dump_bytes(dumper, a, label);
|
||||
}
|
||||
|
||||
int grib_accessor_class_bitmap_t::unpack_long(grib_accessor* a, long* val, size_t* len)
|
||||
{
|
||||
long pos = a->offset * 8;
|
||||
long tlen = 0;
|
||||
const grib_handle* hand = grib_handle_of_accessor(a);
|
||||
|
||||
int err = a->value_count(&tlen);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (*len < tlen) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s, it contains %ld values", a->name, tlen);
|
||||
*len = tlen;
|
||||
return GRIB_ARRAY_TOO_SMALL;
|
||||
}
|
||||
|
||||
for (long i = 0; i < tlen; i++) {
|
||||
val[i] = (long)grib_decode_unsigned_long(hand->buffer->data, &pos, 1);
|
||||
}
|
||||
*len = tlen;
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
static int unpack(grib_accessor* a, T* val, size_t* len)
|
||||
{
|
||||
static_assert(std::is_floating_point<T>::value, "Requires floating points numbers");
|
||||
long pos = a->offset * 8;
|
||||
long tlen;
|
||||
grib_handle* hand = grib_handle_of_accessor(a);
|
||||
|
||||
int err = a->value_count(&tlen);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (*len < tlen) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s, it contains %ld values", a->name, tlen);
|
||||
*len = tlen;
|
||||
return GRIB_ARRAY_TOO_SMALL;
|
||||
}
|
||||
|
||||
for (long i = 0; i < tlen; i++) {
|
||||
val[i] = (T)grib_decode_unsigned_long(hand->buffer->data, &pos, 1);
|
||||
}
|
||||
*len = tlen;
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
int grib_accessor_class_bitmap_t::unpack_double(grib_accessor* a, double* val, size_t* len)
|
||||
{
|
||||
return unpack<double>(a, val, len);
|
||||
}
|
||||
|
||||
int grib_accessor_class_bitmap_t::unpack_float(grib_accessor* a, float* val, size_t* len)
|
||||
{
|
||||
return unpack<float>(a, val, len);
|
||||
}
|
||||
|
||||
int grib_accessor_class_bitmap_t::unpack_double_element(grib_accessor* a, size_t idx, double* val)
|
||||
{
|
||||
long pos = a->offset * 8;
|
||||
|
||||
pos += idx;
|
||||
*val = (double)grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &pos, 1);
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
int grib_accessor_class_bitmap_t::unpack_double_element_set(grib_accessor* a, const size_t* index_array, size_t len, double* val_array)
|
||||
{
|
||||
for (size_t i = 0; i < len; ++i) {
|
||||
unpack_double_element(a, index_array[i], val_array + i);
|
||||
}
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
void grib_accessor_class_bitmap_t::update_size(grib_accessor* a, size_t s)
|
||||
{
|
||||
a->length = s;
|
||||
}
|
||||
|
||||
size_t grib_accessor_class_bitmap_t::string_length(grib_accessor* a)
|
||||
{
|
||||
return a->length;
|
||||
}
|
||||
|
||||
int grib_accessor_class_bitmap_t::unpack_string(grib_accessor* a, char* val, size_t* len)
|
||||
{
|
||||
grib_handle* hand = grib_handle_of_accessor(a);
|
||||
const size_t l = a->length;
|
||||
|
||||
if (*len < l) {
|
||||
const char* cclass_name = a->cclass->name;
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
"%s: Buffer too small for %s. It is %zu bytes long (len=%zu)",
|
||||
cclass_name, a->name, l, *len);
|
||||
*len = l;
|
||||
return GRIB_BUFFER_TOO_SMALL;
|
||||
}
|
||||
|
||||
for (long i = 0; i < a->length; i++) {
|
||||
val[i] = hand->buffer->data[a->offset + i];
|
||||
}
|
||||
|
||||
*len = a->length;
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_bytes.h"
|
||||
|
||||
class grib_accessor_bitmap_t : public grib_accessor_bytes_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in bitmap */
|
||||
const char* tableReference;
|
||||
const char* missing_value;
|
||||
const char* offsetbsec;
|
||||
const char* sLength;
|
||||
};
|
||||
|
||||
class grib_accessor_class_bitmap_t : public grib_accessor_class_bytes_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_bitmap_t(const char* name) : grib_accessor_class_bytes_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_bitmap_t{}; }
|
||||
int unpack_double(grib_accessor*, double* val, size_t* len) override;
|
||||
int unpack_float(grib_accessor*, float* val, size_t* len) override;
|
||||
int unpack_long(grib_accessor*, long* val, size_t* len) override;
|
||||
int unpack_string(grib_accessor*, char*, size_t* len) override;
|
||||
size_t string_length(grib_accessor*) override;
|
||||
long next_offset(grib_accessor*) override;
|
||||
void dump(grib_accessor*, grib_dumper*) override;
|
||||
void init(grib_accessor*, const long, grib_arguments*) override;
|
||||
void update_size(grib_accessor*, size_t) override;
|
||||
int unpack_double_element(grib_accessor*, size_t i, double* val) override;
|
||||
int unpack_double_element_set(grib_accessor*, const size_t* index_array, size_t len, double* val_array) override;
|
||||
};
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
/*
|
||||
* (C) Copyright 2005- ECMWF.
|
||||
*
|
||||
|
@ -8,127 +9,15 @@
|
|||
* 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
|
||||
|
||||
START_CLASS_DEF
|
||||
CLASS = accessor
|
||||
SUPER = grib_accessor_class_gen
|
||||
IMPLEMENTS = get_native_type
|
||||
IMPLEMENTS = unpack_long; pack_long
|
||||
IMPLEMENTS = unpack_bytes; byte_count
|
||||
IMPLEMENTS = unpack_double; pack_double
|
||||
IMPLEMENTS = unpack_string
|
||||
IMPLEMENTS = init
|
||||
MEMBERS=const char* argument
|
||||
MEMBERS=long start
|
||||
MEMBERS=long len
|
||||
MEMBERS=double referenceValue
|
||||
MEMBERS=double referenceValuePresent
|
||||
MEMBERS=double scale
|
||||
END_CLASS_DEF
|
||||
|
||||
*/
|
||||
|
||||
/* START_CLASS_IMP */
|
||||
|
||||
/*
|
||||
|
||||
Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
|
||||
Instead edit values between START_CLASS_DEF and END_CLASS_DEF
|
||||
or edit "accessor.class" and rerun ./make_class.pl
|
||||
|
||||
*/
|
||||
|
||||
static int get_native_type(grib_accessor*);
|
||||
static int pack_double(grib_accessor*, const double* val, size_t* len);
|
||||
static int pack_long(grib_accessor*, const long* val, size_t* len);
|
||||
static int unpack_bytes(grib_accessor*, unsigned char*, size_t* len);
|
||||
static int unpack_double(grib_accessor*, double* val, size_t* len);
|
||||
static int unpack_long(grib_accessor*, long* val, size_t* len);
|
||||
static int unpack_string(grib_accessor*, char*, size_t* len);
|
||||
static long byte_count(grib_accessor*);
|
||||
static void init(grib_accessor*, const long, grib_arguments*);
|
||||
|
||||
typedef struct grib_accessor_bits
|
||||
{
|
||||
grib_accessor att;
|
||||
/* Members defined in gen */
|
||||
/* Members defined in bits */
|
||||
const char* argument;
|
||||
long start;
|
||||
long len;
|
||||
double referenceValue;
|
||||
double referenceValuePresent;
|
||||
double scale;
|
||||
} grib_accessor_bits;
|
||||
|
||||
extern grib_accessor_class* grib_accessor_class_gen;
|
||||
|
||||
static grib_accessor_class _grib_accessor_class_bits = {
|
||||
&grib_accessor_class_gen, /* super */
|
||||
"bits", /* name */
|
||||
sizeof(grib_accessor_bits), /* size */
|
||||
0, /* inited */
|
||||
0, /* init_class */
|
||||
&init, /* init */
|
||||
0, /* post_init */
|
||||
0, /* destroy */
|
||||
0, /* dump */
|
||||
0, /* next_offset */
|
||||
0, /* get length of string */
|
||||
0, /* get number of values */
|
||||
&byte_count, /* get number of bytes */
|
||||
0, /* get offset to bytes */
|
||||
&get_native_type, /* get native type */
|
||||
0, /* get sub_section */
|
||||
0, /* pack_missing */
|
||||
0, /* is_missing */
|
||||
&pack_long, /* pack_long */
|
||||
&unpack_long, /* unpack_long */
|
||||
&pack_double, /* pack_double */
|
||||
0, /* pack_float */
|
||||
&unpack_double, /* unpack_double */
|
||||
0, /* unpack_float */
|
||||
0, /* pack_string */
|
||||
&unpack_string, /* unpack_string */
|
||||
0, /* pack_string_array */
|
||||
0, /* unpack_string_array */
|
||||
0, /* pack_bytes */
|
||||
&unpack_bytes, /* unpack_bytes */
|
||||
0, /* pack_expression */
|
||||
0, /* notify_change */
|
||||
0, /* update_size */
|
||||
0, /* preferred_size */
|
||||
0, /* resize */
|
||||
0, /* nearest_smaller_value */
|
||||
0, /* next accessor */
|
||||
0, /* compare vs. another accessor */
|
||||
0, /* unpack only ith value (double) */
|
||||
0, /* unpack only ith value (float) */
|
||||
0, /* unpack a given set of elements (double) */
|
||||
0, /* unpack a given set of elements (float) */
|
||||
0, /* unpack a subarray */
|
||||
0, /* clear */
|
||||
0, /* clone accessor */
|
||||
};
|
||||
|
||||
#include "grib_accessor_class_bits.h"
|
||||
|
||||
grib_accessor_class_bits_t _grib_accessor_class_bits{"bits"};
|
||||
grib_accessor_class* grib_accessor_class_bits = &_grib_accessor_class_bits;
|
||||
|
||||
/* END_CLASS_IMP */
|
||||
|
||||
static void init(grib_accessor* a, const long l, grib_arguments* c)
|
||||
{
|
||||
grib_accessor_bits* self = (grib_accessor_bits*)a;
|
||||
void grib_accessor_class_bits_t::init(grib_accessor* a, const long l, grib_arguments* c){
|
||||
grib_accessor_class_gen_t::init(a, l, c);
|
||||
grib_accessor_bits_t* self = (grib_accessor_bits_t*)a;
|
||||
grib_handle* hand = grib_handle_of_accessor(a);
|
||||
grib_expression* e = NULL;
|
||||
int n = 0;
|
||||
|
@ -154,9 +43,8 @@ static void init(grib_accessor* a, const long l, grib_arguments* c)
|
|||
a->length = 0;
|
||||
}
|
||||
|
||||
static int unpack_long(grib_accessor* a, long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bits* self = (grib_accessor_bits*)a;
|
||||
int grib_accessor_class_bits_t::unpack_long(grib_accessor* a, long* val, size_t* len){
|
||||
grib_accessor_bits_t* self = (grib_accessor_bits_t*)a;
|
||||
grib_accessor* x = NULL;
|
||||
unsigned char* p = NULL;
|
||||
grib_handle* h = grib_handle_of_accessor(a);
|
||||
|
@ -173,17 +61,15 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len)
|
|||
if (!x)
|
||||
return GRIB_NOT_FOUND;
|
||||
|
||||
p = h->buffer->data + grib_byte_offset(x);
|
||||
*val = grib_decode_unsigned_long(p, &start, length);
|
||||
p = h->buffer->data + x->byte_offset(); *val = grib_decode_unsigned_long(p, &start, length);
|
||||
|
||||
*len = 1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bits* self = (grib_accessor_bits*)a;
|
||||
int grib_accessor_class_bits_t::unpack_double(grib_accessor* a, double* val, size_t* len){
|
||||
grib_accessor_bits_t* self = (grib_accessor_bits_t*)a;
|
||||
grib_accessor* x = NULL;
|
||||
unsigned char* p = NULL;
|
||||
grib_handle* h = grib_handle_of_accessor(a);
|
||||
|
@ -200,8 +86,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
if (!x)
|
||||
return GRIB_NOT_FOUND;
|
||||
|
||||
p = h->buffer->data + grib_byte_offset(x);
|
||||
*val = grib_decode_unsigned_long(p, &start, length);
|
||||
p = h->buffer->data + x->byte_offset(); *val = grib_decode_unsigned_long(p, &start, length);
|
||||
|
||||
*val = ((long)*val + self->referenceValue) / self->scale;
|
||||
|
||||
|
@ -210,9 +95,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bits* self = (grib_accessor_bits*)a;
|
||||
int grib_accessor_class_bits_t::pack_double(grib_accessor* a, const double* val, size_t* len){
|
||||
grib_accessor_bits_t* self = (grib_accessor_bits_t*)a;
|
||||
grib_accessor* x = NULL;
|
||||
grib_handle* h = grib_handle_of_accessor(a);
|
||||
unsigned char* p = NULL;
|
||||
|
@ -228,15 +112,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
if (!x)
|
||||
return GRIB_NOT_FOUND;
|
||||
|
||||
p = h->buffer->data + grib_byte_offset(x);
|
||||
|
||||
p = h->buffer->data + x->byte_offset();
|
||||
lval = round(*val * self->scale) - self->referenceValue;
|
||||
return grib_encode_unsigned_longb(p, lval, &start, length);
|
||||
}
|
||||
|
||||
static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bits* self = (grib_accessor_bits*)a;
|
||||
int grib_accessor_class_bits_t::pack_long(grib_accessor* a, const long* val, size_t* len){
|
||||
grib_accessor_bits_t* self = (grib_accessor_bits_t*)a;
|
||||
grib_accessor* x = NULL;
|
||||
grib_handle* h = grib_handle_of_accessor(a);
|
||||
unsigned char* p = NULL;
|
||||
|
@ -285,14 +167,12 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
|||
return GRIB_ENCODING_ERROR;
|
||||
}
|
||||
|
||||
p = h->buffer->data + grib_byte_offset(x);
|
||||
return grib_encode_unsigned_longb(p, *val, &start, length);
|
||||
p = h->buffer->data + x->byte_offset(); return grib_encode_unsigned_longb(p, *val, &start, length);
|
||||
}
|
||||
|
||||
static int get_native_type(grib_accessor* a)
|
||||
{
|
||||
int grib_accessor_class_bits_t::get_native_type(grib_accessor* a){
|
||||
int type = GRIB_TYPE_BYTES;
|
||||
grib_accessor_bits* self = (grib_accessor_bits*)a;
|
||||
grib_accessor_bits_t* self = (grib_accessor_bits_t*)a;
|
||||
|
||||
if (a->flags & GRIB_ACCESSOR_FLAG_STRING_TYPE)
|
||||
type = GRIB_TYPE_STRING;
|
||||
|
@ -306,13 +186,11 @@ static int get_native_type(grib_accessor* a)
|
|||
return type;
|
||||
}
|
||||
|
||||
static int unpack_string(grib_accessor* a, char* v, size_t* len)
|
||||
{
|
||||
int grib_accessor_class_bits_t::unpack_string(grib_accessor* a, char* v, size_t* len){
|
||||
int ret = 0;
|
||||
double dval = 0;
|
||||
long lval = 0;
|
||||
size_t llen = 1;
|
||||
grib_accessor_class* super = NULL;
|
||||
|
||||
switch (get_native_type(a)) {
|
||||
case GRIB_TYPE_LONG:
|
||||
|
@ -328,20 +206,17 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len)
|
|||
break;
|
||||
|
||||
default:
|
||||
super = *(a->cclass->super);
|
||||
ret = super->unpack_string(a, v, len);
|
||||
ret = grib_accessor_class_gen_t::unpack_string(a, v, len);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static long byte_count(grib_accessor* a)
|
||||
{
|
||||
long grib_accessor_class_bits_t::byte_count(grib_accessor* a){
|
||||
grib_context_log(a->context, GRIB_LOG_DEBUG, "byte_count of %s = %ld", a->name, a->length);
|
||||
return a->length;
|
||||
}
|
||||
|
||||
static int unpack_bytes(grib_accessor* a, unsigned char* buffer, size_t* len)
|
||||
{
|
||||
int grib_accessor_class_bits_t::unpack_bytes(grib_accessor* a, unsigned char* buffer, size_t* len){
|
||||
if (*len < a->length) {
|
||||
*len = a->length;
|
||||
return GRIB_ARRAY_TOO_SMALL;
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_gen.h"
|
||||
|
||||
class grib_accessor_bits_t : public grib_accessor_gen_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in bits */
|
||||
const char* argument;
|
||||
long start;
|
||||
long len;
|
||||
double referenceValue;
|
||||
double referenceValuePresent;
|
||||
double scale;
|
||||
};
|
||||
|
||||
class grib_accessor_class_bits_t : public grib_accessor_class_gen_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_bits_t(const char* name) : grib_accessor_class_gen_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_bits_t{}; }
|
||||
int get_native_type(grib_accessor*) override;
|
||||
int pack_double(grib_accessor*, const double* val, size_t* len) override;
|
||||
int pack_long(grib_accessor*, const long* val, size_t* len) override;
|
||||
int unpack_bytes(grib_accessor*, unsigned char*, size_t* len) override;
|
||||
int unpack_double(grib_accessor*, double* val, size_t* len) override;
|
||||
int unpack_long(grib_accessor*, long* val, size_t* len) override;
|
||||
int unpack_string(grib_accessor*, char*, size_t* len) override;
|
||||
long byte_count(grib_accessor*) override;
|
||||
void init(grib_accessor*, const long, grib_arguments*) override;
|
||||
};
|
|
@ -0,0 +1,78 @@
|
|||
|
||||
/*
|
||||
* (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 "grib_accessor_class_bits_per_value.h"
|
||||
|
||||
grib_accessor_class_bits_per_value_t _grib_accessor_class_bits_per_value{ "bits_per_value" };
|
||||
grib_accessor_class* grib_accessor_class_bits_per_value = &_grib_accessor_class_bits_per_value;
|
||||
|
||||
|
||||
void grib_accessor_class_bits_per_value_t::init(grib_accessor* a, const long l, grib_arguments* args)
|
||||
{
|
||||
grib_accessor_class_long_t::init(a, l, args);
|
||||
int n = 0;
|
||||
grib_accessor_bits_per_value_t* self = (grib_accessor_bits_per_value_t*)a;
|
||||
self->values = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++);
|
||||
self->bits_per_value = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++);
|
||||
a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
|
||||
a->length = 0;
|
||||
}
|
||||
|
||||
int grib_accessor_class_bits_per_value_t::unpack_long(grib_accessor* a, long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bits_per_value_t* self = (grib_accessor_bits_per_value_t*)a;
|
||||
|
||||
int ret = 0;
|
||||
grib_handle* h = grib_handle_of_accessor(a);
|
||||
|
||||
if ((ret = grib_get_long_internal(h, self->bits_per_value, val)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
*len = 1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int grib_accessor_class_bits_per_value_t::pack_long(grib_accessor* a, const long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bits_per_value_t* self = (grib_accessor_bits_per_value_t*)a;
|
||||
|
||||
double* values = NULL;
|
||||
size_t size = 0;
|
||||
int ret = 0;
|
||||
grib_context* c = a->context;
|
||||
grib_handle* h = grib_handle_of_accessor(a);
|
||||
|
||||
if ((ret = grib_get_size(h, self->values, &size)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
values = (double*)grib_context_malloc(c, size * sizeof(double));
|
||||
if (!values)
|
||||
return GRIB_OUT_OF_MEMORY;
|
||||
|
||||
if ((ret = grib_get_double_array_internal(h, self->values, values, &size)) != GRIB_SUCCESS) {
|
||||
grib_context_free(c, values);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((ret = grib_set_long_internal(h, self->bits_per_value, *val)) != GRIB_SUCCESS) {
|
||||
grib_context_free(c, values);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((ret = grib_set_double_array_internal(h, self->values, values, size)) != GRIB_SUCCESS) {
|
||||
grib_context_free(c, values);
|
||||
return ret;
|
||||
}
|
||||
|
||||
grib_context_free(c, values);
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_long.h"
|
||||
|
||||
class grib_accessor_bits_per_value_t : public grib_accessor_long_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in bits_per_value */
|
||||
const char* values;
|
||||
const char* bits_per_value;
|
||||
};
|
||||
|
||||
class grib_accessor_class_bits_per_value_t : public grib_accessor_class_long_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_bits_per_value_t(const char* name) : grib_accessor_class_long_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_bits_per_value_t{}; }
|
||||
int pack_long(grib_accessor*, const long* val, size_t* len) override;
|
||||
int unpack_long(grib_accessor*, long* val, size_t* len) override;
|
||||
void init(grib_accessor*, const long, grib_arguments*) override;
|
||||
};
|
|
@ -0,0 +1,47 @@
|
|||
|
||||
/*
|
||||
* (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 "grib_accessor_class_blob.h"
|
||||
|
||||
grib_accessor_class_blob_t _grib_accessor_class_blob{ "blob" };
|
||||
grib_accessor_class* grib_accessor_class_blob = &_grib_accessor_class_blob;
|
||||
|
||||
|
||||
void grib_accessor_class_blob_t::init(grib_accessor* a, const long len, grib_arguments* arg)
|
||||
{
|
||||
grib_accessor_class_gen_t::init(a, len, arg);
|
||||
grib_get_long_internal(grib_handle_of_accessor(a),
|
||||
grib_arguments_get_name(a->parent->h, arg, 0), &a->length);
|
||||
Assert(a->length >= 0);
|
||||
}
|
||||
|
||||
int grib_accessor_class_blob_t::get_native_type(grib_accessor* a)
|
||||
{
|
||||
return GRIB_TYPE_BYTES;
|
||||
}
|
||||
|
||||
int grib_accessor_class_blob_t::unpack_bytes(grib_accessor* a, unsigned char* buffer, size_t* len)
|
||||
{
|
||||
if (*len < (size_t)a->length) {
|
||||
*len = a->length;
|
||||
return GRIB_ARRAY_TOO_SMALL;
|
||||
}
|
||||
*len = a->length;
|
||||
|
||||
memcpy(buffer, grib_handle_of_accessor(a)->buffer->data + a->offset, *len);
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
void grib_accessor_class_blob_t::dump(grib_accessor* a, grib_dumper* dumper)
|
||||
{
|
||||
grib_dump_bytes(dumper, a, NULL);
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_gen.h"
|
||||
|
||||
class grib_accessor_blob_t : public grib_accessor_gen_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in blob */
|
||||
};
|
||||
|
||||
class grib_accessor_class_blob_t : public grib_accessor_class_gen_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_blob_t(const char* name) : grib_accessor_class_gen_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_blob_t{}; }
|
||||
int get_native_type(grib_accessor*) override;
|
||||
int unpack_bytes(grib_accessor*, unsigned char*, size_t* len) override;
|
||||
void dump(grib_accessor*, grib_dumper*) override;
|
||||
void init(grib_accessor*, const long, grib_arguments*) override;
|
||||
};
|
|
@ -0,0 +1,82 @@
|
|||
|
||||
/*
|
||||
* (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 "grib_accessor_class_budgdate.h"
|
||||
|
||||
grib_accessor_class_budgdate_t _grib_accessor_class_budgdate{"budgdate"};
|
||||
grib_accessor_class* grib_accessor_class_budgdate = &_grib_accessor_class_budgdate;
|
||||
|
||||
|
||||
void grib_accessor_class_budgdate_t::init(grib_accessor* a, const long l, grib_arguments* c){
|
||||
grib_accessor_class_long_t::init(a, l, c);
|
||||
grib_accessor_budgdate_t* self = (grib_accessor_budgdate_t*)a;
|
||||
int n = 0;
|
||||
|
||||
self->year = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++);
|
||||
self->month = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++);
|
||||
self->day = grib_arguments_get_name(grib_handle_of_accessor(a), c, n++);
|
||||
}
|
||||
|
||||
int grib_accessor_class_budgdate_t::unpack_long(grib_accessor* a, long* val, size_t* len){
|
||||
int ret = 0;
|
||||
grib_accessor_budgdate_t* self = (grib_accessor_budgdate_t*)a;
|
||||
|
||||
long year = 0;
|
||||
long month = 0;
|
||||
long day = 0;
|
||||
|
||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->day, &day)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->month, &month)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->year, &year)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if (*len < 1)
|
||||
return GRIB_WRONG_ARRAY_SIZE;
|
||||
|
||||
val[0] = (1900 + year) * 10000 + month * 100 + day;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* TODO: Check for a valid date */
|
||||
int grib_accessor_class_budgdate_t::pack_long(grib_accessor* a, const long* val, size_t* len){
|
||||
int ret = 0;
|
||||
long v = val[0];
|
||||
grib_accessor_budgdate_t* self = (grib_accessor_budgdate_t*)a;
|
||||
|
||||
long year = 0;
|
||||
long month = 0;
|
||||
long day = 0;
|
||||
|
||||
if (*len != 1)
|
||||
return GRIB_WRONG_ARRAY_SIZE;
|
||||
|
||||
year = v / 10000;
|
||||
v %= 10000;
|
||||
month = v / 100;
|
||||
v %= 100;
|
||||
day = v;
|
||||
|
||||
year -= 1900;
|
||||
|
||||
Assert(year < 255);
|
||||
|
||||
if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->day, day)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->month, month)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->year, year)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
return ret;
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_long.h"
|
||||
|
||||
class grib_accessor_budgdate_t : public grib_accessor_long_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in budgdate */
|
||||
const char* year;
|
||||
const char* month;
|
||||
const char* day;
|
||||
};
|
||||
|
||||
class grib_accessor_class_budgdate_t : public grib_accessor_class_long_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_budgdate_t(const char* name) : grib_accessor_class_long_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_budgdate_t{}; }
|
||||
int pack_long(grib_accessor*, const long* val, size_t* len) override;
|
||||
int unpack_long(grib_accessor*, long* val, size_t* len) override;
|
||||
void init(grib_accessor*, const long, grib_arguments*) override;
|
||||
};
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_gen.h"
|
||||
|
||||
class grib_accessor_bufr_data_array_t : public grib_accessor_gen_t
|
||||
{
|
||||
public:
|
||||
const char* bufrDataEncodedName;
|
||||
const char* numberOfSubsetsName;
|
||||
const char* expandedDescriptorsName;
|
||||
const char* flagsName;
|
||||
const char* unitsName;
|
||||
const char* elementsDescriptorsIndexName;
|
||||
const char* compressedDataName;
|
||||
bufr_descriptors_array* expanded;
|
||||
grib_accessor* expandedAccessor;
|
||||
int* canBeMissing;
|
||||
long numberOfSubsets;
|
||||
long compressedData;
|
||||
grib_vdarray* numericValues;
|
||||
grib_vsarray* stringValues;
|
||||
grib_viarray* elementsDescriptorsIndex;
|
||||
int do_decode;
|
||||
int bitmapStartElementsDescriptorsIndex;
|
||||
int bitmapCurrentElementsDescriptorsIndex;
|
||||
int bitmapSize;
|
||||
int bitmapStart;
|
||||
int bitmapCurrent;
|
||||
grib_accessors_list* dataAccessors;
|
||||
int unpackMode;
|
||||
int bitsToEndData;
|
||||
grib_section* dataKeys;
|
||||
double* inputBitmap;
|
||||
int nInputBitmap;
|
||||
int iInputBitmap;
|
||||
long* inputReplications;
|
||||
int nInputReplications;
|
||||
int iInputReplications;
|
||||
long* inputExtendedReplications;
|
||||
int nInputExtendedReplications;
|
||||
int iInputExtendedReplications;
|
||||
long* inputShortReplications;
|
||||
int nInputShortReplications;
|
||||
int iInputShortReplications;
|
||||
grib_iarray* iss_list;
|
||||
grib_trie_with_rank* dataAccessorsTrie;
|
||||
grib_sarray* tempStrings;
|
||||
grib_vdarray* tempDoubleValues;
|
||||
int change_ref_value_operand;
|
||||
size_t refValListSize;
|
||||
long* refValList;
|
||||
long refValIndex;
|
||||
bufr_tableb_override* tableb_override;
|
||||
int set_to_missing_if_out_of_range;
|
||||
};
|
||||
|
||||
class grib_accessor_class_bufr_data_array_t : public grib_accessor_class_gen_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_bufr_data_array_t(const char* name) : grib_accessor_class_gen_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_bufr_data_array_t{}; }
|
||||
int get_native_type(grib_accessor*) override;
|
||||
int pack_double(grib_accessor*, const double* val, size_t* len) override;
|
||||
int pack_long(grib_accessor*, const long* val, size_t* len) override;
|
||||
int unpack_double(grib_accessor*, double* val, size_t* len) override;
|
||||
long byte_count(grib_accessor*) override;
|
||||
long byte_offset(grib_accessor*) override;
|
||||
long next_offset(grib_accessor*) override;
|
||||
int value_count(grib_accessor*, long*) override;
|
||||
void destroy(grib_context*, grib_accessor*) override;
|
||||
void dump(grib_accessor*, grib_dumper*) override;
|
||||
void init(grib_accessor*, const long, grib_arguments*) override;
|
||||
};
|
||||
|
||||
grib_vsarray* accessor_bufr_data_array_get_stringValues(grib_accessor* a);
|
||||
grib_accessors_list* accessor_bufr_data_array_get_dataAccessors(grib_accessor* a);
|
||||
grib_trie_with_rank* accessor_bufr_data_array_get_dataAccessorsTrie(grib_accessor* a);
|
||||
void accessor_bufr_data_array_set_unpackMode(grib_accessor* a, int unpackMode);
|
||||
|
|
@ -8,147 +8,22 @@
|
|||
* 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
|
||||
|
||||
START_CLASS_DEF
|
||||
CLASS = accessor
|
||||
SUPER = grib_accessor_class_gen
|
||||
IMPLEMENTS = init;dump
|
||||
IMPLEMENTS = unpack_string;unpack_string_array;unpack_long; unpack_double
|
||||
IMPLEMENTS = unpack_double_element ; is_missing
|
||||
IMPLEMENTS = pack_long; pack_double ; pack_string_array; pack_string; pack_missing
|
||||
IMPLEMENTS = value_count; get_native_type; make_clone; destroy
|
||||
MEMBERS = long index
|
||||
MEMBERS = int type
|
||||
MEMBERS = long compressedData
|
||||
MEMBERS = long subsetNumber
|
||||
MEMBERS = long numberOfSubsets
|
||||
MEMBERS = bufr_descriptors_array* descriptors
|
||||
MEMBERS = grib_vdarray* numericValues
|
||||
MEMBERS = grib_vsarray* stringValues
|
||||
MEMBERS = grib_viarray* elementsDescriptorsIndex
|
||||
MEMBERS = char* cname
|
||||
|
||||
END_CLASS_DEF
|
||||
|
||||
*/
|
||||
|
||||
/* START_CLASS_IMP */
|
||||
|
||||
/*
|
||||
|
||||
Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
|
||||
Instead edit values between START_CLASS_DEF and END_CLASS_DEF
|
||||
or edit "accessor.class" and rerun ./make_class.pl
|
||||
|
||||
*/
|
||||
|
||||
static int get_native_type(grib_accessor*);
|
||||
static int pack_missing(grib_accessor*);
|
||||
static int is_missing(grib_accessor*);
|
||||
static int pack_double(grib_accessor*, const double* val, size_t* len);
|
||||
static int pack_long(grib_accessor*, const long* val, size_t* len);
|
||||
static int pack_string(grib_accessor*, const char*, size_t* len);
|
||||
static int pack_string_array(grib_accessor*, const char**, size_t* len);
|
||||
static int unpack_double(grib_accessor*, double* val, size_t* len);
|
||||
static int unpack_long(grib_accessor*, long* val, size_t* len);
|
||||
static int unpack_string(grib_accessor*, char*, size_t* len);
|
||||
static int unpack_string_array(grib_accessor*, char**, size_t* len);
|
||||
static int value_count(grib_accessor*, long*);
|
||||
static void destroy(grib_context*, grib_accessor*);
|
||||
static void dump(grib_accessor*, grib_dumper*);
|
||||
static void init(grib_accessor*, const long, grib_arguments*);
|
||||
static int unpack_double_element(grib_accessor*, size_t i, double* val);
|
||||
static grib_accessor* make_clone(grib_accessor*, grib_section*, int*);
|
||||
|
||||
typedef struct grib_accessor_bufr_data_element
|
||||
{
|
||||
grib_accessor att;
|
||||
/* Members defined in gen */
|
||||
/* Members defined in bufr_data_element */
|
||||
long index;
|
||||
int type;
|
||||
long compressedData;
|
||||
long subsetNumber;
|
||||
long numberOfSubsets;
|
||||
bufr_descriptors_array* descriptors;
|
||||
grib_vdarray* numericValues;
|
||||
grib_vsarray* stringValues;
|
||||
grib_viarray* elementsDescriptorsIndex;
|
||||
char* cname;
|
||||
} grib_accessor_bufr_data_element;
|
||||
|
||||
extern grib_accessor_class* grib_accessor_class_gen;
|
||||
|
||||
static grib_accessor_class _grib_accessor_class_bufr_data_element = {
|
||||
&grib_accessor_class_gen, /* super */
|
||||
"bufr_data_element", /* name */
|
||||
sizeof(grib_accessor_bufr_data_element), /* size */
|
||||
0, /* inited */
|
||||
0, /* init_class */
|
||||
&init, /* init */
|
||||
0, /* post_init */
|
||||
&destroy, /* destroy */
|
||||
&dump, /* dump */
|
||||
0, /* next_offset */
|
||||
0, /* get length of string */
|
||||
&value_count, /* get number of values */
|
||||
0, /* get number of bytes */
|
||||
0, /* get offset to bytes */
|
||||
&get_native_type, /* get native type */
|
||||
0, /* get sub_section */
|
||||
&pack_missing, /* pack_missing */
|
||||
&is_missing, /* is_missing */
|
||||
&pack_long, /* pack_long */
|
||||
&unpack_long, /* unpack_long */
|
||||
&pack_double, /* pack_double */
|
||||
0, /* pack_float */
|
||||
&unpack_double, /* unpack_double */
|
||||
0, /* unpack_float */
|
||||
&pack_string, /* pack_string */
|
||||
&unpack_string, /* unpack_string */
|
||||
&pack_string_array, /* pack_string_array */
|
||||
&unpack_string_array, /* unpack_string_array */
|
||||
0, /* pack_bytes */
|
||||
0, /* unpack_bytes */
|
||||
0, /* pack_expression */
|
||||
0, /* notify_change */
|
||||
0, /* update_size */
|
||||
0, /* preferred_size */
|
||||
0, /* resize */
|
||||
0, /* nearest_smaller_value */
|
||||
0, /* next accessor */
|
||||
0, /* compare vs. another accessor */
|
||||
&unpack_double_element, /* unpack only ith value (double) */
|
||||
0, /* unpack only ith value (float) */
|
||||
0, /* unpack a given set of elements (double) */
|
||||
0, /* unpack a given set of elements (float) */
|
||||
0, /* unpack a subarray */
|
||||
0, /* clear */
|
||||
&make_clone, /* clone accessor */
|
||||
};
|
||||
|
||||
#include "grib_accessor_class_bufr_data_element.h"
|
||||
|
||||
grib_accessor_class_bufr_data_element_t _grib_accessor_class_bufr_data_element{ "bufr_data_element" };
|
||||
grib_accessor_class* grib_accessor_class_bufr_data_element = &_grib_accessor_class_bufr_data_element;
|
||||
|
||||
/* END_CLASS_IMP */
|
||||
|
||||
static grib_accessor* make_clone(grib_accessor* a, grib_section* s, int* err)
|
||||
grib_accessor* grib_accessor_class_bufr_data_element_t::make_clone(grib_accessor* a, grib_section* s, int* err)
|
||||
{
|
||||
grib_accessor* the_clone = NULL;
|
||||
grib_accessor* attribute = NULL;
|
||||
grib_accessor_bufr_data_element* elementAccessor;
|
||||
grib_accessor_bufr_data_element* self;
|
||||
grib_accessor_bufr_data_element_t* elementAccessor;
|
||||
grib_accessor_bufr_data_element_t* self;
|
||||
char* copied_name = NULL;
|
||||
int i;
|
||||
grib_action creator = {0,};
|
||||
grib_action creator = {
|
||||
0,
|
||||
};
|
||||
creator.op = (char*)"bufr_data_element";
|
||||
creator.name_space = (char*)"";
|
||||
creator.set = 0;
|
||||
|
@ -161,8 +36,8 @@ static grib_accessor* make_clone(grib_accessor* a, grib_section* s, int* err)
|
|||
the_clone = grib_accessor_factory(s, &creator, 0, NULL);
|
||||
copied_name = grib_context_strdup(a->context, a->name);
|
||||
the_clone->name = copied_name;
|
||||
elementAccessor = (grib_accessor_bufr_data_element*)the_clone;
|
||||
self = (grib_accessor_bufr_data_element*)a;
|
||||
elementAccessor = (grib_accessor_bufr_data_element_t*)the_clone;
|
||||
self = (grib_accessor_bufr_data_element_t*)a;
|
||||
the_clone->flags = a->flags;
|
||||
the_clone->parent = NULL;
|
||||
the_clone->h = s->h;
|
||||
|
@ -179,9 +54,9 @@ static grib_accessor* make_clone(grib_accessor* a, grib_section* s, int* err)
|
|||
|
||||
i = 0;
|
||||
while (a->attributes[i]) {
|
||||
attribute = grib_accessor_clone(a->attributes[i], s, err);
|
||||
attribute = a->attributes[i]->clone(s, err);
|
||||
/* attribute->parent=a->parent; */
|
||||
grib_accessor_add_attribute(the_clone, attribute, 0);
|
||||
the_clone->add_attribute(attribute, 0);
|
||||
i++;
|
||||
}
|
||||
|
||||
|
@ -190,68 +65,69 @@ static grib_accessor* make_clone(grib_accessor* a, grib_section* s, int* err)
|
|||
|
||||
void accessor_bufr_data_element_set_index(grib_accessor* a, long index)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
self->index = index;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
self->index = index;
|
||||
}
|
||||
|
||||
void accessor_bufr_data_element_set_type(grib_accessor* a, int type)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
self->type = type;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
self->type = type;
|
||||
}
|
||||
|
||||
void accessor_bufr_data_element_set_numberOfSubsets(grib_accessor* a, long numberOfSubsets)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
self->numberOfSubsets = numberOfSubsets;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
self->numberOfSubsets = numberOfSubsets;
|
||||
}
|
||||
|
||||
void accessor_bufr_data_element_set_subsetNumber(grib_accessor* a, long subsetNumber)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
self->subsetNumber = subsetNumber;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
self->subsetNumber = subsetNumber;
|
||||
}
|
||||
|
||||
void accessor_bufr_data_element_set_compressedData(grib_accessor* a, int compressedData)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
self->compressedData = compressedData;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
self->compressedData = compressedData;
|
||||
}
|
||||
|
||||
void accessor_bufr_data_element_set_descriptors(grib_accessor* a, bufr_descriptors_array* descriptors)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
self->descriptors = descriptors;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
self->descriptors = descriptors;
|
||||
}
|
||||
|
||||
void accessor_bufr_data_element_set_numericValues(grib_accessor* a, grib_vdarray* numericValues)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
self->numericValues = numericValues;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
self->numericValues = numericValues;
|
||||
}
|
||||
|
||||
void accessor_bufr_data_element_set_stringValues(grib_accessor* a, grib_vsarray* stringValues)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
self->stringValues = stringValues;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
self->stringValues = stringValues;
|
||||
}
|
||||
|
||||
void accessor_bufr_data_element_set_elementsDescriptorsIndex(grib_accessor* a, grib_viarray* elementsDescriptorsIndex)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
self->elementsDescriptorsIndex = elementsDescriptorsIndex;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
self->elementsDescriptorsIndex = elementsDescriptorsIndex;
|
||||
}
|
||||
|
||||
static void init(grib_accessor* a, const long len, grib_arguments* params)
|
||||
void grib_accessor_class_bufr_data_element_t::init(grib_accessor* a, const long len, grib_arguments* params)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
a->length = 0;
|
||||
grib_accessor_class_gen_t::init(a, len, params);
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
a->length = 0;
|
||||
a->flags |= GRIB_ACCESSOR_FLAG_BUFR_DATA;
|
||||
/* a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; */
|
||||
self->cname = NULL;
|
||||
}
|
||||
|
||||
static void dump(grib_accessor* a, grib_dumper* dumper)
|
||||
void grib_accessor_class_bufr_data_element_t::dump(grib_accessor* a, grib_dumper* dumper)
|
||||
{
|
||||
int type = get_native_type(a);
|
||||
|
||||
|
@ -268,9 +144,9 @@ static void dump(grib_accessor* a, grib_dumper* dumper)
|
|||
}
|
||||
}
|
||||
|
||||
static int unpack_string_array(grib_accessor* a, char** val, size_t* len)
|
||||
int grib_accessor_class_bufr_data_element_t::unpack_string_array(grib_accessor* a, char** val, size_t* len)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
|
||||
int ret = 0, idx = 0;
|
||||
size_t count = 0, i = 0;
|
||||
|
@ -289,7 +165,7 @@ static int unpack_string_array(grib_accessor* a, char** val, size_t* len)
|
|||
else {
|
||||
DEBUG_ASSERT(self->subsetNumber < self->numericValues->n);
|
||||
DEBUG_ASSERT(self->index < self->numericValues->v[self->subsetNumber]->n);
|
||||
idx = (int)self->numericValues->v[self->subsetNumber]->v[self->index] / 1000 - 1;
|
||||
idx = (int)self->numericValues->v[self->subsetNumber]->v[self->index] / 1000 - 1;
|
||||
val[0] = grib_context_strdup(c, self->stringValues->v[idx]->v[0]);
|
||||
*len = 1;
|
||||
}
|
||||
|
@ -297,13 +173,13 @@ static int unpack_string_array(grib_accessor* a, char** val, size_t* len)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int pack_string_array(grib_accessor* a, const char** v, size_t* len)
|
||||
int grib_accessor_class_bufr_data_element_t::pack_string_array(grib_accessor* a, const char** v, size_t* len)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
|
||||
int ret = GRIB_SUCCESS, idx = 0;
|
||||
size_t i = 0;
|
||||
char* s = NULL;
|
||||
size_t i = 0;
|
||||
char* s = NULL;
|
||||
grib_context* c = a->context;
|
||||
|
||||
if (self->compressedData) {
|
||||
|
@ -322,32 +198,32 @@ static int pack_string_array(grib_accessor* a, const char** v, size_t* len)
|
|||
}
|
||||
}
|
||||
else {
|
||||
//ECC-1623
|
||||
// ECC-1623
|
||||
if (*len != (size_t)self->numberOfSubsets) {
|
||||
grib_context_log(c, GRIB_LOG_ERROR,
|
||||
"Number of values mismatch for '%s': %zu strings provided but expected %ld (=number of subsets)",
|
||||
a->name, *len, self->numberOfSubsets);
|
||||
"Number of values mismatch for '%s': %zu strings provided but expected %ld (=number of subsets)",
|
||||
a->name, *len, self->numberOfSubsets);
|
||||
return GRIB_WRONG_ARRAY_SIZE;
|
||||
}
|
||||
for (i = 0; i < *len; i++) {
|
||||
//idx = (int)self->numericValues->v[self->subsetNumber]->v[self->index] / 1000 - 1;
|
||||
idx = (int)self->numericValues->v[i]->v[self->index] / 1000 - 1;
|
||||
// idx = (int)self->numericValues->v[self->subsetNumber]->v[self->index] / 1000 - 1;
|
||||
idx = (int)self->numericValues->v[i]->v[self->index] / 1000 - 1;
|
||||
self->stringValues->v[idx]->v[0] = strdup(v[i]);
|
||||
}
|
||||
*len=1;
|
||||
*len = 1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int unpack_string(grib_accessor* a, char* val, size_t* len)
|
||||
int grib_accessor_class_bufr_data_element_t::unpack_string(grib_accessor* a, char* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
char* str = NULL;
|
||||
char* p = 0;
|
||||
size_t slen = 0;
|
||||
double dval = 0;
|
||||
size_t dlen = 1;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
char* str = NULL;
|
||||
char* p = 0;
|
||||
size_t slen = 0;
|
||||
double dval = 0;
|
||||
size_t dlen = 1;
|
||||
int idx = 0, err = 0;
|
||||
grib_context* c = a->context;
|
||||
|
||||
|
@ -409,12 +285,12 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len)
|
|||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
static int pack_string(grib_accessor* a, const char* val, size_t* len)
|
||||
int grib_accessor_class_bufr_data_element_t::pack_string(grib_accessor* a, const char* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
|
||||
int ret = GRIB_SUCCESS, idx = 0;
|
||||
char* s = NULL;
|
||||
char* s = NULL;
|
||||
grib_context* c = a->context;
|
||||
|
||||
if (self->compressedData) {
|
||||
|
@ -426,16 +302,16 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len)
|
|||
grib_sarray_delete_content(c, self->stringValues->v[idx]); /* ECC-1172 */
|
||||
grib_sarray_delete(c, self->stringValues->v[idx]);
|
||||
self->stringValues->v[idx] = grib_sarray_new(c, 1, 1);
|
||||
s = grib_context_strdup(c, val);
|
||||
s = grib_context_strdup(c, val);
|
||||
grib_sarray_push(c, self->stringValues->v[idx], s);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int unpack_long(grib_accessor* a, long* val, size_t* len)
|
||||
int grib_accessor_class_bufr_data_element_t::unpack_long(grib_accessor* a, long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
int ret = GRIB_SUCCESS;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
int ret = GRIB_SUCCESS;
|
||||
long count = 0, i = 0;
|
||||
|
||||
value_count(a, &count);
|
||||
|
@ -461,10 +337,10 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
||||
int grib_accessor_class_bufr_data_element_t::unpack_double(grib_accessor* a, double* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
int ret = GRIB_SUCCESS;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
int ret = GRIB_SUCCESS;
|
||||
long count = 0, i = 0;
|
||||
|
||||
value_count(a, &count);
|
||||
|
@ -490,10 +366,10 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
||||
int grib_accessor_class_bufr_data_element_t::pack_double(grib_accessor* a, const double* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
int ret = GRIB_SUCCESS;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
int ret = GRIB_SUCCESS;
|
||||
size_t count = 1, i = 0;
|
||||
grib_context* c = a->context;
|
||||
|
||||
|
@ -514,16 +390,16 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
}
|
||||
else {
|
||||
self->numericValues->v[self->subsetNumber]->v[self->index] = val[0];
|
||||
*len = 1;
|
||||
*len = 1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
||||
int grib_accessor_class_bufr_data_element_t::pack_long(grib_accessor* a, const long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
int ret = 0;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
int ret = 0;
|
||||
size_t count = 1, i = 0;
|
||||
grib_context* c = a->context;
|
||||
|
||||
|
@ -544,17 +420,17 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
|||
}
|
||||
else {
|
||||
self->numericValues->v[self->subsetNumber]->v[self->index] = val[0] == GRIB_MISSING_LONG ? GRIB_MISSING_DOUBLE : val[0];
|
||||
*len = 1;
|
||||
*len = 1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int value_count(grib_accessor* a, long* count)
|
||||
int grib_accessor_class_bufr_data_element_t::value_count(grib_accessor* a, long* count)
|
||||
{
|
||||
int ret = 0, type = 0, idx = 0;
|
||||
size_t size = 0;
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
size_t size = 0;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
|
||||
if (!self->compressedData) {
|
||||
*count = 1;
|
||||
|
@ -577,12 +453,12 @@ static int value_count(grib_accessor* a, long* count)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
|
||||
int grib_accessor_class_bufr_data_element_t::unpack_double_element(grib_accessor* a, size_t idx, double* val)
|
||||
{
|
||||
/* ECC-415 */
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
int ret = GRIB_SUCCESS;
|
||||
long count = 0;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
int ret = GRIB_SUCCESS;
|
||||
long count = 0;
|
||||
|
||||
value_count(a, &count);
|
||||
if (idx >= (size_t)count) {
|
||||
|
@ -598,10 +474,10 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int get_native_type(grib_accessor* a)
|
||||
int grib_accessor_class_bufr_data_element_t::get_native_type(grib_accessor* a)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
int ret = GRIB_TYPE_DOUBLE;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
int ret = GRIB_TYPE_DOUBLE;
|
||||
DEBUG_ASSERT(self);
|
||||
switch (self->type) {
|
||||
case BUFR_DESCRIPTOR_TYPE_STRING:
|
||||
|
@ -624,24 +500,25 @@ static int get_native_type(grib_accessor* a)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void destroy(grib_context* ct, grib_accessor* a)
|
||||
void grib_accessor_class_bufr_data_element_t::destroy(grib_context* ct, grib_accessor* a)
|
||||
{
|
||||
grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
|
||||
int i = 0;
|
||||
grib_accessor_bufr_data_element_t* self = (grib_accessor_bufr_data_element_t*)a;
|
||||
int i = 0;
|
||||
if (self->cname)
|
||||
grib_context_free(ct, self->cname); /* ECC-765 */
|
||||
while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
|
||||
/*grib_context_log(ct,GRIB_LOG_DEBUG,"deleting attribute %s->%s",a->name,a->attributes[i]->name);*/
|
||||
/*printf("bufr_data_element destroy %s %p\n", a->attributes[i]->name, (void*)a->attributes[i]);*/
|
||||
grib_accessor_delete(ct, a->attributes[i]);
|
||||
a->attributes[i]->destroy(ct);
|
||||
a->attributes[i] = NULL;
|
||||
i++;
|
||||
}
|
||||
grib_accessor_class_gen_t::destroy(ct, a);
|
||||
}
|
||||
|
||||
#define MAX_STRING_SIZE 4096
|
||||
/* Return 1 if BUFR element(s) is/are missing, 0 otherwise. In case of decoding errors, also return 0 */
|
||||
static int is_missing(grib_accessor* a)
|
||||
int grib_accessor_class_bufr_data_element_t::is_missing(grib_accessor* a)
|
||||
{
|
||||
const int ktype = get_native_type(a);
|
||||
int err = 0, result = 1; /* default: assume all are missing */
|
||||
|
@ -651,16 +528,16 @@ static int is_missing(grib_accessor* a)
|
|||
|
||||
if (ktype == GRIB_TYPE_LONG) {
|
||||
long* values = NULL;
|
||||
long value = 0;
|
||||
long value = 0;
|
||||
|
||||
value_count(a, &count);
|
||||
size = size2 = count;
|
||||
if (size > 1) {
|
||||
values = (long*)grib_context_malloc_clear(c, sizeof(long) * size);
|
||||
err = grib_unpack_long(a, values, &size2);
|
||||
err = a->unpack_long(values, &size2);
|
||||
}
|
||||
else {
|
||||
err = grib_unpack_long(a, &value, &size2);
|
||||
err = a->unpack_long(&value, &size2);
|
||||
}
|
||||
if (err) return 0; /* TODO: no way of propagating the error up */
|
||||
Assert(size2 == size);
|
||||
|
@ -672,22 +549,23 @@ static int is_missing(grib_accessor* a)
|
|||
}
|
||||
}
|
||||
grib_context_free(c, values);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
result = grib_is_missing_long(a, value);
|
||||
}
|
||||
}
|
||||
else if (ktype == GRIB_TYPE_DOUBLE) {
|
||||
double value = 0;
|
||||
double value = 0;
|
||||
double* values = NULL;
|
||||
|
||||
value_count(a, &count);
|
||||
size = size2 = count;
|
||||
if (size > 1) {
|
||||
values = (double*)grib_context_malloc_clear(c, sizeof(double) * size);
|
||||
err = grib_unpack_double(a, values, &size2);
|
||||
err = a->unpack_double(values, &size2);
|
||||
}
|
||||
else {
|
||||
err = grib_unpack_double(a, &value, &size2);
|
||||
err = a->unpack_double(&value, &size2);
|
||||
}
|
||||
if (err) return 0; /* TODO: no way of propagating the error up */
|
||||
Assert(size2 == size);
|
||||
|
@ -710,7 +588,7 @@ static int is_missing(grib_accessor* a)
|
|||
size = count;
|
||||
if (size > 1) {
|
||||
values = (char**)grib_context_malloc_clear(a->context, size * sizeof(char*));
|
||||
err = grib_unpack_string_array(a, values, &size);
|
||||
err = a->unpack_string_array(values, &size);
|
||||
if (err) return 0; /* TODO: no way of propagating the error up */
|
||||
for (i = 0; i < size; i++) {
|
||||
if (!grib_is_missing_string(a, (unsigned char*)values[i], size)) {
|
||||
|
@ -718,12 +596,14 @@ static int is_missing(grib_accessor* a)
|
|||
break;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < size; i++) grib_context_free(c, values[i]);
|
||||
for (i = 0; i < size; i++)
|
||||
grib_context_free(c, values[i]);
|
||||
grib_context_free(c, values);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
char value[MAX_STRING_SIZE] = {0,}; /* See ECC-710 */
|
||||
size = MAX_STRING_SIZE;
|
||||
err = grib_unpack_string(a, value, &size);
|
||||
err = a->unpack_string(value, &size);
|
||||
if (err) return 0; /* TODO: no way of propagating the error up */
|
||||
result = grib_is_missing_string(a, (unsigned char*)value, size);
|
||||
}
|
||||
|
@ -734,11 +614,11 @@ static int is_missing(grib_accessor* a)
|
|||
return result;
|
||||
}
|
||||
|
||||
static int pack_missing(grib_accessor* a)
|
||||
int grib_accessor_class_bufr_data_element_t::pack_missing(grib_accessor* a)
|
||||
{
|
||||
int ktype = GRIB_TYPE_UNDEFINED;
|
||||
int err = 0;
|
||||
size_t size = 1;
|
||||
int ktype = GRIB_TYPE_UNDEFINED;
|
||||
int err = 0;
|
||||
size_t size = 1;
|
||||
const int can_be_missing = (a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING);
|
||||
if (!can_be_missing)
|
||||
return GRIB_VALUE_CANNOT_BE_MISSING;
|
||||
|
@ -746,11 +626,11 @@ static int pack_missing(grib_accessor* a)
|
|||
ktype = get_native_type(a);
|
||||
if (ktype == GRIB_TYPE_LONG) {
|
||||
long missing = GRIB_MISSING_LONG;
|
||||
err = pack_long(a, &missing, &size);
|
||||
err = pack_long(a, &missing, &size);
|
||||
}
|
||||
else if (ktype == GRIB_TYPE_DOUBLE) {
|
||||
double missing = GRIB_MISSING_DOUBLE;
|
||||
err = pack_double(a, &missing, &size);
|
||||
err = pack_double(a, &missing, &size);
|
||||
}
|
||||
else if (ktype == GRIB_TYPE_STRING) {
|
||||
err = pack_string(a, "", &size);
|
|
@ -0,0 +1,54 @@
|
|||
|
||||
/*
|
||||
* (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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "grib_accessor_class_gen.h"
|
||||
|
||||
class grib_accessor_bufr_data_element_t : public grib_accessor_gen_t
|
||||
{
|
||||
public:
|
||||
/* Members defined in bufr_data_element */
|
||||
long index;
|
||||
int type;
|
||||
long compressedData;
|
||||
long subsetNumber;
|
||||
long numberOfSubsets;
|
||||
bufr_descriptors_array* descriptors;
|
||||
grib_vdarray* numericValues;
|
||||
grib_vsarray* stringValues;
|
||||
grib_viarray* elementsDescriptorsIndex;
|
||||
char* cname;
|
||||
};
|
||||
|
||||
class grib_accessor_class_bufr_data_element_t : public grib_accessor_class_gen_t
|
||||
{
|
||||
public:
|
||||
grib_accessor_class_bufr_data_element_t(const char* name) : grib_accessor_class_gen_t(name) {}
|
||||
grib_accessor* create_empty_accessor() override { return new grib_accessor_bufr_data_element_t{}; }
|
||||
int get_native_type(grib_accessor*) override;
|
||||
int pack_missing(grib_accessor*) override;
|
||||
int is_missing(grib_accessor*) override;
|
||||
int pack_double(grib_accessor*, const double* val, size_t* len) override;
|
||||
int pack_long(grib_accessor*, const long* val, size_t* len) override;
|
||||
int pack_string(grib_accessor*, const char*, size_t* len) override;
|
||||
int pack_string_array(grib_accessor*, const char**, size_t* len) override;
|
||||
int unpack_double(grib_accessor*, double* val, size_t* len) override;
|
||||
int unpack_long(grib_accessor*, long* val, size_t* len) override;
|
||||
int unpack_string(grib_accessor*, char*, size_t* len) override;
|
||||
int unpack_string_array(grib_accessor*, char**, size_t* len) override;
|
||||
int value_count(grib_accessor*, long*) override;
|
||||
void destroy(grib_context*, grib_accessor*) override;
|
||||
void dump(grib_accessor*, grib_dumper*) override;
|
||||
void init(grib_accessor*, const long, grib_arguments*) override;
|
||||
int unpack_double_element(grib_accessor*, size_t i, double* val) override;
|
||||
grib_accessor* make_clone(grib_accessor*, grib_section*, int*) override;
|
||||
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue