1#![cfg_attr(feature = "nightly", coverage(off))]
2
3use alloc::string::String;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
7pub struct TableCategory {
8 pub parameter: String,
10 pub units: String,
12 pub abbrev: String,
14}
15impl core::fmt::Display for TableCategory {
16 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17 write!(f, "{} ({}, {})", self.parameter, self.units, self.abbrev)
18 }
19}
20
21#[repr(u16)]
52#[allow(missing_docs)]
53#[derive(Debug, Clone, Copy, PartialEq, Eq)]
54pub enum Grib2Table4_0 {
55 AnalysisOrForecastAtHorizontalLevelOrLayerPointInTime = 0,
56 IndividualEnsembleForecastAtHorizontalLevelOrLayerPointInTime = 1,
57 DerivedForecastsBasedOnAllEnsembleMembersAtHorizontalLevelOrLayerPointInTime = 2,
58 DerivedForecastsBasedOnClusterRectangularAreaAtHorizontalLevelOrLayerPointInTime = 3,
59 DerivedForecastsBasedOnClusterCircularAreaAtHorizontalLevelOrLayerPointInTime = 4,
60 ProbabilityForecastsAtHorizontalLevelOrLayerPointInTime = 5,
61 PercentileForecastsAtHorizontalLevelOrLayerPointInTime = 6,
62 AnalysisOrForecastErrorAtHorizontalLevelOrLayerPointInTime = 7,
63 AverageAccumulationExtremeValuesStatisticallyProcessedContinuousNonContinuousTimeInterval = 8,
64 ProbabilityForecastsAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval = 9,
65 PercentileForecastsAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval = 10,
66 IndividualEnsembleForecastContinuousNonContinuousTimeInterval = 11,
67 DerivedForecastsAllEnsembleMembersContinuousNonContinuousTimeInterval = 12,
68 DerivedForecastsClusterRectangularAreaContinuousNonContinuousTimeInterval = 13,
69 DerivedForecastsClusterCircularAreaContinuousNonContinuousTimeInterval = 14,
70 AverageAccumulationExtremeValuesStatisticallyProcessedSpatialAreaPointInTime = 15,
71 AnalysisOrForecastSimulatedSatelliteData = 32,
72 IndividualEnsembleForecastSimulatedSatelliteData = 33,
73 IndividualEnsembleForecastContinuousNonContinuousIntervalSimulatedSatelliteData = 34,
74 SatelliteProductWithOrWithoutQualityValues = 35,
75 AnalysisOrForecastAtmosphericChemicalConstituents = 40,
76 IndividualEnsembleForecastAtmosphericChemicalConstituents = 41,
77 AverageAccumulationExtremeValuesStatisticallyProcessedAtmosphericChemicalConstituents = 42,
78 IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAtmosphericChemicalConstituents =
79 43,
80 AnalysisOrForecastAerosol = 44,
81 IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosol = 45,
82 AverageAccumulationExtremeValuesStatisticallyProcessedAerosol = 46,
83 IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosol2 = 47, AnalysisOrForecastOpticalPropertiesAerosol = 48,
85 IndividualEnsembleForecastOpticalPropertiesAerosol = 49,
86 CategoricalForecastAtHorizontalLevelOrLayerPointInTime = 51,
87 PartitionedParametersAtHorizontalLevelOrLayerPointInTime = 53,
88 IndividualEnsembleForecastPartitionedParameters = 54,
89 SpatioTemporalChangingTilesAtHorizontalLevelOrLayerPointInTime = 55,
90 IndividualEnsembleForecastSpatioTemporalChangingTileParametersDeprecated = 56,
91 AnalysisOrForecastAtmosphericChemicalConstituentsDistributionFunction = 57,
92 IndividualEnsembleForecastAtmosphericChemicalConstituentsDistributionFunction = 58,
93 IndividualEnsembleForecastSpatioTemporalChangingTileParametersCorrected = 59,
94 IndividualEnsembleReforecastPointInTime = 60,
95 IndividualEnsembleReforecastContinuousNonContinuousTimeInterval = 61,
96 AverageAccumulationExtremeValuesStatisticallyProcessedSpatioTemporalChangingTiles = 62,
97 IndividualEnsembleForecastSpatioTemporalChangingTiles = 63,
98 AverageAccumulationExtremeValuesStatisticallyProcessedAtmosphericChemicalConstituentsDistributionFunction =
99 67,
100 IndividualEnsembleForecastAtmosphericChemicalConstituentsDistributionFunction2 = 68, PostProcessingAnalysisOrForecastPointInTime = 70,
102 PostProcessingIndividualEnsembleForecastPointInTime = 71,
103 PostProcessingAverageAccumulationExtremeValuesStatisticallyProcessed = 72,
104 PostProcessingIndividualEnsembleForecastContinuousNonContinuousTimeInterval = 73,
105 AnalysisOrForecastAtmosphericChemicalConstituentsSourceSink = 76,
106 IndividualEnsembleForecastAtmosphericChemicalConstituentsSourceSink = 77,
107 AverageAccumulationExtremeValuesStatisticallyProcessedAtmosphericChemicalConstituentsSourceSink =
108 78,
109 IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAtmosphericChemicalConstituentsSourceSink =
110 79,
111 AnalysisOrForecastOpticalPropertiesAerosolSourceSink = 80,
112 IndividualEnsembleForecastOpticalPropertiesAerosolSourceSink = 81,
113 AverageAccumulationExtremeValuesStatisticallyProcessedAerosolSourceSink = 82,
114 IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosolSourceSink = 83,
115 IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosol3 = 84, IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosolSourceSink2 = 85, QuantileForecastsAtHorizontalLevelOrLayerPointInTime = 86,
118 QuantileForecastsAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval = 87,
119 AnalysisOrForecastAtHorizontalLevelOrLayerSpecifiedLocalTime = 88,
120 PostProcessedQuantileForecastsPointInTime = 89,
121 PostProcessedQuantileForecastsContinuousNonContinuousTimeInterval = 90,
122 CategoricalForecastAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval = 91,
123 IndividualEnsembleForecastSpecifiedLocalTime = 92,
124 PostProcessingAnalysisOrForecastSpecifiedLocalTime = 93,
125 PostProcessingIndividualEnsembleForecastSpecifiedLocalTime = 94,
126 AverageAccumulationExtremeValuesStatisticallyProcessedSpecifiedLocalTime = 95,
127 AverageAccumulationExtremeValuesStatisticallyProcessedIndividualEnsembleForecastSpecifiedLocalTime =
128 96,
129 AverageAccumulationExtremeValuesStatisticallyProcessedPostProcessingAnalysisOrForecastSpecifiedLocalTime =
130 97,
131 AverageAccumulationExtremeValuesStatisticallyProcessedPostProcessingIndividualEnsembleForecastSpecifiedLocalTime =
132 98,
133 AnalysisOrForecastWave2DSpectraExplicitList = 99,
134 IndividualEnsembleForecastWave2DSpectraExplicitList = 100,
135 AnalysisOrForecastWave2DSpectraFormulae = 101,
136 IndividualEnsembleForecastWave2DSpectraFormulae = 102,
137 AnalysisOrForecastWavesSelectedByPeriodRange = 103,
138 IndividualEnsembleForecastWavesSelectedByPeriodRange = 104,
139 AnomaliesSignificanceDerivedProductsAnalysisForecastReferencePeriod = 105,
140 AnomaliesSignificanceDerivedProductsIndividualEnsembleForecastReferencePeriod = 106,
141 AnomaliesSignificanceDerivedProductsDerivedForecastsAllEnsembleMembersReferencePeriod = 107,
142 AnalysisOrForecastGenericOpticalProducts = 108,
143 IndividualEnsembleForecastGenericOpticalProducts = 109,
144 AverageAccumulationExtremeValuesStatisticallyProcessedGenericOpticalProducts = 110,
145 IndividualEnsembleForecastContinuousNonContinuousIntervalGenericOpticalProducts = 111,
146 AnomaliesSignificanceDerivedProductsProbabilityForecastsReferencePeriod = 112,
147 GeneralizedTilesAtHorizontalLevelOrLayerPointInTime = 113,
148 AverageAccumulationExtremeValuesStatisticallyProcessedGeneralizedTiles = 114,
149 IndividualEnsembleForecastGeneralizedTiles = 115,
150 IndividualEnsembleForecastGeneralizedTilesContinuousNonContinuousTimeInterval = 116,
151 IndividualLargeEnsembleForecastPointInTime = 117,
152 IndividualLargeEnsembleForecastContinuousNonContinuousInterval = 118,
153 ProbabilityForecastsFromLargeEnsemblesPointInTime = 119,
154 ProbabilityForecastsFromLargeEnsemblesContinuousNonContinuousTimeInterval = 120,
155 ProbabilityForecastsLargeEnsemblesSpatiotemporalProcessingFocalStatisticsPointInTime = 121,
156 ProbabilityForecastsLargeEnsemblesSpatiotemporalProcessingFocalStatisticsContinuousNonContinuousTimeInterval =
157 122,
158 ProbabilityForecastsLargeEnsemblesSpatiotemporalProcessingFocalStatisticsReferencePeriod = 123,
159 AnalysisOrForecastRadionuclides = 124,
160 IndividualEnsembleForecastRadionuclides = 125,
161 AverageAccumulationExtremeValuesStatisticallyProcessedRadionuclides = 126,
162 IndividualEnsembleForecastContinuousNonContinuousTimeIntervalRadionuclides = 127,
163 CcittIa5CharacterString = 254,
164 CrossSectionAnalysisAndForecastPointInTime = 1000,
165 CrossSectionAveragedStatisticallyProcessedAnalysisOrForecastTimeRange = 1001,
166 CrossSectionAnalysisAndForecastAveragedStatisticallyProcessedLatitudeLongitude = 1002,
167 HovmollerTypeGridNoAveragingStatisticalProcessing = 1100,
168 HovmollerTypeGridAveragingStatisticalProcessing = 1101,
169 Missing = 65535,
170}
171impl From<u16> for Grib2Table4_0 {
172 fn from(val: u16) -> Self {
173 match val {
174 0 => Self::AnalysisOrForecastAtHorizontalLevelOrLayerPointInTime,
175 1 => Self::IndividualEnsembleForecastAtHorizontalLevelOrLayerPointInTime,
176 2 => Self::DerivedForecastsBasedOnAllEnsembleMembersAtHorizontalLevelOrLayerPointInTime,
177 3 => Self::DerivedForecastsBasedOnClusterRectangularAreaAtHorizontalLevelOrLayerPointInTime,
178 4 => Self::DerivedForecastsBasedOnClusterCircularAreaAtHorizontalLevelOrLayerPointInTime,
179 5 => Self::ProbabilityForecastsAtHorizontalLevelOrLayerPointInTime,
180 6 => Self::PercentileForecastsAtHorizontalLevelOrLayerPointInTime,
181 7 => Self::AnalysisOrForecastErrorAtHorizontalLevelOrLayerPointInTime,
182 8 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedContinuousNonContinuousTimeInterval,
183 9 => Self::ProbabilityForecastsAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval,
184 10 => Self::PercentileForecastsAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval,
185 11 => Self::IndividualEnsembleForecastContinuousNonContinuousTimeInterval,
186 12 => Self::DerivedForecastsAllEnsembleMembersContinuousNonContinuousTimeInterval,
187 13 => Self::DerivedForecastsClusterRectangularAreaContinuousNonContinuousTimeInterval,
188 14 => Self::DerivedForecastsClusterCircularAreaContinuousNonContinuousTimeInterval,
189 15 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedSpatialAreaPointInTime,
190 32 => Self::AnalysisOrForecastSimulatedSatelliteData,
191 33 => Self::IndividualEnsembleForecastSimulatedSatelliteData,
192 34 => Self::IndividualEnsembleForecastContinuousNonContinuousIntervalSimulatedSatelliteData,
193 35 => Self::SatelliteProductWithOrWithoutQualityValues,
194 40 => Self::AnalysisOrForecastAtmosphericChemicalConstituents,
195 41 => Self::IndividualEnsembleForecastAtmosphericChemicalConstituents,
196 42 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedAtmosphericChemicalConstituents,
197 43 => Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAtmosphericChemicalConstituents,
198 44 => Self::AnalysisOrForecastAerosol,
199 45 => Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosol,
200 46 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedAerosol,
201 47 => Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosol2,
202 48 => Self::AnalysisOrForecastOpticalPropertiesAerosol,
203 49 => Self::IndividualEnsembleForecastOpticalPropertiesAerosol,
204 51 => Self::CategoricalForecastAtHorizontalLevelOrLayerPointInTime,
205 53 => Self::PartitionedParametersAtHorizontalLevelOrLayerPointInTime,
206 54 => Self::IndividualEnsembleForecastPartitionedParameters,
207 55 => Self::SpatioTemporalChangingTilesAtHorizontalLevelOrLayerPointInTime,
208 56 => Self::IndividualEnsembleForecastSpatioTemporalChangingTileParametersDeprecated,
209 57 => Self::AnalysisOrForecastAtmosphericChemicalConstituentsDistributionFunction,
210 58 => Self::IndividualEnsembleForecastAtmosphericChemicalConstituentsDistributionFunction,
211 59 => Self::IndividualEnsembleForecastSpatioTemporalChangingTileParametersCorrected,
212 60 => Self::IndividualEnsembleReforecastPointInTime,
213 61 => Self::IndividualEnsembleReforecastContinuousNonContinuousTimeInterval,
214 62 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedSpatioTemporalChangingTiles,
215 63 => Self::IndividualEnsembleForecastSpatioTemporalChangingTiles,
216 67 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedAtmosphericChemicalConstituentsDistributionFunction,
217 68 => Self::IndividualEnsembleForecastAtmosphericChemicalConstituentsDistributionFunction2,
218 70 => Self::PostProcessingAnalysisOrForecastPointInTime,
219 71 => Self::PostProcessingIndividualEnsembleForecastPointInTime,
220 72 => Self::PostProcessingAverageAccumulationExtremeValuesStatisticallyProcessed,
221 73 => Self::PostProcessingIndividualEnsembleForecastContinuousNonContinuousTimeInterval,
222 76 => Self::AnalysisOrForecastAtmosphericChemicalConstituentsSourceSink,
223 77 => Self::IndividualEnsembleForecastAtmosphericChemicalConstituentsSourceSink,
224 78 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedAtmosphericChemicalConstituentsSourceSink,
225 79 => Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAtmosphericChemicalConstituentsSourceSink,
226 80 => Self::AnalysisOrForecastOpticalPropertiesAerosolSourceSink,
227 81 => Self::IndividualEnsembleForecastOpticalPropertiesAerosolSourceSink,
228 82 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedAerosolSourceSink,
229 83 => Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosolSourceSink,
230 84 => Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosol3,
231 85 => Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosolSourceSink2,
232 86 => Self::QuantileForecastsAtHorizontalLevelOrLayerPointInTime,
233 87 => Self::QuantileForecastsAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval,
234 88 => Self::AnalysisOrForecastAtHorizontalLevelOrLayerSpecifiedLocalTime,
235 89 => Self::PostProcessedQuantileForecastsPointInTime,
236 90 => Self::PostProcessedQuantileForecastsContinuousNonContinuousTimeInterval,
237 91 => Self::CategoricalForecastAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval,
238 92 => Self::IndividualEnsembleForecastSpecifiedLocalTime,
239 93 => Self::PostProcessingAnalysisOrForecastSpecifiedLocalTime,
240 94 => Self::PostProcessingIndividualEnsembleForecastSpecifiedLocalTime,
241 95 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedSpecifiedLocalTime,
242 96 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedIndividualEnsembleForecastSpecifiedLocalTime,
243 97 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedPostProcessingAnalysisOrForecastSpecifiedLocalTime,
244 98 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedPostProcessingIndividualEnsembleForecastSpecifiedLocalTime,
245 99 => Self::AnalysisOrForecastWave2DSpectraExplicitList,
246 100 => Self::IndividualEnsembleForecastWave2DSpectraExplicitList,
247 101 => Self::AnalysisOrForecastWave2DSpectraFormulae,
248 102 => Self::IndividualEnsembleForecastWave2DSpectraFormulae,
249 103 => Self::AnalysisOrForecastWavesSelectedByPeriodRange,
250 104 => Self::IndividualEnsembleForecastWavesSelectedByPeriodRange,
251 105 => Self::AnomaliesSignificanceDerivedProductsAnalysisForecastReferencePeriod,
252 106 => Self::AnomaliesSignificanceDerivedProductsIndividualEnsembleForecastReferencePeriod,
253 107 => Self::AnomaliesSignificanceDerivedProductsDerivedForecastsAllEnsembleMembersReferencePeriod,
254 108 => Self::AnalysisOrForecastGenericOpticalProducts,
255 109 => Self::IndividualEnsembleForecastGenericOpticalProducts,
256 110 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedGenericOpticalProducts,
257 111 => Self::IndividualEnsembleForecastContinuousNonContinuousIntervalGenericOpticalProducts,
258 112 => Self::AnomaliesSignificanceDerivedProductsProbabilityForecastsReferencePeriod,
259 113 => Self::GeneralizedTilesAtHorizontalLevelOrLayerPointInTime,
260 114 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedGeneralizedTiles,
261 115 => Self::IndividualEnsembleForecastGeneralizedTiles,
262 116 => Self::IndividualEnsembleForecastGeneralizedTilesContinuousNonContinuousTimeInterval,
263 117 => Self::IndividualLargeEnsembleForecastPointInTime,
264 118 => Self::IndividualLargeEnsembleForecastContinuousNonContinuousInterval,
265 119 => Self::ProbabilityForecastsFromLargeEnsemblesPointInTime,
266 120 => Self::ProbabilityForecastsFromLargeEnsemblesContinuousNonContinuousTimeInterval,
267 121 => Self::ProbabilityForecastsLargeEnsemblesSpatiotemporalProcessingFocalStatisticsPointInTime,
268 122 => Self::ProbabilityForecastsLargeEnsemblesSpatiotemporalProcessingFocalStatisticsContinuousNonContinuousTimeInterval,
269 123 => Self::ProbabilityForecastsLargeEnsemblesSpatiotemporalProcessingFocalStatisticsReferencePeriod,
270 124 => Self::AnalysisOrForecastRadionuclides,
271 125 => Self::IndividualEnsembleForecastRadionuclides,
272 126 => Self::AverageAccumulationExtremeValuesStatisticallyProcessedRadionuclides,
273 127 => Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalRadionuclides,
274 254 => Self::CcittIa5CharacterString,
275 1000 => Self::CrossSectionAnalysisAndForecastPointInTime,
276 1001 => Self::CrossSectionAveragedStatisticallyProcessedAnalysisOrForecastTimeRange,
277 1002 => Self::CrossSectionAnalysisAndForecastAveragedStatisticallyProcessedLatitudeLongitude,
278 1100 => Self::HovmollerTypeGridNoAveragingStatisticalProcessing,
279 1101 => Self::HovmollerTypeGridAveragingStatisticalProcessing,
280 _ => Self::Missing,
281 }
282 }
283}
284impl core::fmt::Display for Grib2Table4_0 {
285 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
286 let desc = match self {
287 Self::AnalysisOrForecastAtHorizontalLevelOrLayerPointInTime => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time.",
288 Self::IndividualEnsembleForecastAtHorizontalLevelOrLayerPointInTime => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time.",
289 Self::DerivedForecastsBasedOnAllEnsembleMembersAtHorizontalLevelOrLayerPointInTime => "Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer at a point in time.",
290 Self::DerivedForecastsBasedOnClusterRectangularAreaAtHorizontalLevelOrLayerPointInTime => "Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time.",
291 Self::DerivedForecastsBasedOnClusterCircularAreaAtHorizontalLevelOrLayerPointInTime => "Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time.",
292 Self::ProbabilityForecastsAtHorizontalLevelOrLayerPointInTime => "Probability forecasts at a horizontal level or in a horizontal layer at a point in time.",
293 Self::PercentileForecastsAtHorizontalLevelOrLayerPointInTime => "Percentile forecasts at a horizontal level or in a horizontal layer at a point in time.",
294 Self::AnalysisOrForecastErrorAtHorizontalLevelOrLayerPointInTime => "Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time.",
295 Self::AverageAccumulationExtremeValuesStatisticallyProcessedContinuousNonContinuousTimeInterval => "Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
296 Self::ProbabilityForecastsAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval => "Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
297 Self::PercentileForecastsAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval => "Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
298 Self::IndividualEnsembleForecastContinuousNonContinuousTimeInterval => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval.",
299 Self::DerivedForecastsAllEnsembleMembersContinuousNonContinuousTimeInterval => "Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval.",
300 Self::DerivedForecastsClusterRectangularAreaContinuousNonContinuousTimeInterval => "Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval.",
301 Self::DerivedForecastsClusterCircularAreaContinuousNonContinuousTimeInterval => "Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval.",
302 Self::AverageAccumulationExtremeValuesStatisticallyProcessedSpatialAreaPointInTime => "Average, accumulation, extreme values or other statistically-processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time.",
303 Self::AnalysisOrForecastSimulatedSatelliteData => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulate (synthetic) satellite data.",
304 Self::IndividualEnsembleForecastSimulatedSatelliteData => "Individual Ensemble Forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data.",
305 Self::IndividualEnsembleForecastContinuousNonContinuousIntervalSimulatedSatelliteData => "Individual Ensemble Forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data.",
306 Self::SatelliteProductWithOrWithoutQualityValues => "Satellite product with or without associated quality values.",
307 Self::AnalysisOrForecastAtmosphericChemicalConstituents => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents.",
308 Self::IndividualEnsembleForecastAtmosphericChemicalConstituents => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents.",
309 Self::AverageAccumulationExtremeValuesStatisticallyProcessedAtmosphericChemicalConstituents => "Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents.",
310 Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAtmosphericChemicalConstituents => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval for atmospheric chemical constituents.",
311 Self::AnalysisOrForecastAerosol => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol.",
312 Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosol => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval for aerosol.",
313 Self::AverageAccumulationExtremeValuesStatisticallyProcessedAerosol => "Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol.",
314 Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosol2 => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval for aerosol.",
315 Self::AnalysisOrForecastOpticalPropertiesAerosol => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol.",
316 Self::IndividualEnsembleForecastOpticalPropertiesAerosol => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol.",
317 Self::CategoricalForecastAtHorizontalLevelOrLayerPointInTime => "Categorical forecast at a horizontal level or in a horizontal layer at a point in time.",
318 Self::PartitionedParametersAtHorizontalLevelOrLayerPointInTime => "Partitioned parameters at a horizontal level or horizontal layer at a point in time.",
319 Self::IndividualEnsembleForecastPartitionedParameters => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters.",
320 Self::SpatioTemporalChangingTilesAtHorizontalLevelOrLayerPointInTime => "Spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time.",
321 Self::IndividualEnsembleForecastSpatioTemporalChangingTileParametersDeprecated => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (DEPRECATED).",
322 Self::AnalysisOrForecastAtmosphericChemicalConstituentsDistributionFunction => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function.",
323 Self::IndividualEnsembleForecastAtmosphericChemicalConstituentsDistributionFunction => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time interval for atmospheric chemical constituents based on a distribution function.",
324 Self::IndividualEnsembleForecastSpatioTemporalChangingTileParametersCorrected => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (corrected version of template 4.56).",
325 Self::IndividualEnsembleReforecastPointInTime => "Individual Ensemble Reforecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time.",
326 Self::IndividualEnsembleReforecastContinuousNonContinuousTimeInterval => "Individual Ensemble Reforecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval.",
327 Self::AverageAccumulationExtremeValuesStatisticallyProcessedSpatioTemporalChangingTiles => "Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time.",
328 Self::IndividualEnsembleForecastSpatioTemporalChangingTiles => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles.",
329 Self::AverageAccumulationExtremeValuesStatisticallyProcessedAtmosphericChemicalConstituentsDistributionFunction => "Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function.",
330 Self::IndividualEnsembleForecastAtmosphericChemicalConstituentsDistributionFunction2 => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function.",
331 Self::PostProcessingAnalysisOrForecastPointInTime => "Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a point in time.",
332 Self::PostProcessingIndividualEnsembleForecastPointInTime => "Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time.",
333 Self::PostProcessingAverageAccumulationExtremeValuesStatisticallyProcessed => "Post-processing average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
334 Self::PostProcessingIndividualEnsembleForecastContinuousNonContinuousTimeInterval => "Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval.",
335 Self::AnalysisOrForecastAtmosphericChemicalConstituentsSourceSink => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink.",
336 Self::IndividualEnsembleForecastAtmosphericChemicalConstituentsSourceSink => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink.",
337 Self::AverageAccumulationExtremeValuesStatisticallyProcessedAtmosphericChemicalConstituentsSourceSink => "Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents with source or sink.",
338 Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAtmosphericChemicalConstituentsSourceSink => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents with source or sink.",
339 Self::AnalysisOrForecastOpticalPropertiesAerosolSourceSink => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source or sink.",
340 Self::IndividualEnsembleForecastOpticalPropertiesAerosolSourceSink => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source or sink.",
341 Self::AverageAccumulationExtremeValuesStatisticallyProcessedAerosolSourceSink => "Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink.",
342 Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosolSourceSink => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink.",
343 Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosol3 => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol.",
344 Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalAerosolSourceSink2 => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink.",
345 Self::QuantileForecastsAtHorizontalLevelOrLayerPointInTime => "Quantile forecasts at a horizontal level or in a horizontal layer at a point in time.",
346 Self::QuantileForecastsAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval => "Quantile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
347 Self::AnalysisOrForecastAtHorizontalLevelOrLayerSpecifiedLocalTime => "Analysis or forecast at a horizontal level or in a horizontal layer at a specified local time.",
348 Self::PostProcessedQuantileForecastsPointInTime => "Post-processed quantile forecasts at a horizontal level or in a horizontal layer at a point in time.",
349 Self::PostProcessedQuantileForecastsContinuousNonContinuousTimeInterval => "Post-processed quantile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
350 Self::CategoricalForecastAtHorizontalLevelOrLayerContinuousNonContinuousTimeInterval => "Categorical forecast at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
351 Self::IndividualEnsembleForecastSpecifiedLocalTime => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time.",
352 Self::PostProcessingAnalysisOrForecastSpecifiedLocalTime => "Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time.",
353 Self::PostProcessingIndividualEnsembleForecastSpecifiedLocalTime => "Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time.",
354 Self::AverageAccumulationExtremeValuesStatisticallyProcessedSpecifiedLocalTime => "Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer at a specified local time.",
355 Self::AverageAccumulationExtremeValuesStatisticallyProcessedIndividualEnsembleForecastSpecifiedLocalTime => "Average, accumulation, extreme values or other statistically processed values of an individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time.",
356 Self::AverageAccumulationExtremeValuesStatisticallyProcessedPostProcessingAnalysisOrForecastSpecifiedLocalTime => "Average, accumulation, extreme values or other statistically processed values of post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time.",
357 Self::AverageAccumulationExtremeValuesStatisticallyProcessedPostProcessingIndividualEnsembleForecastSpecifiedLocalTime => "Average, accumulation, extreme values or other statistically processed values of a post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time.",
358 Self::AnalysisOrForecastWave2DSpectraExplicitList => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions.",
359 Self::IndividualEnsembleForecastWave2DSpectraExplicitList => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions.",
360 Self::AnalysisOrForecastWave2DSpectraFormulae => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae.",
361 Self::IndividualEnsembleForecastWave2DSpectraFormulae => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae.",
362 Self::AnalysisOrForecastWavesSelectedByPeriodRange => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for waves selected by period range.",
363 Self::IndividualEnsembleForecastWavesSelectedByPeriodRange => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for waves selected by period range.",
364 Self::AnomaliesSignificanceDerivedProductsAnalysisForecastReferencePeriod => "Anomalies, significance and other derived products from an analysis or forecast in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
365 Self::AnomaliesSignificanceDerivedProductsIndividualEnsembleForecastReferencePeriod => "Anomalies, significance and other derived products from an individual ensemble forecast, control and perturbed in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
366 Self::AnomaliesSignificanceDerivedProductsDerivedForecastsAllEnsembleMembersReferencePeriod => "Anomalies, significance and other derived products from derived forecasts based on all ensemble members in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
367 Self::AnalysisOrForecastGenericOpticalProducts => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for generic optical products.",
368 Self::IndividualEnsembleForecastGenericOpticalProducts => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for generic optical products.",
369 Self::AverageAccumulationExtremeValuesStatisticallyProcessedGenericOpticalProducts => "Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for generic optical products.",
370 Self::IndividualEnsembleForecastContinuousNonContinuousIntervalGenericOpticalProducts => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for generic optical products.",
371 Self::AnomaliesSignificanceDerivedProductsProbabilityForecastsReferencePeriod => "Anomalies, significance and other derived products as probability forecasts in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
372 Self::GeneralizedTilesAtHorizontalLevelOrLayerPointInTime => "Generalized tiles at a horizontal level or horizontal layer at a point in time.",
373 Self::AverageAccumulationExtremeValuesStatisticallyProcessedGeneralizedTiles => "Average, accumulation, and/or extreme values or other statistically processed values on generalized tiles at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
374 Self::IndividualEnsembleForecastGeneralizedTiles => "Individual ensemble forecast, control and perturbed on generalized tiles at a horizontal level or in a horizontal layer at a point in time.",
375 Self::IndividualEnsembleForecastGeneralizedTilesContinuousNonContinuousTimeInterval => "Individual ensemble forecast, control and perturbed on generalized tiles at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
376 Self::IndividualLargeEnsembleForecastPointInTime => "Individual large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time.",
377 Self::IndividualLargeEnsembleForecastContinuousNonContinuousInterval => "Individual large ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval.",
378 Self::ProbabilityForecastsFromLargeEnsemblesPointInTime => "Probability forecasts from large ensembles at a horizontal level or in a horizontal layer at a point in time.",
379 Self::ProbabilityForecastsFromLargeEnsemblesContinuousNonContinuousTimeInterval => "Probability forecasts from large ensembles at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
380 Self::ProbabilityForecastsLargeEnsemblesSpatiotemporalProcessingFocalStatisticsPointInTime => "Probability forecasts from large ensembles with spatiotemporal processing based on focal (moving window) statistics at a horizontal level or in a horizontal layer at a point in time.",
381 Self::ProbabilityForecastsLargeEnsemblesSpatiotemporalProcessingFocalStatisticsContinuousNonContinuousTimeInterval => "Probability forecasts from large ensembles with spatiotemporal processing based on focal (moving window) statistics at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
382 Self::ProbabilityForecastsLargeEnsemblesSpatiotemporalProcessingFocalStatisticsReferencePeriod => "Probability forecasts from large ensembles with spatiotemporal processing based on focal (moving window) statistics in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval.",
383 Self::AnalysisOrForecastRadionuclides => "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for radionuclides.",
384 Self::IndividualEnsembleForecastRadionuclides => "Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for radionuclides.",
385 Self::AverageAccumulationExtremeValuesStatisticallyProcessedRadionuclides => "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.",
386 Self::IndividualEnsembleForecastContinuousNonContinuousTimeIntervalRadionuclides => "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.",
387 Self::CcittIa5CharacterString => "CCITT IA5 character string.",
388 Self::CrossSectionAnalysisAndForecastPointInTime => "Cross-section of analysis and forecast at a point in time.",
389 Self::CrossSectionAveragedStatisticallyProcessedAnalysisOrForecastTimeRange => "Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time.",
390 Self::CrossSectionAnalysisAndForecastAveragedStatisticallyProcessedLatitudeLongitude => "Cross-section of analysis and forecast, averaged or otherwise statistically-processed over latitude or longitude.",
391 Self::HovmollerTypeGridNoAveragingStatisticalProcessing => "Hovmoller-type grid with no averaging or other statistical processing.",
392 Self::HovmollerTypeGridAveragingStatisticalProcessing => "Hovmoller-type grid with averaging or other statistical processing.",
393 Self::Missing => "Missing",
394 };
395 f.write_str(desc)
396 }
397}
398
399pub fn grib2_lookup_table4_1(discipline: u8, category: u8) -> String {
423 match discipline {
424 0 => match category {
426 0 => String::from("Temperature (see Table 4.2-0-0)"),
427 1 => String::from("Moisture (see Table 4.2-0-1)"),
428 2 => String::from("Momentum (see Table 4.2-0-2)"),
429 3 => String::from("Mass (see Table 4.2-0-3)"),
430 4 => String::from("Short-wave radiation (see Table 4.2-0-4)"),
431 5 => String::from("Long-wave radiation (see Table 4.2-0-5)"),
432 6 => String::from("Cloud (see Table 4.2-0-6)"),
433 7 => String::from("Thermodynamic Stability indices (see Table 4.2-0-7)"),
434 8 => String::from("Kinematic Stability indices"),
435 9 => String::from("Temperature Probabilities*"),
436 10 => String::from("Moisture Probabilities*"),
437 11 => String::from("Momentum Probabilities*"),
438 12 => String::from("Mass Probabilities*"),
439 13 => String::from("Aerosols (see Table 4.2-0-13)"),
440 14 => String::from("Trace gases (e.g. Ozone, CO2) (see Table 4.2-0-14)"),
441 15 => String::from("Radar (see Table 4.2-0-15)"),
442 16 => String::from("Forecast Radar Imagery (see Table 4.2-0-16)"),
443 17 => String::from("Electrodynamics (see Table 4.2-0-17)"),
444 18 => String::from("Nuclear/radiology (see Table 4.2-0-18)"),
445 19 => String::from("Physical atmospheric properties (see Table 4.2-0-19)"),
446 20 => String::from("Atmospheric chemical Constituents (see Table 4.2-0-20)"),
447 21 => String::from("Thermodynamic Properties (see Table 4.2-0-21)"),
448 22 => String::from("Drought Indices (see Table 4.2-0-22)"),
449 190 => String::from("CCITT IA5 string (see Table 4.2-0-190)"),
451 191 => String::from("Miscellaneous (see Table 4.2-0-191)"),
452 192 => String::from("Covariance (see Table 4.2-0-192)"),
454 255 => String::from("Missing"),
455 23..=189 => String::from("Reserved"),
456 193..=254 => String::from("Reserved for Local Use"),
457 },
458 1 => match category {
460 0 => String::from("Hydrology basic products (see Table 4.2-1-0)"),
461 1 => String::from("Hydrology probabilities (see Table 4.2-1-1)"),
462 2 => String::from("Inland water and sediment properties (see Table 4.2-1-2)"),
463 255 => String::from("Missing"),
464 3..=191 => String::from("Reserved"),
465 192..=254 => String::from("Reserved for Local Use"),
466 },
467 2 => match category {
469 0 => String::from("Vegetation/Biomass (see Table 4.2-2-0)"),
470 1 => String::from("Agricultural/Aquacultural Special Products (see Table 4.2-2-1)"),
471 2 => String::from("Transportation-related Products"),
472 3 => String::from("Soil Products (see Table 4.2-2-3)"),
473 4 => String::from("Fire Weather Products (see Table 4.2-2-4)"),
474 5 => String::from("Land Surface Products (see Table 4.2-2-5)"),
475 6 => String::from("Urban areas (see Table 4.2-2-6)"),
476 255 => String::from("Missing"),
477 7..=191 => String::from("Reserved"),
478 192..=254 => String::from("Reserved for Local Use"),
479 },
480 3 => match category {
482 0 => String::from("Image format products (See note 1) (see Table 4.2-3-0)"),
483 1 => String::from("Quantitative products (See note 2) (see Table 4.2-3-1)"),
484 2 => String::from("Cloud Properties (see Table 4.2-3-2)"),
485 3 => String::from("Flight Rules Conditions (see Table 4.2-3-3)"),
486 4 => String::from("Volcanic Ash (see Table 4.2-3-4)"),
487 5 => String::from("Sea-surface Temperature (see Table 4.2-3-5)"),
488 6 => String::from("Solar Radiation (see Table 4.2-3-6)"),
489 192 => String::from("Forecast Satellite Imagery (See note 2) (see Table 4.2-3-192)"),
490 255 => String::from("Missing"),
491 7..=191 => String::from("Reserved"),
492 193..=254 => String::from("Reserved for Local Use"),
493 },
494 4 => match category {
496 0 => String::from("Temperature (see Table 4.2-4-0)"),
497 1 => String::from("Momentum (see Table 4.2-4-1)"),
498 2 => String::from("Charged Particle Mass and Number (see Table 4.2-4-2)"),
499 3 => String::from("Electric and Magnetic Fields (see Table 4.2-4-3)"),
500 4 => String::from("Energetic Particles (see Table 4.2-4-4)"),
501 5 => String::from("Waves (see Table 4.2-4-5)"),
502 6 => String::from("Solar Electromagnetic Emissions (see Table 4.2-4-6)"),
503 7 => String::from("Terrestrial Electromagnetic Emissions (see Table 4.2-4-7)"),
504 8 => String::from("Imagery (see Table 4.2-4-8)"),
505 9 => String::from("Ion-Neutral Coupling (see Table 4.2-4-9)"),
506 10 => String::from("Space Weather Indices (see Table 4.2-4-10)"),
507 255 => String::from("Missing"),
508 11..=191 => String::from("Reserved"),
509 192..=254 => String::from("Reserved for Local Use"),
510 },
511 10 => match category {
513 0 => String::from("Waves (see Table 4.2-10-0)"),
514 1 => String::from("Currents (see Table 4.2-10-1)"),
515 2 => String::from("Ice (see Table 4.2-10-2)"),
516 3 => String::from("Surface Properties (see Table 4.2-10-3)"),
517 4 => String::from("Sub-surface Properties (see Table 4.2-10-4)"),
518 191 => String::from("Miscellaneous (see Table 4.2-10-191)"),
519 255 => String::from("Missing"),
520 5..=190 => String::from("Reserved"),
521 192..=254 => String::from("Reserved for Local Use"),
522 },
523 20 => match category {
525 0 => String::from("Health Indicators (see Table 4.2-20-0)"),
526 1 => String::from("Epidemiology (see Table 4.2-20-1)"),
527 2 => String::from("Socioeconomic indicators (see Table 4.2-20-2)"),
528 3 => String::from("Renewable energy sector (see Table 4.2-20-3)"),
529 255 => String::from("Missing"),
530 4..=191 => String::from("Reserved"),
531 192..=254 => String::from("Reserved for Local Use"),
532 },
533 _ => String::from("Missing"), }
535}
536
537pub fn grib2_lookup_table42_00(category: u8) -> TableCategory {
577 match category {
578 0 => TableCategory {
579 parameter: String::from("Temperature"),
580 units: String::from("K"),
581 abbrev: String::from("TMP"),
582 },
583 1 => TableCategory {
584 parameter: String::from("Virtual Temperature"),
585 units: String::from("K"),
586 abbrev: String::from("VTMP"),
587 },
588 2 => TableCategory {
589 parameter: String::from("Potential Temperature"),
590 units: String::from("K"),
591 abbrev: String::from("POT"),
592 },
593 3 => TableCategory {
594 parameter: String::from(
595 "Pseudo-Adiabatic Potential Temperature (or Equivalent Potential Temperature)",
596 ),
597 units: String::from("K"),
598 abbrev: String::from("EPOT"),
599 },
600 4 => TableCategory {
601 parameter: String::from("Maximum Temperature"),
602 units: String::from("K"),
603 abbrev: String::from("TMAX"),
604 },
605 5 => TableCategory {
606 parameter: String::from("Minimum Temperature"),
607 units: String::from("K"),
608 abbrev: String::from("TMIN"),
609 },
610 6 => TableCategory {
611 parameter: String::from("Dew Point Temperature"),
612 units: String::from("K"),
613 abbrev: String::from("DPT"),
614 },
615 7 => TableCategory {
616 parameter: String::from("Dew Point Depression (or Deficit)"),
617 units: String::from("K"),
618 abbrev: String::from("DEPR"),
619 },
620 8 => TableCategory {
621 parameter: String::from("Lapse Rate"),
622 units: String::from("K m-1"),
623 abbrev: String::from("LAPR"),
624 },
625 9 => TableCategory {
626 parameter: String::from("Temperature Anomaly"),
627 units: String::from("K"),
628 abbrev: String::from("TMPA"),
629 },
630 10 => TableCategory {
631 parameter: String::from("Latent Heat Net Flux"),
632 units: String::from("W m-2"),
633 abbrev: String::from("LHTFL"),
634 },
635 11 => TableCategory {
636 parameter: String::from("Sensible Heat Net Flux"),
637 units: String::from("W m-2"),
638 abbrev: String::from("SHTFL"),
639 },
640 12 => TableCategory {
641 parameter: String::from("Heat Index"),
642 units: String::from("K"),
643 abbrev: String::from("HEATX"),
644 },
645 13 => TableCategory {
646 parameter: String::from("Wind Chill Factor"),
647 units: String::from("K"),
648 abbrev: String::from("WCF"),
649 },
650 14 => TableCategory {
651 parameter: String::from("Minimum Dew Point Depression"),
652 units: String::from("K"),
653 abbrev: String::from("MINDPD"),
654 },
655 15 => TableCategory {
656 parameter: String::from("Virtual Potential Temperature"),
657 units: String::from("K"),
658 abbrev: String::from("VPTMP"),
659 },
660 16 => TableCategory {
661 parameter: String::from("Snow Phase Change Heat Flux"),
662 units: String::from("W m-2"),
663 abbrev: String::from("SNOHF"),
664 },
665 17 => TableCategory {
666 parameter: String::from("Skin Temperature"),
667 units: String::from("K"),
668 abbrev: String::from("SKINT"),
669 },
670 18 => TableCategory {
671 parameter: String::from("Snow Temperature (top of snow)"),
672 units: String::from("K"),
673 abbrev: String::from("SNOT"),
674 },
675 19 => TableCategory {
676 parameter: String::from("Turbulent Transfer Coefficient for Heat"),
677 units: String::from("Numeric"),
678 abbrev: String::from("TTCHT"),
679 },
680 20 => TableCategory {
681 parameter: String::from("Turbulent Diffusion Coefficient for Heat"),
682 units: String::from("m2s-1"),
683 abbrev: String::from("TDCHT"),
684 },
685 21 => TableCategory {
686 parameter: String::from("Apparent Temperature"),
687 units: String::from("K"),
688 abbrev: String::from("APTMP"),
689 },
690 22 => TableCategory {
691 parameter: String::from("Temperature Tendency due to Short-Wave Radiation"),
692 units: String::from("K s-1"),
693 abbrev: String::from("TTSWR"),
694 },
695 23 => TableCategory {
696 parameter: String::from("Temperature Tendency due to Long-Wave Radiation"),
697 units: String::from("K s-1"),
698 abbrev: String::from("TTLWR"),
699 },
700 24 => TableCategory {
701 parameter: String::from("Temperature Tendency due to Short-Wave Radiation, Clear Sky"),
702 units: String::from("K s-1"),
703 abbrev: String::from("TTSWRCS"),
704 },
705 25 => TableCategory {
706 parameter: String::from("Temperature Tendency due to Long-Wave Radiation, Clear Sky"),
707 units: String::from("K s-1"),
708 abbrev: String::from("TTLWRCS"),
709 },
710 26 => TableCategory {
711 parameter: String::from("Temperature Tendency due to parameterizations"),
712 units: String::from("K s-1"),
713 abbrev: String::from("TTPARM"),
714 },
715 27 => TableCategory {
716 parameter: String::from("Wet Bulb Temperature"),
717 units: String::from("K"),
718 abbrev: String::from("WETBT"),
719 },
720 28 => TableCategory {
721 parameter: String::from("Unbalanced Component of Temperature"),
722 units: String::from("K"),
723 abbrev: String::from("UCTMP"),
724 },
725 29 => TableCategory {
726 parameter: String::from("Temperature Advection"),
727 units: String::from("K s-1"),
728 abbrev: String::from("TMPADV"),
729 },
730 30 => TableCategory {
731 parameter: String::from("Latent Heat Net Flux Due to Evaporation"),
732 units: String::from("W m-2"),
733 abbrev: String::from("LHFLXE"),
734 },
735 31 => TableCategory {
736 parameter: String::from("Latent Heat Net Flux Due to Sublimation"),
737 units: String::from("W m-2"),
738 abbrev: String::from("LHFLXS"),
739 },
740 32 => TableCategory {
741 parameter: String::from("Wet-Bulb Potential Temperature"),
742 units: String::from("K"),
743 abbrev: String::from("WETBPT"),
744 },
745 192 => TableCategory {
746 parameter: String::from("Snow Phase Change Heat Flux"),
747 units: String::from("W m-2"),
748 abbrev: String::from("SNOHF"),
749 },
750 193 => TableCategory {
751 parameter: String::from("Temperature Tendency by All Radiation"),
752 units: String::from("K s-1"),
753 abbrev: String::from("TTRAD"),
754 },
755 194 => TableCategory {
756 parameter: String::from("Relative Error Variance"),
757 units: String::from(""),
758 abbrev: String::from("REV"),
759 },
760 195 => TableCategory {
761 parameter: String::from("Large Scale Condensate Heating Rate"),
762 units: String::from("K s-1"),
763 abbrev: String::from("LRGHR"),
764 },
765 196 => TableCategory {
766 parameter: String::from("Deep Convective Heating Rate"),
767 units: String::from("K s-1"),
768 abbrev: String::from("CNVHR"),
769 },
770 197 => TableCategory {
771 parameter: String::from("Total Downward Heat Flux at Surface"),
772 units: String::from("W m-2"),
773 abbrev: String::from("THFLX"),
774 },
775 198 => TableCategory {
776 parameter: String::from("Temperature Tendency by All Physics"),
777 units: String::from("K s-1"),
778 abbrev: String::from("TTDIA"),
779 },
780 199 => TableCategory {
781 parameter: String::from("Temperature Tendency by Non-radiation Physics"),
782 units: String::from("K s-1"),
783 abbrev: String::from("TTPHY"),
784 },
785 200 => TableCategory {
786 parameter: String::from("Standard Dev. of IR Temp. over 1x1 deg. area"),
787 units: String::from("K"),
788 abbrev: String::from("TSD1D"),
789 },
790 201 => TableCategory {
791 parameter: String::from("Shallow Convective Heating Rate"),
792 units: String::from("K s-1"),
793 abbrev: String::from("SHAHR"),
794 },
795 202 => TableCategory {
796 parameter: String::from("Vertical Diffusion Heating rate"),
797 units: String::from("K s-1"),
798 abbrev: String::from("VDFHR"),
799 },
800 203 => TableCategory {
801 parameter: String::from("Potential Temperature at Top of Viscous Sublayer"),
802 units: String::from("K"),
803 abbrev: String::from("THZ0"),
804 },
805 204 => TableCategory {
806 parameter: String::from("Tropical Cyclone Heat Potential"),
807 units: String::from("J m-2 K"),
808 abbrev: String::from("TCHP"),
809 },
810 205 => TableCategory {
811 parameter: String::from("Effective Layer (EL) Temperature"),
812 units: String::from("C"),
813 abbrev: String::from("ELMELT"),
814 },
815 206 => TableCategory {
816 parameter: String::from("Wet Bulb Globe Temperature"),
817 units: String::from("K"),
818 abbrev: String::from("WETGLBT"),
819 },
820 255 => TableCategory {
821 parameter: String::from("Missing"),
822 units: String::from(""),
823 abbrev: String::from(""),
824 },
825 33..=191 => TableCategory {
826 parameter: String::from("Reserved"),
827 units: String::from(""),
828 abbrev: String::from("Reserved"),
829 },
830 _ => TableCategory {
831 parameter: String::from("Reserved for Local Use"),
832 units: String::from(""),
833 abbrev: String::from("Reserved for Local Use"),
834 },
835 }
836}
837
838pub fn grib2_lookup_table42_01(category: u8) -> TableCategory {
892 match category {
893 0 => TableCategory {
894 parameter: String::from("Specific Humidity"),
895 units: String::from("kg kg-1"),
896 abbrev: String::from("SPFH"),
897 },
898 1 => TableCategory {
899 parameter: String::from("Relative Humidity"),
900 units: String::from("%"),
901 abbrev: String::from("RH"),
902 },
903 2 => TableCategory {
904 parameter: String::from("Humidity Mixing Ratio"),
905 units: String::from("kg kg-1"),
906 abbrev: String::from("MIXR"),
907 },
908 3 => TableCategory {
909 parameter: String::from("Precipitable Water"),
910 units: String::from("kg m-2"),
911 abbrev: String::from("PWAT"),
912 },
913 4 => TableCategory {
914 parameter: String::from("Vapour Pressure"),
915 units: String::from("Pa"),
916 abbrev: String::from("VAPP"),
917 },
918 5 => TableCategory {
919 parameter: String::from("Saturation Deficit"),
920 units: String::from("Pa"),
921 abbrev: String::from("SATD"),
922 },
923 6 => TableCategory {
924 parameter: String::from("Evaporation"),
925 units: String::from("kg m-2"),
926 abbrev: String::from("EVP"),
927 },
928 7 => TableCategory {
929 parameter: String::from("Precipitation Rate"),
930 units: String::from("kg m-2 s-1"),
931 abbrev: String::from("PRATE"),
932 },
933 8 => TableCategory {
934 parameter: String::from("Total Precipitation"),
935 units: String::from("kg m-2"),
936 abbrev: String::from("APCP"),
937 },
938 9 => TableCategory {
939 parameter: String::from("Large-Scale Precipitation (non-convective)"),
940 units: String::from("kg m-2"),
941 abbrev: String::from("NCPCP"),
942 },
943 10 => TableCategory {
944 parameter: String::from("Convective Precipitation"),
945 units: String::from("kg m-2"),
946 abbrev: String::from("ACPCP"),
947 },
948 11 => TableCategory {
949 parameter: String::from("Snow Depth"),
950 units: String::from("m"),
951 abbrev: String::from("SNOD"),
952 },
953 12 => TableCategory {
954 parameter: String::from("Snowfall Rate Water Equivalent"),
955 units: String::from("kg m-2 s-1"),
956 abbrev: String::from("SRWEQ"),
957 },
958 13 => TableCategory {
959 parameter: String::from("Water Equivalent of Accumulated Snow Depth"),
960 units: String::from("kg m-2"),
961 abbrev: String::from("WEASD"),
962 },
963 14 => TableCategory {
964 parameter: String::from("Convective Snow"),
965 units: String::from("kg m-2"),
966 abbrev: String::from("SNOC"),
967 },
968 15 => TableCategory {
969 parameter: String::from("Large-Scale Snow"),
970 units: String::from("kg m-2"),
971 abbrev: String::from("SNOL"),
972 },
973 16 => TableCategory {
974 parameter: String::from("Snow Melt"),
975 units: String::from("kg m-2"),
976 abbrev: String::from("SNOM"),
977 },
978 17 => TableCategory {
979 parameter: String::from("Snow Age"),
980 units: String::from("day"),
981 abbrev: String::from("SNOAG"),
982 },
983 18 => TableCategory {
984 parameter: String::from("Absolute Humidity"),
985 units: String::from("kg m-3"),
986 abbrev: String::from("ABSH"),
987 },
988 19 => TableCategory {
989 parameter: String::from("Precipitation Type"),
990 units: String::from("See Table 4.201"),
991 abbrev: String::from("PTYPE"),
992 },
993 20 => TableCategory {
994 parameter: String::from("Integrated Liquid Water"),
995 units: String::from("kg m-2"),
996 abbrev: String::from("ILIQW"),
997 },
998 21 => TableCategory {
999 parameter: String::from("Condensate"),
1000 units: String::from("kg kg-1"),
1001 abbrev: String::from("TCOND"),
1002 },
1003 22 => TableCategory {
1004 parameter: String::from("Cloud Mixing Ratio"),
1005 units: String::from("kg kg-1"),
1006 abbrev: String::from("CLMR"),
1007 },
1008 23 => TableCategory {
1009 parameter: String::from("Ice Water Mixing Ratio"),
1010 units: String::from("kg kg-1"),
1011 abbrev: String::from("ICMR"),
1012 },
1013 24 => TableCategory {
1014 parameter: String::from("Rain Mixing Ratio"),
1015 units: String::from("kg kg-1"),
1016 abbrev: String::from("RWMR"),
1017 },
1018 25 => TableCategory {
1019 parameter: String::from("Snow Mixing Ratio"),
1020 units: String::from("kg kg-1"),
1021 abbrev: String::from("SNMR"),
1022 },
1023 26 => TableCategory {
1024 parameter: String::from("Horizontal Moisture Convergence"),
1025 units: String::from("kg kg-1 s-1"),
1026 abbrev: String::from("MCONV"),
1027 },
1028 27 => TableCategory {
1029 parameter: String::from("Maximum Relative Humidity"),
1030 units: String::from("%"),
1031 abbrev: String::from("MAXRH"),
1032 },
1033 28 => TableCategory {
1034 parameter: String::from("Maximum Absolute Humidity"),
1035 units: String::from("kg m-3"),
1036 abbrev: String::from("MAXAH"),
1037 },
1038 29 => TableCategory {
1039 parameter: String::from("Total Snowfall"),
1040 units: String::from("m"),
1041 abbrev: String::from("ASNOW"),
1042 },
1043 30 => TableCategory {
1044 parameter: String::from("Precipitable Water Category"),
1045 units: String::from("See Table 4.202"),
1046 abbrev: String::from("PWCAT"),
1047 },
1048 31 => TableCategory {
1049 parameter: String::from("Hail"),
1050 units: String::from("m"),
1051 abbrev: String::from("HAIL"),
1052 },
1053 32 => TableCategory {
1054 parameter: String::from("Graupel"),
1055 units: String::from("kg kg-1"),
1056 abbrev: String::from("GRLE"),
1057 },
1058 33 => TableCategory {
1059 parameter: String::from("Categorical Rain"),
1060 units: String::from("Code table 4.222"),
1061 abbrev: String::from("CRAIN"),
1062 },
1063 34 => TableCategory {
1064 parameter: String::from("Categorical Freezing Rain"),
1065 units: String::from("Code table 4.222"),
1066 abbrev: String::from("CFRZR"),
1067 },
1068 35 => TableCategory {
1069 parameter: String::from("Categorical Ice Pellets"),
1070 units: String::from("Code table 4.222"),
1071 abbrev: String::from("CICEP"),
1072 },
1073 36 => TableCategory {
1074 parameter: String::from("Categorical Snow"),
1075 units: String::from("Code table 4.222"),
1076 abbrev: String::from("CSNOW"),
1077 },
1078 37 => TableCategory {
1079 parameter: String::from("Convective Precipitation Rate"),
1080 units: String::from("kg m-2 s-1"),
1081 abbrev: String::from("CPRAT"),
1082 },
1083 38 => TableCategory {
1084 parameter: String::from("Horizontal Moisture Divergence"),
1085 units: String::from("kg kg-1 s-1"),
1086 abbrev: String::from("MDIVER"),
1087 },
1088 39 => TableCategory {
1089 parameter: String::from("Percent frozen precipitation"),
1090 units: String::from("%"),
1091 abbrev: String::from("CPOFP"),
1092 },
1093 40 => TableCategory {
1094 parameter: String::from("Potential Evaporation"),
1095 units: String::from("kg m-2"),
1096 abbrev: String::from("PEVAP"),
1097 },
1098 41 => TableCategory {
1099 parameter: String::from("Potential Evaporation Rate"),
1100 units: String::from("W m-2"),
1101 abbrev: String::from("PEVPR"),
1102 },
1103 42 => TableCategory {
1104 parameter: String::from("Snow Cover"),
1105 units: String::from("%"),
1106 abbrev: String::from("SNOWC"),
1107 },
1108 43 => TableCategory {
1109 parameter: String::from("Rain Fraction of Total Cloud Water"),
1110 units: String::from("Proportion"),
1111 abbrev: String::from("FRAIN"),
1112 },
1113 44 => TableCategory {
1114 parameter: String::from("Rime Factor"),
1115 units: String::from("Numeric"),
1116 abbrev: String::from("RIME"),
1117 },
1118 45 => TableCategory {
1119 parameter: String::from("Total Column Integrated Rain"),
1120 units: String::from("kg m-2"),
1121 abbrev: String::from("TCOLR"),
1122 },
1123 46 => TableCategory {
1124 parameter: String::from("Total Column Integrated Snow"),
1125 units: String::from("kg m-2"),
1126 abbrev: String::from("TCOLS"),
1127 },
1128 47 => TableCategory {
1129 parameter: String::from("Large Scale Water Precipitation"),
1130 units: String::from("kg m-2"),
1131 abbrev: String::from("LSWP"),
1132 },
1133 48 => TableCategory {
1134 parameter: String::from("Convective Water Precipitation"),
1135 units: String::from("kg m-2"),
1136 abbrev: String::from("CWP"),
1137 },
1138 49 => TableCategory {
1139 parameter: String::from("Total Water Precipitation"),
1140 units: String::from("kg m-2"),
1141 abbrev: String::from("TWATP"),
1142 },
1143 50 => TableCategory {
1144 parameter: String::from("Total Snow Precipitation"),
1145 units: String::from("kg m-2"),
1146 abbrev: String::from("TSNOWP"),
1147 },
1148 51 => TableCategory {
1149 parameter: String::from("Total Column Water"),
1150 units: String::from("kg m-2"),
1151 abbrev: String::from("TCWAT"),
1152 },
1153 52 => TableCategory {
1154 parameter: String::from("Total Precipitation Rate"),
1155 units: String::from("kg m-2 s-1"),
1156 abbrev: String::from("TPRATE"),
1157 },
1158 53 => TableCategory {
1159 parameter: String::from("Total Snowfall Rate Water Equivalent"),
1160 units: String::from("kg m-2 s-1"),
1161 abbrev: String::from("TSRWE"),
1162 },
1163 54 => TableCategory {
1164 parameter: String::from("Large Scale Precipitation Rate"),
1165 units: String::from("kg m-2 s-1"),
1166 abbrev: String::from("LSPRATE"),
1167 },
1168 55 => TableCategory {
1169 parameter: String::from("Convective Snowfall Rate Water Equivalent"),
1170 units: String::from("kg m-2 s-1"),
1171 abbrev: String::from("CSRWE"),
1172 },
1173 56 => TableCategory {
1174 parameter: String::from("Large Scale Snowfall Rate Water Equivalent"),
1175 units: String::from("kg m-2 s-1"),
1176 abbrev: String::from("LSSRWE"),
1177 },
1178 57 => TableCategory {
1179 parameter: String::from("Total Snowfall Rate"),
1180 units: String::from("m s-1"),
1181 abbrev: String::from("TSRATE"),
1182 },
1183 58 => TableCategory {
1184 parameter: String::from("Convective Snowfall Rate"),
1185 units: String::from("m s-1"),
1186 abbrev: String::from("CSRATE"),
1187 },
1188 59 => TableCategory {
1189 parameter: String::from("Large Scale Snowfall Rate"),
1190 units: String::from("m s-1"),
1191 abbrev: String::from("LSSRATE"),
1192 },
1193 60 => TableCategory {
1194 parameter: String::from("Snow Depth Water Equivalent"),
1195 units: String::from("kg m-2"),
1196 abbrev: String::from("SDWE"),
1197 },
1198 61 => TableCategory {
1199 parameter: String::from("Snow Density"),
1200 units: String::from("kg m-3"),
1201 abbrev: String::from("SDEN"),
1202 },
1203 62 => TableCategory {
1204 parameter: String::from("Snow Evaporation"),
1205 units: String::from("kg m-2"),
1206 abbrev: String::from("SEVAP"),
1207 },
1208 63 => TableCategory {
1209 parameter: String::from("Reserved"),
1210 units: String::from(""),
1211 abbrev: String::from("Reserved"),
1212 }, 64 => TableCategory {
1214 parameter: String::from("Total Column Integrated Water Vapour"),
1215 units: String::from("kg m-2"),
1216 abbrev: String::from("TCIWV"),
1217 },
1218 65 => TableCategory {
1219 parameter: String::from("Rain Precipitation Rate"),
1220 units: String::from("kg m-2 s-1"),
1221 abbrev: String::from("RPRATE"),
1222 },
1223 66 => TableCategory {
1224 parameter: String::from("Snow Precipitation Rate"),
1225 units: String::from("kg m-2 s-1"),
1226 abbrev: String::from("SPRATE"),
1227 },
1228 67 => TableCategory {
1229 parameter: String::from("Freezing Rain Precipitation Rate"),
1230 units: String::from("kg m-2 s-1"),
1231 abbrev: String::from("FPRATE"),
1232 },
1233 68 => TableCategory {
1234 parameter: String::from("Ice Pellets Precipitation Rate"),
1235 units: String::from("kg m-2 s-1"),
1236 abbrev: String::from("IPRATE"),
1237 },
1238 69 => TableCategory {
1239 parameter: String::from("Total Column Integrated Cloud Water"),
1240 units: String::from("kg m-2"),
1241 abbrev: String::from("TCOLW"),
1242 },
1243 70 => TableCategory {
1244 parameter: String::from("Total Column Integrated Cloud Ice"),
1245 units: String::from("kg m-2"),
1246 abbrev: String::from("TCOLI"),
1247 },
1248 71 => TableCategory {
1249 parameter: String::from("Hail Mixing Ratio"),
1250 units: String::from("kg kg-1"),
1251 abbrev: String::from("HAILMXR"),
1252 },
1253 72 => TableCategory {
1254 parameter: String::from("Total Column Integrated Hail"),
1255 units: String::from("kg m-2"),
1256 abbrev: String::from("TCOLH"),
1257 },
1258 73 => TableCategory {
1259 parameter: String::from("Hail Precipitation Rate"),
1260 units: String::from("kg m-2 s-1"),
1261 abbrev: String::from("HAILPR"),
1262 },
1263 74 => TableCategory {
1264 parameter: String::from("Total Column Integrated Graupel"),
1265 units: String::from("kg m-2"),
1266 abbrev: String::from("TCOLG"),
1267 },
1268 75 => TableCategory {
1269 parameter: String::from("Graupel (Snow Pellets) Precipitation Rate"),
1270 units: String::from("kg m-2 s-1"),
1271 abbrev: String::from("GPRATE"),
1272 },
1273 76 => TableCategory {
1274 parameter: String::from("Convective Rain Rate"),
1275 units: String::from("kg m-2 s-1"),
1276 abbrev: String::from("CRRATE"),
1277 },
1278 77 => TableCategory {
1279 parameter: String::from("Large Scale Rain Rate"),
1280 units: String::from("kg m-2 s-1"),
1281 abbrev: String::from("LSRRATE"),
1282 },
1283 78 => TableCategory {
1284 parameter: String::from(
1285 "Total Column Integrated Water (All components including precipitation)",
1286 ),
1287 units: String::from("kg m-2"),
1288 abbrev: String::from("TCOLWA"),
1289 },
1290 79 => TableCategory {
1291 parameter: String::from("Evaporation Rate"),
1292 units: String::from("kg m-2 s-1"),
1293 abbrev: String::from("EVARATE"),
1294 },
1295 80 => TableCategory {
1296 parameter: String::from("Total Condensate"),
1297 units: String::from("kg kg-1"),
1298 abbrev: String::from("TOTCON"),
1299 },
1300 81 => TableCategory {
1301 parameter: String::from("Total Column-Integrated Condensate"),
1302 units: String::from("kg m-2"),
1303 abbrev: String::from("TCICON"),
1304 },
1305 82 => TableCategory {
1306 parameter: String::from("Cloud Ice Mixing Ratio"),
1307 units: String::from("kg kg-1"),
1308 abbrev: String::from("CIMIXR"),
1309 },
1310 83 => TableCategory {
1311 parameter: String::from("Specific Cloud Liquid Water Content"),
1312 units: String::from("kg kg-1"),
1313 abbrev: String::from("SCLLWC"),
1314 },
1315 84 => TableCategory {
1316 parameter: String::from("Specific Cloud Ice Water Content"),
1317 units: String::from("kg kg-1"),
1318 abbrev: String::from("SCLIWC"),
1319 },
1320 85 => TableCategory {
1321 parameter: String::from("Specific Rain Water Content"),
1322 units: String::from("kg kg-1"),
1323 abbrev: String::from("SRAINW"),
1324 },
1325 86 => TableCategory {
1326 parameter: String::from("Specific Snow Water Content"),
1327 units: String::from("kg kg-1"),
1328 abbrev: String::from("SSNOWW"),
1329 },
1330 87 => TableCategory {
1331 parameter: String::from("Stratiform Precipitation Rate"),
1332 units: String::from("kg m-2 s-1"),
1333 abbrev: String::from("STRPRATE"),
1334 },
1335 88 => TableCategory {
1336 parameter: String::from("Categorical Convective Precipitation"),
1337 units: String::from("Code table 4.222"),
1338 abbrev: String::from("CATCP"),
1339 },
1340 89 => TableCategory {
1341 parameter: String::from("Reserved"),
1342 units: String::from(""),
1343 abbrev: String::from("Reserved"),
1344 }, 90 => TableCategory {
1346 parameter: String::from("Total Kinematic Moisture Flux"),
1347 units: String::from("kg kg-1 m s-1"),
1348 abbrev: String::from("TKMFLX"),
1349 },
1350 91 => TableCategory {
1351 parameter: String::from("U-component (zonal) Kinematic Moisture Flux"),
1352 units: String::from("kg kg-1 m s-1"),
1353 abbrev: String::from("UKMFLX"),
1354 },
1355 92 => TableCategory {
1356 parameter: String::from("V-component (meridional) Kinematic Moisture Flux"),
1357 units: String::from("kg kg-1 m s-1"),
1358 abbrev: String::from("VKMFLX"),
1359 },
1360 93 => TableCategory {
1361 parameter: String::from("Relative Humidity With Respect to Water"),
1362 units: String::from("%"),
1363 abbrev: String::from("RHWATER"),
1364 },
1365 94 => TableCategory {
1366 parameter: String::from("Relative Humidity With Respect to Ice"),
1367 units: String::from("%"),
1368 abbrev: String::from("RHICE"),
1369 },
1370 95 => TableCategory {
1371 parameter: String::from("Freezing or Frozen Precipitation Rate"),
1372 units: String::from("kg m-2 s-1"),
1373 abbrev: String::from("FZPRATE"),
1374 },
1375 96 => TableCategory {
1376 parameter: String::from("Mass Density of Rain"),
1377 units: String::from("kg m-3"),
1378 abbrev: String::from("MASSDR"),
1379 },
1380 97 => TableCategory {
1381 parameter: String::from("Mass Density of Snow"),
1382 units: String::from("kg m-3"),
1383 abbrev: String::from("MASSDS"),
1384 },
1385 98 => TableCategory {
1386 parameter: String::from("Mass Density of Graupel"),
1387 units: String::from("kg m-3"),
1388 abbrev: String::from("MASSDG"),
1389 },
1390 99 => TableCategory {
1391 parameter: String::from("Mass Density of Hail"),
1392 units: String::from("kg m-3"),
1393 abbrev: String::from("MASSDH"),
1394 },
1395 100 => TableCategory {
1396 parameter: String::from("Specific Number Concentration of Rain"),
1397 units: String::from("kg-1"),
1398 abbrev: String::from("SPNCR"),
1399 },
1400 101 => TableCategory {
1401 parameter: String::from("Specific Number Concentration of Snow"),
1402 units: String::from("kg-1"),
1403 abbrev: String::from("SPNCS"),
1404 },
1405 102 => TableCategory {
1406 parameter: String::from("Specific Number Concentration of Graupel"),
1407 units: String::from("kg-1"),
1408 abbrev: String::from("SPNCG"),
1409 },
1410 103 => TableCategory {
1411 parameter: String::from("Specific Number Concentration of Hail"),
1412 units: String::from("kg-1"),
1413 abbrev: String::from("SPNCH"),
1414 },
1415 104 => TableCategory {
1416 parameter: String::from("Number Density of Rain"),
1417 units: String::from("m-3"),
1418 abbrev: String::from("NUMDR"),
1419 },
1420 105 => TableCategory {
1421 parameter: String::from("Number Density of Snow"),
1422 units: String::from("m-3"),
1423 abbrev: String::from("NUMDS"),
1424 },
1425 106 => TableCategory {
1426 parameter: String::from("Number Density of Graupel"),
1427 units: String::from("m-3"),
1428 abbrev: String::from("NUMDG"),
1429 },
1430 107 => TableCategory {
1431 parameter: String::from("Number Density of Hail"),
1432 units: String::from("m-3"),
1433 abbrev: String::from("NUMDH"),
1434 },
1435 108 => TableCategory {
1436 parameter: String::from("Specific Humidity Tendency due to Parameterizations"),
1437 units: String::from("kg kg-1 s-1"),
1438 abbrev: String::from("SHTPRM"),
1439 },
1440 109 => TableCategory {
1441 parameter: String::from(
1442 "Mass Density of Liquid Water Coating on Hail Expressed as Mass of Liquid Water \
1443 per Unit Volume of Air",
1444 ),
1445 units: String::from("kg m-3"),
1446 abbrev: String::from("MDLWHVA"),
1447 },
1448 110 => TableCategory {
1449 parameter: String::from(
1450 "Specific Mass of Liquid Water Coating on Hail Expressed as Mass of Liquid Water \
1451 per Unit Mass of Moist Air",
1452 ),
1453 units: String::from("kg kg-1"),
1454 abbrev: String::from("SMLWHMA"),
1455 },
1456 111 => TableCategory {
1457 parameter: String::from(
1458 "Mass Mixing Ratio of Liquid Water Coating on Hail Expressed as Mass of Liquid \
1459 Water per Unit Mass of Dry Air",
1460 ),
1461 units: String::from("kg kg-1"),
1462 abbrev: String::from("MMLWHDA"),
1463 },
1464 112 => TableCategory {
1465 parameter: String::from(
1466 "Mass Density of Liquid Water Coating on Graupel Expressed as Mass of Liquid \
1467 Water per Unit Volume of Air",
1468 ),
1469 units: String::from("kg m-3"),
1470 abbrev: String::from("MDLWGVA"),
1471 },
1472 113 => TableCategory {
1473 parameter: String::from(
1474 "Specific Mass of Liquid Water Coating on Graupel Expressed as Mass of Liquid \
1475 Water per Unit Mass of Moist Air",
1476 ),
1477 units: String::from("kg kg-1"),
1478 abbrev: String::from("SMLWGMA"),
1479 },
1480 114 => TableCategory {
1481 parameter: String::from(
1482 "Mass Mixing Ratio of Liquid Water Coating on Graupel Expressed as Mass of Liquid \
1483 Water per Unit Mass of Dry Air",
1484 ),
1485 units: String::from("kg kg-1"),
1486 abbrev: String::from("MMLWGDA"),
1487 },
1488 115 => TableCategory {
1489 parameter: String::from(
1490 "Mass Density of Liquid Water Coating on Snow Expressed as Mass of Liquid Water \
1491 per Unit Volume of Air",
1492 ),
1493 units: String::from("kg m-3"),
1494 abbrev: String::from("MDLWSVA"),
1495 },
1496 116 => TableCategory {
1497 parameter: String::from(
1498 "Specific Mass of Liquid Water Coating on Snow Expressed as Mass of Liquid Water \
1499 per Unit Mass of Moist Air",
1500 ),
1501 units: String::from("kg kg-1"),
1502 abbrev: String::from("SMLWSMA"),
1503 },
1504 117 => TableCategory {
1505 parameter: String::from(
1506 "Mass Mixing Ratio of Liquid Water Coating on Snow Expressed as Mass of Liquid \
1507 Water per Unit Mass of Dry Air",
1508 ),
1509 units: String::from("kg kg-1"),
1510 abbrev: String::from("MMLWSDA"),
1511 },
1512 118 => TableCategory {
1513 parameter: String::from("Unbalanced Component of Specific Humidity"),
1514 units: String::from("kg kg-1"),
1515 abbrev: String::from("UNCSH"),
1516 },
1517 119 => TableCategory {
1518 parameter: String::from("Unbalanced Component of Specific Cloud Liquid Water content"),
1519 units: String::from("kg kg-1"),
1520 abbrev: String::from("UCSCLW"),
1521 },
1522 120 => TableCategory {
1523 parameter: String::from("Unbalanced Component of Specific Cloud Ice Water content"),
1524 units: String::from("kg kg-1"),
1525 abbrev: String::from("UCSCIW"),
1526 },
1527 121 => TableCategory {
1528 parameter: String::from("Fraction of Snow Cover"),
1529 units: String::from("Proportion"),
1530 abbrev: String::from("FSNOWC"),
1531 },
1532 122 => TableCategory {
1533 parameter: String::from("Precipitation intensity index"),
1534 units: String::from("See Table 4.247"),
1535 abbrev: String::from("PIIDX"),
1536 },
1537 123 => TableCategory {
1538 parameter: String::from("Dominant precipitation type"),
1539 units: String::from("See Table 4.201"),
1540 abbrev: String::from("DPTYPE"),
1541 },
1542 124 => TableCategory {
1543 parameter: String::from("Presence of showers"),
1544 units: String::from("See Table 4.222"),
1545 abbrev: String::from("PSHOW"),
1546 },
1547 125 => TableCategory {
1548 parameter: String::from("Presence of blowing snow"),
1549 units: String::from("See Table 4.222"),
1550 abbrev: String::from("PBSNOW"),
1551 },
1552 126 => TableCategory {
1553 parameter: String::from("Presence of blizzard"),
1554 units: String::from("See Table 4.222"),
1555 abbrev: String::from("PBLIZZ"),
1556 },
1557 127 => TableCategory {
1558 parameter: String::from("Ice pellets (non-water equivalent) precipitation rate"),
1559 units: String::from("m s-1"),
1560 abbrev: String::from("ICEP"),
1561 },
1562 128 => TableCategory {
1563 parameter: String::from("Total solid precipitation rate"),
1564 units: String::from("kg m-2 s-1"),
1565 abbrev: String::from("TSPRATE"),
1566 },
1567 129 => TableCategory {
1568 parameter: String::from("Effective Radius of Cloud Water"),
1569 units: String::from("m"),
1570 abbrev: String::from("EFRCWAT"),
1571 },
1572 130 => TableCategory {
1573 parameter: String::from("Effective Radius of Rain"),
1574 units: String::from("m"),
1575 abbrev: String::from("EFRRAIN"),
1576 },
1577 131 => TableCategory {
1578 parameter: String::from("Effective Radius of Cloud Ice"),
1579 units: String::from("m"),
1580 abbrev: String::from("EFRCICE"),
1581 },
1582 132 => TableCategory {
1583 parameter: String::from("Effective Radius of Snow"),
1584 units: String::from("m"),
1585 abbrev: String::from("EFRSNOW"),
1586 },
1587 133 => TableCategory {
1588 parameter: String::from("Effective Radius of Graupel"),
1589 units: String::from("m"),
1590 abbrev: String::from("EFRGRL"),
1591 },
1592 134 => TableCategory {
1593 parameter: String::from("Effective Radius of Hail"),
1594 units: String::from("m"),
1595 abbrev: String::from("EFRHAIL"),
1596 },
1597 135 => TableCategory {
1598 parameter: String::from("Effective Radius of Subgrid Liquid Clouds"),
1599 units: String::from("m"),
1600 abbrev: String::from("EFRSLC"),
1601 },
1602 136 => TableCategory {
1603 parameter: String::from("Effective Radius of Subgrid Ice Clouds"),
1604 units: String::from("m"),
1605 abbrev: String::from("EFRSICEC"),
1606 },
1607 137 => TableCategory {
1608 parameter: String::from("Effective Aspect Ratio of Rain"),
1609 units: String::from(""),
1610 abbrev: String::from("EFARRAIN"),
1611 },
1612 138 => TableCategory {
1613 parameter: String::from("Effective Aspect Ratio of Cloud Ice"),
1614 units: String::from(""),
1615 abbrev: String::from("EFARCICE"),
1616 },
1617 139 => TableCategory {
1618 parameter: String::from("Effective Aspect Ratio of Snow"),
1619 units: String::from(""),
1620 abbrev: String::from("EFARSNOW"),
1621 },
1622 140 => TableCategory {
1623 parameter: String::from("Effective Aspect Ratio of Graupel"),
1624 units: String::from(""),
1625 abbrev: String::from("EFARGRL"),
1626 },
1627 141 => TableCategory {
1628 parameter: String::from("Effective Aspect Ratio of Hail"),
1629 units: String::from(""),
1630 abbrev: String::from("EFARHAIL"),
1631 },
1632 142 => TableCategory {
1633 parameter: String::from("Effective Aspect Ratio of Subgrid Ice Clouds"),
1634 units: String::from(""),
1635 abbrev: String::from("EFARSIC"),
1636 },
1637 143 => TableCategory {
1638 parameter: String::from("Potential evaporation rate"),
1639 units: String::from("kg m-2 s-1"),
1640 abbrev: String::from("PERATE"),
1641 },
1642 144 => TableCategory {
1643 parameter: String::from("Specific rain water content (convective)"),
1644 units: String::from("kg kg-1"),
1645 abbrev: String::from("SRWATERC"),
1646 },
1647 145 => TableCategory {
1648 parameter: String::from("Specific snow water content (convective)"),
1649 units: String::from("kg kg-1"),
1650 abbrev: String::from("SSNOWWC"),
1651 },
1652 146 => TableCategory {
1653 parameter: String::from("Cloud ice precipitation rate"),
1654 units: String::from("kg m-2 s-1"),
1655 abbrev: String::from("CICEPR"),
1656 },
1657 147 => TableCategory {
1658 parameter: String::from("Character of precipitation"),
1659 units: String::from("See Table 4.249"),
1660 abbrev: String::from("CHPRECIP"),
1661 },
1662 148 => TableCategory {
1663 parameter: String::from("Snow evaporation rate"),
1664 units: String::from("kg m-2 s-1"),
1665 abbrev: String::from("SNOWERAT"),
1666 },
1667 149 => TableCategory {
1668 parameter: String::from("Cloud water mixing ratio"),
1669 units: String::from("kg kg-1"),
1670 abbrev: String::from("CWATERMR"),
1671 },
1672 150 => TableCategory {
1673 parameter: String::from("Column integrated eastward water vapour mass flux"),
1674 units: String::from("kg m-1s-1"),
1675 abbrev: String::from("CEWVMF"),
1676 },
1677 151 => TableCategory {
1678 parameter: String::from("Column integrated northward water vapour mass flux"),
1679 units: String::from("kg m-1s-1"),
1680 abbrev: String::from("CNWVMF"),
1681 },
1682 152 => TableCategory {
1683 parameter: String::from("Column integrated eastward cloud liquid water mass flux"),
1684 units: String::from("kg m-1s-1"),
1685 abbrev: String::from("CECLWMF"),
1686 },
1687 153 => TableCategory {
1688 parameter: String::from("Column integrated northward cloud liquid water mass flux"),
1689 units: String::from("kg m-1s-1"),
1690 abbrev: String::from("CNCLWMF"),
1691 },
1692 154 => TableCategory {
1693 parameter: String::from("Column integrated eastward cloud ice mass flux"),
1694 units: String::from("kg m-1s-1"),
1695 abbrev: String::from("CECIMF"),
1696 },
1697 155 => TableCategory {
1698 parameter: String::from("Column integrated northward cloud ice mass flux"),
1699 units: String::from("kg m-1s-1"),
1700 abbrev: String::from("CNCIMF"),
1701 },
1702 156 => TableCategory {
1703 parameter: String::from("Column integrated eastward rain mass flux"),
1704 units: String::from("kg m-1s-1"),
1705 abbrev: String::from("CERMF"),
1706 },
1707 157 => TableCategory {
1708 parameter: String::from("Column integrated northward rain mass flux"),
1709 units: String::from("kg m-1s-1"),
1710 abbrev: String::from("CNRMF"),
1711 },
1712 158 => TableCategory {
1713 parameter: String::from("Column integrated eastward snow mass flux"),
1714 units: String::from("kg m-1s-1"),
1715 abbrev: String::from("CEFMF"),
1716 },
1717 159 => TableCategory {
1718 parameter: String::from("Column integrated northward snow mass flux"),
1719 units: String::from("kg m-1s-1"),
1720 abbrev: String::from("CNSMF"),
1721 },
1722 160 => TableCategory {
1723 parameter: String::from("Column integrated divergence of water vapour mass flux"),
1724 units: String::from("kg m-1s-1"),
1725 abbrev: String::from("CDWFMF"),
1726 },
1727 161 => TableCategory {
1728 parameter: String::from("Column integrated divergence of cloud liquid water mass flux"),
1729 units: String::from("kg m-1s-1"),
1730 abbrev: String::from("CDCLWMF"),
1731 },
1732 162 => TableCategory {
1733 parameter: String::from("Column integrated divergence of cloud ice mass flux"),
1734 units: String::from("kg m-1s-1"),
1735 abbrev: String::from("CDCIMF"),
1736 },
1737 163 => TableCategory {
1738 parameter: String::from("Column integrated divergence of rain mass flux"),
1739 units: String::from("kg m-1s-1"),
1740 abbrev: String::from("CDRMF"),
1741 },
1742 164 => TableCategory {
1743 parameter: String::from("Column integrated divergence of snow mass flux"),
1744 units: String::from("kg m-1s-1"),
1745 abbrev: String::from("CDSMF"),
1746 },
1747 165 => TableCategory {
1748 parameter: String::from("Column integrated divergence of total water mass flux"),
1749 units: String::from("kg m-1s-1"),
1750 abbrev: String::from("CDTWMF"),
1751 },
1752 166 => TableCategory {
1753 parameter: String::from("Column integrated water vapour flux"),
1754 units: String::from("kg m-1s-1"),
1755 abbrev: String::from("CWVF"),
1756 },
1757 167 => TableCategory {
1758 parameter: String::from("Total column supercooled liquid water"),
1759 units: String::from("kg m-2"),
1760 abbrev: String::from("TCSLW"),
1761 },
1762 168 => TableCategory {
1763 parameter: String::from("Saturation specific humidity with respect to water"),
1764 units: String::from("kg m-3"),
1765 abbrev: String::from("SSPFHW"),
1766 },
1767 169 => TableCategory {
1768 parameter: String::from(
1769 "Total column integrated saturation specific humidity with respect to water",
1770 ),
1771 units: String::from("kg m-2"),
1772 abbrev: String::from("TCISSPFHW"),
1773 },
1774 192 => TableCategory {
1775 parameter: String::from("Categorical Rain"),
1776 units: String::from("Code table 4.222"),
1777 abbrev: String::from("CRAIN"),
1778 },
1779 193 => TableCategory {
1780 parameter: String::from("Categorical Freezing Rain"),
1781 units: String::from("Code table 4.222"),
1782 abbrev: String::from("CFRZR"),
1783 },
1784 194 => TableCategory {
1785 parameter: String::from("Categorical Ice Pellets"),
1786 units: String::from("Code table 4.222"),
1787 abbrev: String::from("CICEP"),
1788 },
1789 195 => TableCategory {
1790 parameter: String::from("Categorical Snow"),
1791 units: String::from("Code table 4.222"),
1792 abbrev: String::from("CSNOW"),
1793 },
1794 196 => TableCategory {
1795 parameter: String::from("Convective Precipitation Rate"),
1796 units: String::from("kg m-2 s-1"),
1797 abbrev: String::from("CPRAT"),
1798 },
1799 197 => TableCategory {
1800 parameter: String::from("Horizontal Moisture Divergence"),
1801 units: String::from("kg kg-1 s-1"),
1802 abbrev: String::from("MDIV"),
1803 },
1804 198 => TableCategory {
1805 parameter: String::from("Minimum Relative Humidity"),
1806 units: String::from("%"),
1807 abbrev: String::from("MINRH"),
1808 },
1809 199 => TableCategory {
1810 parameter: String::from("Potential Evaporation"),
1811 units: String::from("kg m-2"),
1812 abbrev: String::from("PEVAP"),
1813 },
1814 200 => TableCategory {
1815 parameter: String::from("Potential Evaporation Rate"),
1816 units: String::from("W m-2"),
1817 abbrev: String::from("PEVPR"),
1818 },
1819 201 => TableCategory {
1820 parameter: String::from("Snow Cover"),
1821 units: String::from("%"),
1822 abbrev: String::from("SNOWC"),
1823 },
1824 202 => TableCategory {
1825 parameter: String::from("Rain Fraction of Total Liquid Water"),
1826 units: String::from("non-dim"),
1827 abbrev: String::from("FRAIN"),
1828 },
1829 203 => TableCategory {
1830 parameter: String::from("Rime Factor"),
1831 units: String::from("non-dim"),
1832 abbrev: String::from("RIME"),
1833 },
1834 204 => TableCategory {
1835 parameter: String::from("Total Column Integrated Rain"),
1836 units: String::from("kg m-2"),
1837 abbrev: String::from("TCOLR"),
1838 },
1839 205 => TableCategory {
1840 parameter: String::from("Total Column Integrated Snow"),
1841 units: String::from("kg m-2"),
1842 abbrev: String::from("TCOLS"),
1843 },
1844 206 => TableCategory {
1845 parameter: String::from("Total Icing Potential Diagnostic"),
1846 units: String::from("non-dim"),
1847 abbrev: String::from("TIPD"),
1848 },
1849 207 => TableCategory {
1850 parameter: String::from("Number concentration for ice particles"),
1851 units: String::from("non-dim"),
1852 abbrev: String::from("NCIP"),
1853 },
1854 208 => TableCategory {
1855 parameter: String::from("Snow temperature"),
1856 units: String::from("K"),
1857 abbrev: String::from("SNOT"),
1858 },
1859 209 => TableCategory {
1860 parameter: String::from("Total column-integrated supercooled liquid water"),
1861 units: String::from("kg m-2"),
1862 abbrev: String::from("TCLSW"),
1863 },
1864 210 => TableCategory {
1865 parameter: String::from("Total column-integrated melting ice"),
1866 units: String::from("kg m-2"),
1867 abbrev: String::from("TCOLM"),
1868 },
1869 211 => TableCategory {
1870 parameter: String::from("Evaporation - Precipitation"),
1871 units: String::from("cm/day"),
1872 abbrev: String::from("EMNP"),
1873 },
1874 212 => TableCategory {
1875 parameter: String::from("Sublimation (evaporation from snow)"),
1876 units: String::from("W m-2"),
1877 abbrev: String::from("SBSNO"),
1878 },
1879 213 => TableCategory {
1880 parameter: String::from("Deep Convective Moistening Rate"),
1881 units: String::from("kg kg-1 s-1"),
1882 abbrev: String::from("CNVMR"),
1883 },
1884 214 => TableCategory {
1885 parameter: String::from("Shallow Convective Moistening Rate"),
1886 units: String::from("kg kg-1 s-1"),
1887 abbrev: String::from("SHAMR"),
1888 },
1889 215 => TableCategory {
1890 parameter: String::from("Vertical Diffusion Moistening Rate"),
1891 units: String::from("kg kg-1 s-1"),
1892 abbrev: String::from("VDFMR"),
1893 },
1894 216 => TableCategory {
1895 parameter: String::from("Condensation Pressure of Parcali"),
1896 units: String::from("Pa"),
1897 abbrev: String::from("CONDP"),
1898 },
1899 217 => TableCategory {
1900 parameter: String::from("Large scale moistening rate"),
1901 units: String::from("kg kg-1 s-1"),
1902 abbrev: String::from("LRGMR"),
1903 },
1904 218 => TableCategory {
1905 parameter: String::from("Specific humidity at top of viscous sublayer"),
1906 units: String::from("kg kg-1"),
1907 abbrev: String::from("QZ0"),
1908 },
1909 219 => TableCategory {
1910 parameter: String::from("Maximum specific humidity at 2m"),
1911 units: String::from("kg kg-1"),
1912 abbrev: String::from("QMAX"),
1913 },
1914 220 => TableCategory {
1915 parameter: String::from("Minimum specific humidity at 2m"),
1916 units: String::from("kg kg-1"),
1917 abbrev: String::from("QMIN"),
1918 },
1919 221 => TableCategory {
1920 parameter: String::from("Liquid precipitation (Rainfall)"),
1921 units: String::from("kg m-2"),
1922 abbrev: String::from("ARAIN"),
1923 },
1924 222 => TableCategory {
1925 parameter: String::from("Snow temperature, depth-avg"),
1926 units: String::from("K"),
1927 abbrev: String::from("SNOWT"),
1928 },
1929 223 => TableCategory {
1930 parameter: String::from("Total precipitation (nearest grid point)"),
1931 units: String::from("kg m-2"),
1932 abbrev: String::from("APCPN"),
1933 },
1934 224 => TableCategory {
1935 parameter: String::from("Convective precipitation (nearest grid point)"),
1936 units: String::from("kg m-2"),
1937 abbrev: String::from("ACPCPN"),
1938 },
1939 225 => TableCategory {
1940 parameter: String::from("Freezing Rain"),
1941 units: String::from("kg m-2"),
1942 abbrev: String::from("FRZR"),
1943 },
1944 226 => TableCategory {
1945 parameter: String::from("Dominant Weather"),
1946 units: String::from("Numeric"),
1947 abbrev: String::from("PWTHER"),
1948 },
1949 227 => TableCategory {
1950 parameter: String::from("Frozen Rain"),
1951 units: String::from("kg m-2"),
1952 abbrev: String::from("FROZR"),
1953 },
1954 228 => TableCategory {
1955 parameter: String::from("Flat Ice Accumulation (FRAM)"),
1956 units: String::from("kg m-2"),
1957 abbrev: String::from("FICEAC"),
1958 },
1959 229 => TableCategory {
1960 parameter: String::from("Line Ice Accumulation (FRAM)"),
1961 units: String::from("kg m-2"),
1962 abbrev: String::from("LICEAC"),
1963 },
1964 230 => TableCategory {
1965 parameter: String::from("Sleet Accumulation"),
1966 units: String::from("kg m-2"),
1967 abbrev: String::from("SLACC"),
1968 },
1969 231 => TableCategory {
1970 parameter: String::from("Precipitation Potential Index"),
1971 units: String::from("%"),
1972 abbrev: String::from("PPINDX"),
1973 },
1974 232 => TableCategory {
1975 parameter: String::from("Probability Cloud Ice Present"),
1976 units: String::from("%"),
1977 abbrev: String::from("PROBCIP"),
1978 },
1979 233 => TableCategory {
1980 parameter: String::from("Snow Liquid Ratio"),
1981 units: String::from("kg kg-1"),
1982 abbrev: String::from("SNOWLR"),
1983 },
1984 234 => TableCategory {
1985 parameter: String::from("Precipitation Duration"),
1986 units: String::from("hour"),
1987 abbrev: String::from("PCPDUR"),
1988 },
1989 235 => TableCategory {
1990 parameter: String::from("Cloud Liquid Mixing Ratio"),
1991 units: String::from("kg kg-1"),
1992 abbrev: String::from("CLLMR"),
1993 },
1994 241 => TableCategory {
1995 parameter: String::from("Total Snow"),
1996 units: String::from("kg m-2"),
1997 abbrev: String::from("TSNOW"),
1998 },
1999 242 => TableCategory {
2000 parameter: String::from("Relative Humidity with Respect to Precipitable Water"),
2001 units: String::from("%"),
2002 abbrev: String::from("RHPW"),
2003 },
2004 245 => TableCategory {
2005 parameter: String::from("Hourly Maximum of Column Vertical Integrated Graupel"),
2006 units: String::from("kg m-2"),
2007 abbrev: String::from("MAXVIG"),
2008 },
2009 255 => TableCategory {
2010 parameter: String::from("Missing"),
2011 units: String::from(""),
2012 abbrev: String::from(""),
2013 },
2014 170..=191 => TableCategory {
2015 parameter: String::from("Reserved"),
2016 units: String::from(""),
2017 abbrev: String::from("Reserved"),
2018 },
2019 236..=240 => TableCategory {
2020 parameter: String::from("Reserved"),
2021 units: String::from(""),
2022 abbrev: String::from("Reserved"),
2023 },
2024 _ => TableCategory {
2025 parameter: String::from("Reserved for Local Use"),
2026 units: String::from(""),
2027 abbrev: String::from("Reserved for Local Use"),
2028 },
2029 }
2030}
2031
2032pub fn grib2_lookup_table42_02(category: u8) -> TableCategory {
2057 match category {
2058 0 => TableCategory {
2059 parameter: String::from("Wind Direction (from which blowing)"),
2060 units: String::from("°"),
2061 abbrev: String::from("WDIR"),
2062 },
2063 1 => TableCategory {
2064 parameter: String::from("Wind Speed"),
2065 units: String::from("m s-1"),
2066 abbrev: String::from("WIND"),
2067 },
2068 2 => TableCategory {
2069 parameter: String::from("U-Component of Wind"),
2070 units: String::from("m s-1"),
2071 abbrev: String::from("UGRD"),
2072 },
2073 3 => TableCategory {
2074 parameter: String::from("V-Component of Wind"),
2075 units: String::from("m s-1"),
2076 abbrev: String::from("VGRD"),
2077 },
2078 4 => TableCategory {
2079 parameter: String::from("Stream Function"),
2080 units: String::from("m2 s-1"),
2081 abbrev: String::from("STRM"),
2082 },
2083 5 => TableCategory {
2084 parameter: String::from("Velocity Potential"),
2085 units: String::from("m2 s-1"),
2086 abbrev: String::from("VPOT"),
2087 },
2088 6 => TableCategory {
2089 parameter: String::from("Montgomery Stream Function"),
2090 units: String::from("m2 s-2"),
2091 abbrev: String::from("MNTSF"),
2092 },
2093 7 => TableCategory {
2094 parameter: String::from("Sigma Coordinate Vertical Velocity"),
2095 units: String::from("s-1"),
2096 abbrev: String::from("SGCVV"),
2097 },
2098 8 => TableCategory {
2099 parameter: String::from("Vertical Velocity (Pressure)"),
2100 units: String::from("Pa s-1"),
2101 abbrev: String::from("VVEL"),
2102 },
2103 9 => TableCategory {
2104 parameter: String::from("Vertical Velocity (Geometric)"),
2105 units: String::from("m s-1"),
2106 abbrev: String::from("DZDT"),
2107 },
2108 10 => TableCategory {
2109 parameter: String::from("Absolute Vorticity"),
2110 units: String::from("s-1"),
2111 abbrev: String::from("ABSV"),
2112 },
2113 11 => TableCategory {
2114 parameter: String::from("Absolute Divergence"),
2115 units: String::from("s-1"),
2116 abbrev: String::from("ABSD"),
2117 },
2118 12 => TableCategory {
2119 parameter: String::from("Relative Vorticity"),
2120 units: String::from("s-1"),
2121 abbrev: String::from("RELV"),
2122 },
2123 13 => TableCategory {
2124 parameter: String::from("Relative Divergence"),
2125 units: String::from("s-1"),
2126 abbrev: String::from("RELD"),
2127 },
2128 14 => TableCategory {
2129 parameter: String::from("Potential Vorticity"),
2130 units: String::from("K m2 kg-1 s-1"),
2131 abbrev: String::from("PVORT"),
2132 },
2133 15 => TableCategory {
2134 parameter: String::from("Vertical U-Component Shear"),
2135 units: String::from("s-1"),
2136 abbrev: String::from("VUCSH"),
2137 },
2138 16 => TableCategory {
2139 parameter: String::from("Vertical V-Component Shear"),
2140 units: String::from("s-1"),
2141 abbrev: String::from("VVCSH"),
2142 },
2143 17 => TableCategory {
2144 parameter: String::from("Momentum Flux, U-Component"),
2145 units: String::from("N m-2"),
2146 abbrev: String::from("UFLX"),
2147 },
2148 18 => TableCategory {
2149 parameter: String::from("Momentum Flux, V-Component"),
2150 units: String::from("N m-2"),
2151 abbrev: String::from("VFLX"),
2152 },
2153 19 => TableCategory {
2154 parameter: String::from("Wind Mixing Energy"),
2155 units: String::from("J"),
2156 abbrev: String::from("WMIXE"),
2157 },
2158 20 => TableCategory {
2159 parameter: String::from("Boundary Layer Dissipation"),
2160 units: String::from("W m-2"),
2161 abbrev: String::from("BLYDP"),
2162 },
2163 21 => TableCategory {
2164 parameter: String::from("Maximum Wind Speed"),
2165 units: String::from("m s-1"),
2166 abbrev: String::from("MAXGUST"),
2167 },
2168 22 => TableCategory {
2169 parameter: String::from("Wind Speed (Gust)"),
2170 units: String::from("m s-1"),
2171 abbrev: String::from("GUST"),
2172 },
2173 23 => TableCategory {
2174 parameter: String::from("U-Component of Wind (Gust)"),
2175 units: String::from("m s-1"),
2176 abbrev: String::from("UGUST"),
2177 },
2178 24 => TableCategory {
2179 parameter: String::from("V-Component of Wind (Gust)"),
2180 units: String::from("m s-1"),
2181 abbrev: String::from("VGUST"),
2182 },
2183 25 => TableCategory {
2184 parameter: String::from("Vertical Speed Shear"),
2185 units: String::from("s-1"),
2186 abbrev: String::from("VWSH"),
2187 },
2188 26 => TableCategory {
2189 parameter: String::from("Horizontal Momentum Flux"),
2190 units: String::from("N m-2"),
2191 abbrev: String::from("MFLX"),
2192 },
2193 27 => TableCategory {
2194 parameter: String::from("U-Component Storm Motion"),
2195 units: String::from("m s-1"),
2196 abbrev: String::from("USTM"),
2197 },
2198 28 => TableCategory {
2199 parameter: String::from("V-Component Storm Motion"),
2200 units: String::from("m s-1"),
2201 abbrev: String::from("VSTM"),
2202 },
2203 29 => TableCategory {
2204 parameter: String::from("Drag Coefficient"),
2205 units: String::from("Numeric"),
2206 abbrev: String::from("CD"),
2207 },
2208 30 => TableCategory {
2209 parameter: String::from("Frictional Velocity"),
2210 units: String::from("m s-1"),
2211 abbrev: String::from("FRICV"),
2212 },
2213 31 => TableCategory {
2214 parameter: String::from("Turbulent Diffusion Coefficient for Momentum"),
2215 units: String::from("m2 s-1"),
2216 abbrev: String::from("TDCMOM"),
2217 },
2218 32 => TableCategory {
2219 parameter: String::from("Eta Coordinate Vertical Velocity"),
2220 units: String::from("s-1"),
2221 abbrev: String::from("ETACVV"),
2222 },
2223 33 => TableCategory {
2224 parameter: String::from("Wind Fetch"),
2225 units: String::from("m"),
2226 abbrev: String::from("WINDF"),
2227 },
2228 34 => TableCategory {
2229 parameter: String::from("Normal Wind Component"),
2230 units: String::from("m s-1"),
2231 abbrev: String::from("NWIND"),
2232 },
2233 35 => TableCategory {
2234 parameter: String::from("Tangential Wind Component"),
2235 units: String::from("m s-1"),
2236 abbrev: String::from("TWIND"),
2237 },
2238 36 => TableCategory {
2239 parameter: String::from("Amplitude Function for Rossby Wave Envelope"),
2240 units: String::from("m s-1"),
2241 abbrev: String::from("AFRWE"),
2242 },
2243 37 => TableCategory {
2244 parameter: String::from("Northward Turbulent Surface Stress"),
2245 units: String::from("N m-2 s"),
2246 abbrev: String::from("NTSS"),
2247 },
2248 38 => TableCategory {
2249 parameter: String::from("Eastward Turbulent Surface Stress"),
2250 units: String::from("N m-2 s"),
2251 abbrev: String::from("ETSS"),
2252 },
2253 39 => TableCategory {
2254 parameter: String::from("Eastward Wind Tendency Due to Parameterizations"),
2255 units: String::from("m s-2"),
2256 abbrev: String::from("EWTPARM"),
2257 },
2258 40 => TableCategory {
2259 parameter: String::from("Northward Wind Tendency Due to Parameterizations"),
2260 units: String::from("m s-2"),
2261 abbrev: String::from("NWTPARM"),
2262 },
2263 41 => TableCategory {
2264 parameter: String::from("U-Component of Geostrophic Wind"),
2265 units: String::from("m s-1"),
2266 abbrev: String::from("UGWIND"),
2267 },
2268 42 => TableCategory {
2269 parameter: String::from("V-Component of Geostrophic Wind"),
2270 units: String::from("m s-1"),
2271 abbrev: String::from("VGWIND"),
2272 },
2273 43 => TableCategory {
2274 parameter: String::from("Geostrophic Wind Direction"),
2275 units: String::from("°"),
2276 abbrev: String::from("GEOWD"),
2277 },
2278 44 => TableCategory {
2279 parameter: String::from("Geostrophic Wind Speed"),
2280 units: String::from("m s-1"),
2281 abbrev: String::from("GEOWS"),
2282 },
2283 45 => TableCategory {
2284 parameter: String::from("Unbalanced Component of Divergence"),
2285 units: String::from("s-1"),
2286 abbrev: String::from("UNDIV"),
2287 },
2288 46 => TableCategory {
2289 parameter: String::from("Vorticity Advection"),
2290 units: String::from("s-2"),
2291 abbrev: String::from("VORTADV"),
2292 },
2293 47 => TableCategory {
2294 parameter: String::from("Surface Roughness for Heat"),
2295 units: String::from("m"),
2296 abbrev: String::from("SFRHEAT"),
2297 },
2298 48 => TableCategory {
2299 parameter: String::from("Surface Roughness for Moisture"),
2300 units: String::from("m"),
2301 abbrev: String::from("SFRMOIST"),
2302 },
2303 49 => TableCategory {
2304 parameter: String::from("Wind Stress"),
2305 units: String::from("N m-2"),
2306 abbrev: String::from("WINDSTR"),
2307 },
2308 50 => TableCategory {
2309 parameter: String::from("Eastward Wind Stress"),
2310 units: String::from("N m-2"),
2311 abbrev: String::from("EWINDSTR"),
2312 },
2313 51 => TableCategory {
2314 parameter: String::from("Northward Wind Stress"),
2315 units: String::from("N m-2"),
2316 abbrev: String::from("NWINDSTR"),
2317 },
2318 52 => TableCategory {
2319 parameter: String::from("U-Component of Wind Stress"),
2320 units: String::from("N m-2"),
2321 abbrev: String::from("UWINDSTR"),
2322 },
2323 53 => TableCategory {
2324 parameter: String::from("V-Component of Wind Stress"),
2325 units: String::from("N m-2"),
2326 abbrev: String::from("VWINDSTR"),
2327 },
2328 54 => TableCategory {
2329 parameter: String::from("Natural Logarithm of Surface Roughness Length for Heat"),
2330 units: String::from("m"),
2331 abbrev: String::from("NLSRLH"),
2332 },
2333 55 => TableCategory {
2334 parameter: String::from("Natural Logarithm of Surface Roughness Length for Moisture"),
2335 units: String::from("m"),
2336 abbrev: String::from("NLSRLM"),
2337 },
2338 56 => TableCategory {
2339 parameter: String::from("U-Component of Neutral Wind"),
2340 units: String::from("m s-1"),
2341 abbrev: String::from("UNWIND"),
2342 },
2343 57 => TableCategory {
2344 parameter: String::from("V-Component of Neutral Wind"),
2345 units: String::from("m s-1"),
2346 abbrev: String::from("VNWIND"),
2347 },
2348 58 => TableCategory {
2349 parameter: String::from("Magnitude of Turbulent Surface Stress"),
2350 units: String::from("N m-2"),
2351 abbrev: String::from("TSFCSTR"),
2352 },
2353 59 => TableCategory {
2354 parameter: String::from("Vertical Divergence"),
2355 units: String::from("s-1"),
2356 abbrev: String::from("VDIV"),
2357 },
2358 60 => TableCategory {
2359 parameter: String::from("Drag Thermal Coefficient"),
2360 units: String::from("Numeric"),
2361 abbrev: String::from("DTC"),
2362 },
2363 61 => TableCategory {
2364 parameter: String::from("Drag Evaporation Coefficient"),
2365 units: String::from("Numeric"),
2366 abbrev: String::from("DEC"),
2367 },
2368 62 => TableCategory {
2369 parameter: String::from("Eastward Turbulent Surface Stress"),
2370 units: String::from("N m-2"),
2371 abbrev: String::from("EASTTSS"),
2372 },
2373 63 => TableCategory {
2374 parameter: String::from("Northward Turbulent Surface Stress"),
2375 units: String::from("N m-2"),
2376 abbrev: String::from("NRTHTSS"),
2377 },
2378 192 => TableCategory {
2379 parameter: String::from("Vertical Speed Shear"),
2380 units: String::from("s-1"),
2381 abbrev: String::from("VWSH"),
2382 },
2383 193 => TableCategory {
2384 parameter: String::from("Horizontal Momentum Flux"),
2385 units: String::from("N m-2"),
2386 abbrev: String::from("MFLX"),
2387 },
2388 194 => TableCategory {
2389 parameter: String::from("U-Component Storm Motion"),
2390 units: String::from("m s-1"),
2391 abbrev: String::from("USTM"),
2392 },
2393 195 => TableCategory {
2394 parameter: String::from("V-Component Storm Motion"),
2395 units: String::from("m s-1"),
2396 abbrev: String::from("VSTM"),
2397 },
2398 196 => TableCategory {
2399 parameter: String::from("Drag Coefficient"),
2400 units: String::from("non-dim"),
2401 abbrev: String::from("CD"),
2402 },
2403 197 => TableCategory {
2404 parameter: String::from("Frictional Velocity"),
2405 units: String::from("m s-1"),
2406 abbrev: String::from("FRICV"),
2407 },
2408 198 => TableCategory {
2409 parameter: String::from("Latitude of U Wind Component of Velocity"),
2410 units: String::from("deg"),
2411 abbrev: String::from("LAUV"),
2412 },
2413 199 => TableCategory {
2414 parameter: String::from("Longitude of U Wind Component of Velocity"),
2415 units: String::from("deg"),
2416 abbrev: String::from("LOUV"),
2417 },
2418 200 => TableCategory {
2419 parameter: String::from("Latitude of V Wind Component of Velocity"),
2420 units: String::from("deg"),
2421 abbrev: String::from("LAVV"),
2422 },
2423 201 => TableCategory {
2424 parameter: String::from("Longitude of V Wind Component of Velocity"),
2425 units: String::from("deg"),
2426 abbrev: String::from("LOVV"),
2427 },
2428 202 => TableCategory {
2429 parameter: String::from("Latitude of Pressure Point"),
2430 units: String::from("deg"),
2431 abbrev: String::from("LAPP"),
2432 },
2433 203 => TableCategory {
2434 parameter: String::from("Longitude of Pressure Point"),
2435 units: String::from("deg"),
2436 abbrev: String::from("LOPP"),
2437 },
2438 204 => TableCategory {
2439 parameter: String::from("Vertical Eddy Diffusivity Heat Exchange"),
2440 units: String::from("m2 s-1"),
2441 abbrev: String::from("VEDH"),
2442 },
2443 205 => TableCategory {
2444 parameter: String::from(
2445 "Covariance between Meridional and Zonal Components of the Wind",
2446 ),
2447 units: String::from("m2 s-2"),
2448 abbrev: String::from("COVMZ"),
2449 },
2450 206 => TableCategory {
2451 parameter: String::from(
2452 "Covariance between Temperature and Zonal Components of the Wind",
2453 ),
2454 units: String::from("K*m s-1"),
2455 abbrev: String::from("COVTZ"),
2456 },
2457 207 => TableCategory {
2458 parameter: String::from(
2459 "Covariance between Temperature and Meridional Components of the Wind",
2460 ),
2461 units: String::from("K*m s-1"),
2462 abbrev: String::from("COVTM"),
2463 },
2464 208 => TableCategory {
2465 parameter: String::from("Vertical Diffusion Zonal Acceleration"),
2466 units: String::from("m s-2"),
2467 abbrev: String::from("VDFUA"),
2468 },
2469 209 => TableCategory {
2470 parameter: String::from("Vertical Diffusion Meridional Acceleration"),
2471 units: String::from("m s-2"),
2472 abbrev: String::from("VDFVA"),
2473 },
2474 210 => TableCategory {
2475 parameter: String::from("Gravity Wave Drag Zonal Acceleration"),
2476 units: String::from("m s-2"),
2477 abbrev: String::from("GWDU"),
2478 },
2479 211 => TableCategory {
2480 parameter: String::from("Gravity Wave Drag Meridional Acceleration"),
2481 units: String::from("m s-2"),
2482 abbrev: String::from("GWDV"),
2483 },
2484 212 => TableCategory {
2485 parameter: String::from("Convective Zonal Momentum Mixing Acceleration"),
2486 units: String::from("m s-2"),
2487 abbrev: String::from("CNVU"),
2488 },
2489 213 => TableCategory {
2490 parameter: String::from("Convective Meridional Momentum Mixing Acceleration"),
2491 units: String::from("m s-2"),
2492 abbrev: String::from("CNVV"),
2493 },
2494 214 => TableCategory {
2495 parameter: String::from("Tendency of Vertical Velocity"),
2496 units: String::from("m s-2"),
2497 abbrev: String::from("WTEND"),
2498 },
2499 215 => TableCategory {
2500 parameter: String::from("Omega (Dp/Dt) Divide by Density"),
2501 units: String::from("K"),
2502 abbrev: String::from("OMGALF"),
2503 },
2504 216 => TableCategory {
2505 parameter: String::from("Convective Gravity Wave Drag Zonal Acceleration"),
2506 units: String::from("m s-2"),
2507 abbrev: String::from("CNGWDU"),
2508 },
2509 217 => TableCategory {
2510 parameter: String::from("Convective Gravity Wave Drag Meridional Acceleration"),
2511 units: String::from("m s-2"),
2512 abbrev: String::from("CNGWDV"),
2513 },
2514 218 => TableCategory {
2515 parameter: String::from("Velocity Point Model Surface"),
2516 units: String::from("m"),
2517 abbrev: String::from("LMV"),
2518 },
2519 219 => TableCategory {
2520 parameter: String::from("Potential Vorticity (Mass-Weighted)"),
2521 units: String::from("1/s/m"),
2522 abbrev: String::from("PVMWW"),
2523 },
2524 220 => TableCategory {
2525 parameter: String::from("Hourly Maximum of Upward Vertical Velocity"),
2526 units: String::from("m s-1"),
2527 abbrev: String::from("MAXUVV"),
2528 },
2529 221 => TableCategory {
2530 parameter: String::from("Hourly Maximum of Downward Vertical Velocity"),
2531 units: String::from("m s-1"),
2532 abbrev: String::from("MAXDVV"),
2533 },
2534 222 => TableCategory {
2535 parameter: String::from("U Component of Hourly Maximum 10m Wind Speed"),
2536 units: String::from("m s-1"),
2537 abbrev: String::from("MAXUW"),
2538 },
2539 223 => TableCategory {
2540 parameter: String::from("V Component of Hourly Maximum 10m Wind Speed"),
2541 units: String::from("m s-1"),
2542 abbrev: String::from("MAXVW"),
2543 },
2544 224 => TableCategory {
2545 parameter: String::from("Ventilation Rate"),
2546 units: String::from("m2 s-1"),
2547 abbrev: String::from("VRATE"),
2548 },
2549 225 => TableCategory {
2550 parameter: String::from("Transport Wind Speed"),
2551 units: String::from("m s-1"),
2552 abbrev: String::from("TRWSPD"),
2553 },
2554 226 => TableCategory {
2555 parameter: String::from("Transport Wind Direction"),
2556 units: String::from("°"),
2557 abbrev: String::from("TRWDIR"),
2558 },
2559 227 => TableCategory {
2560 parameter: String::from("Earliest Reasonable Arrival Time (10% Exceedance)"),
2561 units: String::from("s"),
2562 abbrev: String::from("TOA10"),
2563 },
2564 228 => TableCategory {
2565 parameter: String::from("Most Likely Arrival Time (50% Exceedance)"),
2566 units: String::from("s"),
2567 abbrev: String::from("TOA50"),
2568 },
2569 229 => TableCategory {
2570 parameter: String::from("Most Likely Departure Time (50% Exceedance)"),
2571 units: String::from("s"),
2572 abbrev: String::from("TOD50"),
2573 },
2574 230 => TableCategory {
2575 parameter: String::from("Latest Reasonable Departure Time (90% Exceedance)"),
2576 units: String::from("s"),
2577 abbrev: String::from("TOD90"),
2578 },
2579 231 => TableCategory {
2580 parameter: String::from("Tropical Wind Direction"),
2581 units: String::from("°"),
2582 abbrev: String::from("TPWDIR"),
2583 },
2584 232 => TableCategory {
2585 parameter: String::from("Tropical Wind Speed"),
2586 units: String::from("m s-1"),
2587 abbrev: String::from("TPWSPD"),
2588 },
2589 233 => TableCategory {
2590 parameter: String::from("Inflow Based (ESFC) to 50% EL Shear Magnitude"),
2591 units: String::from("kt"),
2592 abbrev: String::from("ESHR"),
2593 },
2594 234 => TableCategory {
2595 parameter: String::from("U Component Inflow Based to 50% EL Shear Vector"),
2596 units: String::from("kt"),
2597 abbrev: String::from("UESH"),
2598 },
2599 235 => TableCategory {
2600 parameter: String::from("V Component Inflow Based to 50% EL Shear Vector"),
2601 units: String::from("kt"),
2602 abbrev: String::from("VESH"),
2603 },
2604 236 => TableCategory {
2605 parameter: String::from("U Component Bunkers Effective Right Motion"),
2606 units: String::from("kt"),
2607 abbrev: String::from("UEID"),
2608 },
2609 237 => TableCategory {
2610 parameter: String::from("V Component Bunkers Effective Right Motion"),
2611 units: String::from("kt"),
2612 abbrev: String::from("VEID"),
2613 },
2614 255 => TableCategory {
2615 parameter: String::from("Missing"),
2616 units: String::from(""),
2617 abbrev: String::from("Missing"),
2618 },
2619 64..=191 => TableCategory {
2620 parameter: String::from("Reserved"),
2621 units: String::from(""),
2622 abbrev: String::from("Reserved"),
2623 },
2624 _ => TableCategory {
2625 parameter: String::from("Reserved for Local Use"),
2626 units: String::from(""),
2627 abbrev: String::from("Reserved for Local Use"),
2628 },
2629 }
2630}
2631
2632pub fn grib2_lookup_table42_03(category: u8) -> TableCategory {
2650 match category {
2651 0 => TableCategory {
2652 parameter: String::from("Pressure"),
2653 units: String::from("Pa"),
2654 abbrev: String::from("PRES"),
2655 },
2656 1 => TableCategory {
2657 parameter: String::from("Pressure Reduced to MSL"),
2658 units: String::from("Pa"),
2659 abbrev: String::from("PRMSL"),
2660 },
2661 2 => TableCategory {
2662 parameter: String::from("Pressure Tendency"),
2663 units: String::from("Pa s-1"),
2664 abbrev: String::from("PTEND"),
2665 },
2666 3 => TableCategory {
2667 parameter: String::from("ICAO Standard Atmosphere Reference Height"),
2668 units: String::from("m"),
2669 abbrev: String::from("ICAHT"),
2670 },
2671 4 => TableCategory {
2672 parameter: String::from("Geopotential"),
2673 units: String::from("m2 s-2"),
2674 abbrev: String::from("GP"),
2675 },
2676 5 => TableCategory {
2677 parameter: String::from("Geopotential Height"),
2678 units: String::from("gpm"),
2679 abbrev: String::from("HGT"),
2680 },
2681 6 => TableCategory {
2682 parameter: String::from("Geometric Height"),
2683 units: String::from("m"),
2684 abbrev: String::from("DIST"),
2685 },
2686 7 => TableCategory {
2687 parameter: String::from("Standard Deviation of Height"),
2688 units: String::from("m"),
2689 abbrev: String::from("HSTDV"),
2690 },
2691 8 => TableCategory {
2692 parameter: String::from("Pressure Anomaly"),
2693 units: String::from("Pa"),
2694 abbrev: String::from("PRESA"),
2695 },
2696 9 => TableCategory {
2697 parameter: String::from("Geopotential Height Anomaly"),
2698 units: String::from("gpm"),
2699 abbrev: String::from("GPA"),
2700 },
2701 10 => TableCategory {
2702 parameter: String::from("Density"),
2703 units: String::from("kg m-3"),
2704 abbrev: String::from("DEN"),
2705 },
2706 11 => TableCategory {
2707 parameter: String::from("Altimeter Setting"),
2708 units: String::from("Pa"),
2709 abbrev: String::from("ALTS"),
2710 },
2711 12 => TableCategory {
2712 parameter: String::from("Thickness"),
2713 units: String::from("m"),
2714 abbrev: String::from("THICK"),
2715 },
2716 13 => TableCategory {
2717 parameter: String::from("Pressure Altitude"),
2718 units: String::from("m"),
2719 abbrev: String::from("PRESALT"),
2720 },
2721 14 => TableCategory {
2722 parameter: String::from("Density Altitude"),
2723 units: String::from("m"),
2724 abbrev: String::from("DENALT"),
2725 },
2726 15 => TableCategory {
2727 parameter: String::from("5-Wave Geopotential Height"),
2728 units: String::from("gpm"),
2729 abbrev: String::from("5WAVH"),
2730 },
2731 16 => TableCategory {
2732 parameter: String::from("Zonal Flux of Gravity Wave Stress"),
2733 units: String::from("N m-2"),
2734 abbrev: String::from("U-GWD"),
2735 },
2736 17 => TableCategory {
2737 parameter: String::from("Meridional Flux of Gravity Wave Stress"),
2738 units: String::from("N m-2"),
2739 abbrev: String::from("V-GWD"),
2740 },
2741 18 => TableCategory {
2742 parameter: String::from("Planetary Boundary Layer Height"),
2743 units: String::from("m"),
2744 abbrev: String::from("HPBL"),
2745 },
2746 19 => TableCategory {
2747 parameter: String::from("5-Wave Geopotential Height Anomaly"),
2748 units: String::from("gpm"),
2749 abbrev: String::from("5WAVA"),
2750 },
2751 20 => TableCategory {
2752 parameter: String::from("Standard Deviation of Sub-Grid Scale Orography"),
2753 units: String::from("m"),
2754 abbrev: String::from("SDSGSO"),
2755 },
2756 21 => TableCategory {
2757 parameter: String::from("Angle of Sub-Grid Scale Orography"),
2758 units: String::from("rad"),
2759 abbrev: String::from("AOSGSO"),
2760 },
2761 22 => TableCategory {
2762 parameter: String::from("Slope of Sub-Grid Scale Orography"),
2763 units: String::from("Numeric"),
2764 abbrev: String::from("SSGSO"),
2765 },
2766 23 => TableCategory {
2767 parameter: String::from("Gravity Wave Dissipation"),
2768 units: String::from("W m-2"),
2769 abbrev: String::from("GWD"),
2770 },
2771 24 => TableCategory {
2772 parameter: String::from("Anisotropy of Sub-Grid Scale Orography"),
2773 units: String::from("Numeric"),
2774 abbrev: String::from("ASGSO"),
2775 },
2776 25 => TableCategory {
2777 parameter: String::from("Natural Logarithm of Pressure in Pa"),
2778 units: String::from("Numeric"),
2779 abbrev: String::from("NLPRES"),
2780 },
2781 26 => TableCategory {
2782 parameter: String::from("Exner Pressure"),
2783 units: String::from("Numeric"),
2784 abbrev: String::from("EXPRES"),
2785 },
2786 27 => TableCategory {
2787 parameter: String::from("Updraught Mass Flux"),
2788 units: String::from("kg m-2 s-1"),
2789 abbrev: String::from("UMFLX"),
2790 },
2791 28 => TableCategory {
2792 parameter: String::from("Downdraught Mass Flux"),
2793 units: String::from("kg m-2 s-1"),
2794 abbrev: String::from("DMFLX"),
2795 },
2796 29 => TableCategory {
2797 parameter: String::from("Updraught Detrainment Rate"),
2798 units: String::from("kg m-3 s-1"),
2799 abbrev: String::from("UDRATE"),
2800 },
2801 30 => TableCategory {
2802 parameter: String::from("Downdraught Detrainment Rate"),
2803 units: String::from("kg m-3 s-1"),
2804 abbrev: String::from("DDRATE"),
2805 },
2806 31 => TableCategory {
2807 parameter: String::from("Unbalanced Component of Logarithm of Surface Pressure"),
2808 units: String::from("-"),
2809 abbrev: String::from("UCLSPRS"),
2810 },
2811 32 => TableCategory {
2812 parameter: String::from("Saturation water vapour pressure"),
2813 units: String::from("Pa"),
2814 abbrev: String::from("SWATERVP"),
2815 },
2816 33 => TableCategory {
2817 parameter: String::from("Geometric altitude above mean sea level"),
2818 units: String::from("m"),
2819 abbrev: String::from("GAMSL"),
2820 },
2821 34 => TableCategory {
2822 parameter: String::from("Geometric height above ground level"),
2823 units: String::from("m"),
2824 abbrev: String::from("GHAGRD"),
2825 },
2826 35 => TableCategory {
2827 parameter: String::from("Column integrated divergence of total mass flux"),
2828 units: String::from("kg m-2 s-1"),
2829 abbrev: String::from("CDTMF"),
2830 },
2831 36 => TableCategory {
2832 parameter: String::from("Column integrated eastward total mass flux"),
2833 units: String::from("kg m-2 s-1"),
2834 abbrev: String::from("CETMF"),
2835 },
2836 37 => TableCategory {
2837 parameter: String::from("Column integrated northward total mass flux"),
2838 units: String::from("kg m-2 s-1"),
2839 abbrev: String::from("CNTMF"),
2840 },
2841 38 => TableCategory {
2842 parameter: String::from("Standard deviation of filtered subgrid orography"),
2843 units: String::from("m"),
2844 abbrev: String::from("SDFSO"),
2845 },
2846 39 => TableCategory {
2847 parameter: String::from("Column integrated mass of atmosphere"),
2848 units: String::from("kg m-2 s-1"),
2849 abbrev: String::from("CMATMOS"),
2850 },
2851 40 => TableCategory {
2852 parameter: String::from("Column integrated eastward geopotential flux"),
2853 units: String::from("W m-1"),
2854 abbrev: String::from("CEGFLUX"),
2855 },
2856 41 => TableCategory {
2857 parameter: String::from("Column integrated northward geopotential flux"),
2858 units: String::from("W m-1"),
2859 abbrev: String::from("CNGFLUX"),
2860 },
2861 42 => TableCategory {
2862 parameter: String::from("Column integrated divergence of water geopotential flux"),
2863 units: String::from("W m-2"),
2864 abbrev: String::from("CDWGFLUX"),
2865 },
2866 43 => TableCategory {
2867 parameter: String::from("Column integrated divergence of geopotential flux"),
2868 units: String::from("W m-2"),
2869 abbrev: String::from("CDGFLUX"),
2870 },
2871 44 => TableCategory {
2872 parameter: String::from("Height of zero-degree wet-bulb temperature"),
2873 units: String::from("m"),
2874 abbrev: String::from("HWBT"),
2875 },
2876 45 => TableCategory {
2877 parameter: String::from("Height of one-degree wet-bulb temperature"),
2878 units: String::from("m"),
2879 abbrev: String::from("WOBT"),
2880 },
2881 46 => TableCategory {
2882 parameter: String::from("Pressure departure from hydrostatic state"),
2883 units: String::from("Pa"),
2884 abbrev: String::from("PRESDHS"),
2885 },
2886 192 => TableCategory {
2887 parameter: String::from("MSLP (Eta model reduction)"),
2888 units: String::from("Pa"),
2889 abbrev: String::from("MSLET"),
2890 },
2891 193 => TableCategory {
2892 parameter: String::from("5-Wave Geopotential Height"),
2893 units: String::from("gpm"),
2894 abbrev: String::from("5WAVH"),
2895 },
2896 194 => TableCategory {
2897 parameter: String::from("Zonal Flux of Gravity Wave Stress"),
2898 units: String::from("N m-2"),
2899 abbrev: String::from("U-GWD"),
2900 },
2901 195 => TableCategory {
2902 parameter: String::from("Meridional Flux of Gravity Wave Stress"),
2903 units: String::from("N m-2"),
2904 abbrev: String::from("V-GWD"),
2905 },
2906 196 => TableCategory {
2907 parameter: String::from("Planetary Boundary Layer Height"),
2908 units: String::from("m"),
2909 abbrev: String::from("HPBL"),
2910 },
2911 197 => TableCategory {
2912 parameter: String::from("5-Wave Geopotential Height Anomaly"),
2913 units: String::from("gpm"),
2914 abbrev: String::from("5WAVA"),
2915 },
2916 198 => TableCategory {
2917 parameter: String::from("MSLP (MAPS System Reduction)"),
2918 units: String::from("Pa"),
2919 abbrev: String::from("MSLMA"),
2920 },
2921 199 => TableCategory {
2922 parameter: String::from("3-hr pressure tendency (Std. Atmos. Reduction)"),
2923 units: String::from("Pa s-1"),
2924 abbrev: String::from("TSLSA"),
2925 },
2926 200 => TableCategory {
2927 parameter: String::from("Pressure of level from which parcel was lifted"),
2928 units: String::from("Pa"),
2929 abbrev: String::from("PLPL"),
2930 },
2931 201 => TableCategory {
2932 parameter: String::from("X-gradient of Log Pressure"),
2933 units: String::from("m-1"),
2934 abbrev: String::from("LPSX"),
2935 },
2936 202 => TableCategory {
2937 parameter: String::from("Y-gradient of Log Pressure"),
2938 units: String::from("m-1"),
2939 abbrev: String::from("LPSY"),
2940 },
2941 203 => TableCategory {
2942 parameter: String::from("X-gradient of Height"),
2943 units: String::from("m-1"),
2944 abbrev: String::from("HGTX"),
2945 },
2946 204 => TableCategory {
2947 parameter: String::from("Y-gradient of Height"),
2948 units: String::from("m-1"),
2949 abbrev: String::from("HGTY"),
2950 },
2951 205 => TableCategory {
2952 parameter: String::from("Layer Thickness"),
2953 units: String::from("m"),
2954 abbrev: String::from("LAYTH"),
2955 },
2956 206 => TableCategory {
2957 parameter: String::from("Natural Log of Surface Pressure"),
2958 units: String::from("ln (kPa)"),
2959 abbrev: String::from("NLGSP"),
2960 },
2961 207 => TableCategory {
2962 parameter: String::from("Convective updraft mass flux"),
2963 units: String::from("kg m-2 s-1"),
2964 abbrev: String::from("CNVUMF"),
2965 },
2966 208 => TableCategory {
2967 parameter: String::from("Convective downdraft mass flux"),
2968 units: String::from("kg m-2 s-1"),
2969 abbrev: String::from("CNVDMF"),
2970 },
2971 209 => TableCategory {
2972 parameter: String::from("Convective detrainment mass flux"),
2973 units: String::from("kg m-2 s-1"),
2974 abbrev: String::from("CNVDEMF"),
2975 },
2976 210 => TableCategory {
2977 parameter: String::from("Mass Point Model Surface"),
2978 units: String::from(""),
2979 abbrev: String::from("LMH"),
2980 },
2981 211 => TableCategory {
2982 parameter: String::from("Geopotential Height (nearest grid point)"),
2983 units: String::from("gpm"),
2984 abbrev: String::from("HGTN"),
2985 },
2986 212 => TableCategory {
2987 parameter: String::from("Pressure (nearest grid point)"),
2988 units: String::from("Pa"),
2989 abbrev: String::from("PRESN"),
2990 },
2991 213 => TableCategory {
2992 parameter: String::from("Orographic Convexity"),
2993 units: String::from(""),
2994 abbrev: String::from("ORCONV"),
2995 },
2996 214 => TableCategory {
2997 parameter: String::from("Orographic Asymmetry, W Component"),
2998 units: String::from(""),
2999 abbrev: String::from("ORASW"),
3000 },
3001 215 => TableCategory {
3002 parameter: String::from("Orographic Asymmetry, S Component"),
3003 units: String::from(""),
3004 abbrev: String::from("ORASS"),
3005 },
3006 216 => TableCategory {
3007 parameter: String::from("Orographic Asymmetry, SW Component"),
3008 units: String::from(""),
3009 abbrev: String::from("ORASSW"),
3010 },
3011 217 => TableCategory {
3012 parameter: String::from("Orographic Asymmetry, NW Component"),
3013 units: String::from(""),
3014 abbrev: String::from("ORASNW"),
3015 },
3016 218 => TableCategory {
3017 parameter: String::from("Orographic Length Scale, W Component"),
3018 units: String::from(""),
3019 abbrev: String::from("ORLSW"),
3020 },
3021 219 => TableCategory {
3022 parameter: String::from("Orographic Length Scale, S Component"),
3023 units: String::from(""),
3024 abbrev: String::from("ORLSS"),
3025 },
3026 220 => TableCategory {
3027 parameter: String::from("Orographic Length Scale, SW Component"),
3028 units: String::from(""),
3029 abbrev: String::from("ORLSSW"),
3030 },
3031 221 => TableCategory {
3032 parameter: String::from("Orographic Length Scale, NW Component"),
3033 units: String::from(""),
3034 abbrev: String::from("ORLSNW"),
3035 },
3036 222 => TableCategory {
3037 parameter: String::from("Effective Surface Height"),
3038 units: String::from("m"),
3039 abbrev: String::from("EFSH"),
3040 },
3041 255 => TableCategory {
3042 parameter: String::from("Missing"),
3043 units: String::from(""),
3044 abbrev: String::from("Missing"),
3045 },
3046 47..=191 => TableCategory {
3047 parameter: String::from("Reserved"),
3048 units: String::from(""),
3049 abbrev: String::from("Reserved"),
3050 },
3051 _ => TableCategory {
3052 parameter: String::from("Reserved for Local Use"),
3053 units: String::from(""),
3054 abbrev: String::from("Reserved for Local Use"),
3055 },
3056 }
3057}
3058
3059pub fn grib2_lookup_table42_04(category: u8) -> TableCategory {
3077 match category {
3078 0 => TableCategory {
3079 parameter: String::from("Net Short-Wave Radiation Flux (Surface)"),
3080 units: String::from("W m-2"),
3081 abbrev: String::from("NSWRS"),
3082 },
3083 1 => TableCategory {
3084 parameter: String::from("Net Short-Wave Radiation Flux (Top of Atmosphere)"),
3085 units: String::from("W m-2"),
3086 abbrev: String::from("NSWRT"),
3087 },
3088 2 => TableCategory {
3089 parameter: String::from("Short-Wave Radiation Flux"),
3090 units: String::from("W m-2"),
3091 abbrev: String::from("SWAVR"),
3092 },
3093 3 => TableCategory {
3094 parameter: String::from("Global Radiation Flux"),
3095 units: String::from("W m-2"),
3096 abbrev: String::from("GRAD"),
3097 },
3098 4 => TableCategory {
3099 parameter: String::from("Brightness Temperature"),
3100 units: String::from("K"),
3101 abbrev: String::from("BRTMP"),
3102 },
3103 5 => TableCategory {
3104 parameter: String::from("Radiance (with respect to wave number)"),
3105 units: String::from("W m-1 sr-1"),
3106 abbrev: String::from("LWRAD"),
3107 },
3108 6 => TableCategory {
3109 parameter: String::from("Radiance (with respect to wavelength)"),
3110 units: String::from("W m-3 sr-1"),
3111 abbrev: String::from("SWRAD"),
3112 },
3113 7 => TableCategory {
3114 parameter: String::from("Downward Short-Wave Radiation Flux"),
3115 units: String::from("W m-2"),
3116 abbrev: String::from("DSWRF"),
3117 },
3118 8 => TableCategory {
3119 parameter: String::from("Upward Short-Wave Radiation Flux"),
3120 units: String::from("W m-2"),
3121 abbrev: String::from("USWRF"),
3122 },
3123 9 => TableCategory {
3124 parameter: String::from("Net Short Wave Radiation Flux"),
3125 units: String::from("W m-2"),
3126 abbrev: String::from("NSWRF"),
3127 },
3128 10 => TableCategory {
3129 parameter: String::from("Photosynthetically Active Radiation"),
3130 units: String::from("W m-2"),
3131 abbrev: String::from("PHOTAR"),
3132 },
3133 11 => TableCategory {
3134 parameter: String::from("Net Short-Wave Radiation Flux, Clear Sky"),
3135 units: String::from("W m-2"),
3136 abbrev: String::from("NSWRFCS"),
3137 },
3138 12 => TableCategory {
3139 parameter: String::from("Downward UV Radiation"),
3140 units: String::from("W m-2"),
3141 abbrev: String::from("DWUVR"),
3142 },
3143 13 => TableCategory {
3144 parameter: String::from("Direct Short Wave Radiation Flux"),
3145 units: String::from("W m-2"),
3146 abbrev: String::from("DSWRFLX"),
3147 },
3148 14 => TableCategory {
3149 parameter: String::from("Diffuse Short Wave Radiation Flux"),
3150 units: String::from("W m-2"),
3151 abbrev: String::from("DIFSWRF"),
3152 },
3153 15 => TableCategory {
3154 parameter: String::from(
3155 "Upward UV radiation emitted/reflected from the Earth's surface",
3156 ),
3157 units: String::from("W m-2"),
3158 abbrev: String::from("UVVEARTH"),
3159 },
3160 50 => TableCategory {
3161 parameter: String::from("UV Index (Under Clear Sky)"),
3162 units: String::from("Numeric"),
3163 abbrev: String::from("UVIUCS"),
3164 },
3165 51 => TableCategory {
3166 parameter: String::from("UV Index"),
3167 units: String::from("Numeric"),
3168 abbrev: String::from("UVI"),
3169 },
3170 52 => TableCategory {
3171 parameter: String::from("Downward Short-Wave Radiation Flux, Clear Sky"),
3172 units: String::from("W m-2"),
3173 abbrev: String::from("DSWRFCS"),
3174 },
3175 53 => TableCategory {
3176 parameter: String::from("Upward Short-Wave Radiation Flux, Clear Sky"),
3177 units: String::from("W m-2"),
3178 abbrev: String::from("USWRFCS"),
3179 },
3180 54 => TableCategory {
3181 parameter: String::from("Direct normal short-wave radiation flux"),
3182 units: String::from("W m-2"),
3183 abbrev: String::from("DNSWRFLX"),
3184 },
3185 55 => TableCategory {
3186 parameter: String::from("UV visible albedo for diffuse radiation"),
3187 units: String::from("%"),
3188 abbrev: String::from("UVALBDIF"),
3189 },
3190 56 => TableCategory {
3191 parameter: String::from("UV visible albedo for direct radiation"),
3192 units: String::from("%"),
3193 abbrev: String::from("UVALBDIR"),
3194 },
3195 57 => TableCategory {
3196 parameter: String::from("UV visible albedo for direct radiation, geometric component"),
3197 units: String::from("%"),
3198 abbrev: String::from("UBALBDIRG"),
3199 },
3200 58 => TableCategory {
3201 parameter: String::from("UV visible albedo for direct radiation, isotropic component"),
3202 units: String::from("%"),
3203 abbrev: String::from("UVALBDIRI"),
3204 },
3205 59 => TableCategory {
3206 parameter: String::from("UV visible albedo for direct radiation, volumetric component"),
3207 units: String::from("%"),
3208 abbrev: String::from("UVBDIRV"),
3209 },
3210 60 => TableCategory {
3211 parameter: String::from("Photosynthetically active radiation flux, clear sky"),
3212 units: String::from("W m-2"),
3213 abbrev: String::from("PHOARFCS"),
3214 },
3215 61 => TableCategory {
3216 parameter: String::from("Direct short-wave radiation flux, clear sky"),
3217 units: String::from("W m-2"),
3218 abbrev: String::from("DSWRFLXCS"),
3219 },
3220 192 => TableCategory {
3221 parameter: String::from("Downward Short-Wave Radiation Flux"),
3222 units: String::from("W m-2"),
3223 abbrev: String::from("DSWRF"),
3224 },
3225 193 => TableCategory {
3226 parameter: String::from("Upward Short-Wave Radiation Flux"),
3227 units: String::from("W m-2"),
3228 abbrev: String::from("USWRF"),
3229 },
3230 194 => TableCategory {
3231 parameter: String::from("UV-B Downward Solar Flux"),
3232 units: String::from("W m-2"),
3233 abbrev: String::from("DUVB"),
3234 },
3235 195 => TableCategory {
3236 parameter: String::from("Clear sky UV-B Downward Solar Flux"),
3237 units: String::from("W m-2"),
3238 abbrev: String::from("CDUVB"),
3239 },
3240 196 => TableCategory {
3241 parameter: String::from("Clear Sky Downward Solar Flux"),
3242 units: String::from("W m-2"),
3243 abbrev: String::from("CSDSF"),
3244 },
3245 197 => TableCategory {
3246 parameter: String::from("Solar Radiative Heating Rate"),
3247 units: String::from("K s-1"),
3248 abbrev: String::from("SWHR"),
3249 },
3250 198 => TableCategory {
3251 parameter: String::from("Clear Sky Upward Solar Flux"),
3252 units: String::from("W m-2"),
3253 abbrev: String::from("CSUSF"),
3254 },
3255 199 => TableCategory {
3256 parameter: String::from("Cloud Forcing Net Solar Flux"),
3257 units: String::from("W m-2"),
3258 abbrev: String::from("CFNSF"),
3259 },
3260 200 => TableCategory {
3261 parameter: String::from("Visible Beam Downward Solar Flux"),
3262 units: String::from("W m-2"),
3263 abbrev: String::from("VBDSF"),
3264 },
3265 201 => TableCategory {
3266 parameter: String::from("Visible Diffuse Downward Solar Flux"),
3267 units: String::from("W m-2"),
3268 abbrev: String::from("VDDSF"),
3269 },
3270 202 => TableCategory {
3271 parameter: String::from("Near IR Beam Downward Solar Flux"),
3272 units: String::from("W m-2"),
3273 abbrev: String::from("NBDSF"),
3274 },
3275 203 => TableCategory {
3276 parameter: String::from("Near IR Diffuse Downward Solar Flux"),
3277 units: String::from("W m-2"),
3278 abbrev: String::from("NDDSF"),
3279 },
3280 204 => TableCategory {
3281 parameter: String::from("Downward Total Radiation Flux"),
3282 units: String::from("W m-2"),
3283 abbrev: String::from("DTRF"),
3284 },
3285 205 => TableCategory {
3286 parameter: String::from("Upward Total Radiation Flux"),
3287 units: String::from("W m-2"),
3288 abbrev: String::from("UTRF"),
3289 },
3290 255 => TableCategory {
3291 parameter: String::from("Missing"),
3292 units: String::from(""),
3293 abbrev: String::from("Missing"),
3294 },
3295 16..=49 => TableCategory {
3296 parameter: String::from("Reserved"),
3297 units: String::from(""),
3298 abbrev: String::from("Reserved"),
3299 },
3300 62..=191 => TableCategory {
3301 parameter: String::from("Reserved"),
3302 units: String::from(""),
3303 abbrev: String::from("Reserved"),
3304 },
3305 _ => TableCategory {
3306 parameter: String::from("Reserved for Local Use"),
3307 units: String::from(""),
3308 abbrev: String::from("Reserved for Local Use"),
3309 },
3310 }
3311}
3312
3313pub fn grib2_lookup_table42_05(category: u8) -> TableCategory {
3331 match category {
3332 0 => TableCategory {
3333 parameter: String::from("Net Long-Wave Radiation Flux (Surface)"),
3334 units: String::from("W m-2"),
3335 abbrev: String::from("NLWRS"),
3336 },
3337 1 => TableCategory {
3338 parameter: String::from("Net Long-Wave Radiation Flux (Top of Atmosphere)"),
3339 units: String::from("W m-2"),
3340 abbrev: String::from("NLWRT"),
3341 },
3342 2 => TableCategory {
3343 parameter: String::from("Long-Wave Radiation Flux"),
3344 units: String::from("W m-2"),
3345 abbrev: String::from("LWAVR"),
3346 },
3347 3 => TableCategory {
3348 parameter: String::from("Downward Long-Wave Rad. Flux"),
3349 units: String::from("W m-2"),
3350 abbrev: String::from("DLWRF"),
3351 },
3352 4 => TableCategory {
3353 parameter: String::from("Upward Long-Wave Rad. Flux"),
3354 units: String::from("W m-2"),
3355 abbrev: String::from("ULWRF"),
3356 },
3357 5 => TableCategory {
3358 parameter: String::from("Net Long-Wave Radiation Flux"),
3359 units: String::from("W m-2"),
3360 abbrev: String::from("NLWRF"),
3361 },
3362 6 => TableCategory {
3363 parameter: String::from("Net Long-Wave Radiation Flux, Clear Sky"),
3364 units: String::from("W m-2"),
3365 abbrev: String::from("NLWRCS"),
3366 },
3367 7 => TableCategory {
3368 parameter: String::from("Brightness Temperature"),
3369 units: String::from("K"),
3370 abbrev: String::from("BRTEMP"),
3371 },
3372 8 => TableCategory {
3373 parameter: String::from("Downward Long-Wave Radiation Flux, Clear Sky"),
3374 units: String::from("W m-2"),
3375 abbrev: String::from("DLWRFCS"),
3376 },
3377 9 => TableCategory {
3378 parameter: String::from("Near IR albedo for diffuse radiation"),
3379 units: String::from("%"),
3380 abbrev: String::from("NIRALBDIF"),
3381 },
3382 10 => TableCategory {
3383 parameter: String::from("Near IR albedo for direct radiation"),
3384 units: String::from("%"),
3385 abbrev: String::from("NIRALBDIR"),
3386 },
3387 11 => TableCategory {
3388 parameter: String::from("Near IR albedo for direct radiation, geometric component"),
3389 units: String::from("%"),
3390 abbrev: String::from("NIRALBDIRG"),
3391 },
3392 12 => TableCategory {
3393 parameter: String::from("Near IR albedo for direct radiation, isotropic component"),
3394 units: String::from("%"),
3395 abbrev: String::from("NIRALBDIRI"),
3396 },
3397 13 => TableCategory {
3398 parameter: String::from("Near IR albedo for direct radiation, volumetric component"),
3399 units: String::from("%"),
3400 abbrev: String::from("NIRALBDIRV"),
3401 },
3402 192 => TableCategory {
3403 parameter: String::from("Downward Long-Wave Rad. Flux"),
3404 units: String::from("W m-2"),
3405 abbrev: String::from("DLWRF"),
3406 },
3407 193 => TableCategory {
3408 parameter: String::from("Upward Long-Wave Rad. Flux"),
3409 units: String::from("W m-2"),
3410 abbrev: String::from("ULWRF"),
3411 },
3412 194 => TableCategory {
3413 parameter: String::from("Long-Wave Radiative Heating Rate"),
3414 units: String::from("K s-1"),
3415 abbrev: String::from("LWHR"),
3416 },
3417 195 => TableCategory {
3418 parameter: String::from("Clear Sky Upward Long Wave Flux"),
3419 units: String::from("W m-2"),
3420 abbrev: String::from("CSULF"),
3421 },
3422 196 => TableCategory {
3423 parameter: String::from("Clear Sky Downward Long Wave Flux"),
3424 units: String::from("W m-2"),
3425 abbrev: String::from("CSDLF"),
3426 },
3427 197 => TableCategory {
3428 parameter: String::from("Cloud Forcing Net Long Wave Flux"),
3429 units: String::from("W m-2"),
3430 abbrev: String::from("CFNLF"),
3431 },
3432 255 => TableCategory {
3433 parameter: String::from("Missing"),
3434 units: String::from(""),
3435 abbrev: String::from("Missing"),
3436 },
3437 14..=191 => TableCategory {
3438 parameter: String::from("Reserved"),
3439 units: String::from(""),
3440 abbrev: String::from("Reserved"),
3441 },
3442 _ => TableCategory {
3443 parameter: String::from("Reserved for Local Use"),
3444 units: String::from(""),
3445 abbrev: String::from("Reserved for Local Use"),
3446 },
3447 }
3448}
3449
3450pub fn grib2_lookup_table42_06(category: u8) -> TableCategory {
3474 match category {
3475 0 => TableCategory {
3476 parameter: String::from("Cloud Ice"),
3477 units: String::from("kg m-2"),
3478 abbrev: String::from("CICE"),
3479 },
3480 1 => TableCategory {
3481 parameter: String::from("Total Cloud Cover"),
3482 units: String::from("%"),
3483 abbrev: String::from("TCDC"),
3484 },
3485 2 => TableCategory {
3486 parameter: String::from("Convective Cloud Cover"),
3487 units: String::from("%"),
3488 abbrev: String::from("CDCON"),
3489 },
3490 3 => TableCategory {
3491 parameter: String::from("Low Cloud Cover"),
3492 units: String::from("%"),
3493 abbrev: String::from("LCDC"),
3494 },
3495 4 => TableCategory {
3496 parameter: String::from("Medium Cloud Cover"),
3497 units: String::from("%"),
3498 abbrev: String::from("MCDC"),
3499 },
3500 5 => TableCategory {
3501 parameter: String::from("High Cloud Cover"),
3502 units: String::from("%"),
3503 abbrev: String::from("HCDC"),
3504 },
3505 6 => TableCategory {
3506 parameter: String::from("Cloud Water"),
3507 units: String::from("kg m-2"),
3508 abbrev: String::from("CWAT"),
3509 },
3510 7 => TableCategory {
3511 parameter: String::from("Cloud Amount"),
3512 units: String::from("%"),
3513 abbrev: String::from("CDCA"),
3514 },
3515 8 => TableCategory {
3516 parameter: String::from("Cloud Type"),
3517 units: String::from("See Table 4.203"),
3518 abbrev: String::from("CDCT"),
3519 },
3520 9 => TableCategory {
3521 parameter: String::from("Thunderstorm Maximum Tops"),
3522 units: String::from("m"),
3523 abbrev: String::from("TMAXT"),
3524 },
3525 10 => TableCategory {
3526 parameter: String::from("Thunderstorm Coverage"),
3527 units: String::from("See Table 4.204"),
3528 abbrev: String::from("THUNC"),
3529 },
3530 11 => TableCategory {
3531 parameter: String::from("Cloud Base"),
3532 units: String::from("m"),
3533 abbrev: String::from("CDCB"),
3534 },
3535 12 => TableCategory {
3536 parameter: String::from("Cloud Top"),
3537 units: String::from("m"),
3538 abbrev: String::from("CDCTOP"),
3539 },
3540 13 => TableCategory {
3541 parameter: String::from("Ceiling"),
3542 units: String::from("m"),
3543 abbrev: String::from("CEIL"),
3544 },
3545 14 => TableCategory {
3546 parameter: String::from("Non-Convective Cloud Cover"),
3547 units: String::from("%"),
3548 abbrev: String::from("CDLYR"),
3549 },
3550 15 => TableCategory {
3551 parameter: String::from("Cloud Work Function"),
3552 units: String::from("J kg-1"),
3553 abbrev: String::from("CWORK"),
3554 },
3555 16 => TableCategory {
3556 parameter: String::from("Convective Cloud Efficiency"),
3557 units: String::from("Proportion"),
3558 abbrev: String::from("CUEFI"),
3559 },
3560 17 => TableCategory {
3561 parameter: String::from("Total Condensate"),
3562 units: String::from("kg kg-1"),
3563 abbrev: String::from("TCONDO"),
3564 }, 18 => TableCategory {
3566 parameter: String::from("Total Column-Integrated Cloud Water"),
3567 units: String::from("kg m-2"),
3568 abbrev: String::from("TCOLWO"),
3569 }, 19 => TableCategory {
3571 parameter: String::from("Total Column-Integrated Cloud Ice"),
3572 units: String::from("kg m-2"),
3573 abbrev: String::from("TCOLIO"),
3574 }, 20 => TableCategory {
3576 parameter: String::from("Total Column-Integrated Condensate"),
3577 units: String::from("kg m-2"),
3578 abbrev: String::from("TCOLC"),
3579 }, 21 => TableCategory {
3581 parameter: String::from("Ice fraction of total condensate"),
3582 units: String::from("Proportion"),
3583 abbrev: String::from("FICE"),
3584 },
3585 22 => TableCategory {
3586 parameter: String::from("Cloud Cover"),
3587 units: String::from("%"),
3588 abbrev: String::from("CDCC"),
3589 },
3590 23 => TableCategory {
3591 parameter: String::from("Cloud Ice Mixing Ratio"),
3592 units: String::from("kg kg-1"),
3593 abbrev: String::from("CDCIMR"),
3594 }, 24 => TableCategory {
3596 parameter: String::from("Sunshine"),
3597 units: String::from("Numeric"),
3598 abbrev: String::from("SUNS"),
3599 },
3600 25 => TableCategory {
3601 parameter: String::from("Horizontal Extent of Cumulonimbus (CB)"),
3602 units: String::from("%"),
3603 abbrev: String::from("CBHE"),
3604 },
3605 26 => TableCategory {
3606 parameter: String::from("Height of Convective Cloud Base"),
3607 units: String::from("m"),
3608 abbrev: String::from("HCONCB"),
3609 },
3610 27 => TableCategory {
3611 parameter: String::from("Height of Convective Cloud Top"),
3612 units: String::from("m"),
3613 abbrev: String::from("HCONCT"),
3614 },
3615 28 => TableCategory {
3616 parameter: String::from("Number Concentration of Cloud Droplets"),
3617 units: String::from("kg-1"),
3618 abbrev: String::from("NCONCD"),
3619 },
3620 29 => TableCategory {
3621 parameter: String::from("Number Concentration of Cloud Ice"),
3622 units: String::from("kg-1"),
3623 abbrev: String::from("NCCICE"),
3624 },
3625 30 => TableCategory {
3626 parameter: String::from("Number Density of Cloud Droplets"),
3627 units: String::from("m-3"),
3628 abbrev: String::from("NDENCD"),
3629 },
3630 31 => TableCategory {
3631 parameter: String::from("Number Density of Cloud Ice"),
3632 units: String::from("m-3"),
3633 abbrev: String::from("NDCICE"),
3634 },
3635 32 => TableCategory {
3636 parameter: String::from("Fraction of Cloud Cover"),
3637 units: String::from("Numeric"),
3638 abbrev: String::from("FRACCC"),
3639 },
3640 33 => TableCategory {
3641 parameter: String::from("Sunshine Duration"),
3642 units: String::from("s"),
3643 abbrev: String::from("SUNSD"),
3644 },
3645 34 => TableCategory {
3646 parameter: String::from("Surface Long Wave Effective Total Cloudiness"),
3647 units: String::from("Numeric"),
3648 abbrev: String::from("SLWTC"),
3649 },
3650 35 => TableCategory {
3651 parameter: String::from("Surface Short Wave Effective Total Cloudiness"),
3652 units: String::from("Numeric"),
3653 abbrev: String::from("SSWTC"),
3654 },
3655 36 => TableCategory {
3656 parameter: String::from("Fraction of Stratiform Precipitation Cover"),
3657 units: String::from("Proportion"),
3658 abbrev: String::from("FSTRPC"),
3659 },
3660 37 => TableCategory {
3661 parameter: String::from("Fraction of Convective Precipitation Cover"),
3662 units: String::from("Proportion"),
3663 abbrev: String::from("FCONPC"),
3664 },
3665 38 => TableCategory {
3666 parameter: String::from("Mass Density of Cloud Droplets"),
3667 units: String::from("kg m-3"),
3668 abbrev: String::from("MASSDCD"),
3669 },
3670 39 => TableCategory {
3671 parameter: String::from("Mass Density of Cloud Ice"),
3672 units: String::from("kg m-3"),
3673 abbrev: String::from("MASSDCI"),
3674 },
3675 40 => TableCategory {
3676 parameter: String::from("Mass Density of Convective Cloud Water Droplets"),
3677 units: String::from("kg m-3"),
3678 abbrev: String::from("MDCCWD"),
3679 },
3680 47 => TableCategory {
3681 parameter: String::from("Volume Fraction of Cloud Water Droplets"),
3682 units: String::from("Numeric"),
3683 abbrev: String::from("VFRCWD"),
3684 }, 48 => TableCategory {
3686 parameter: String::from("Volume Fraction of Cloud Ice Particles"),
3687 units: String::from("Numeric"),
3688 abbrev: String::from("VFRCICE"),
3689 }, 49 => TableCategory {
3691 parameter: String::from("Volume Fraction of Cloud (Ice and/or Water)"),
3692 units: String::from("Numeric"),
3693 abbrev: String::from("VFRCIW"),
3694 }, 50 => TableCategory {
3696 parameter: String::from("Fog"),
3697 units: String::from("%"),
3698 abbrev: String::from("FOG"),
3699 }, 51 => TableCategory {
3701 parameter: String::from("Sunshine Duration Fraction"),
3702 units: String::from("Proportion"),
3703 abbrev: String::from("SUNFRAC"),
3704 }, 192 => TableCategory {
3706 parameter: String::from("Non-Convective Cloud Cover"),
3707 units: String::from("%"),
3708 abbrev: String::from("CDLYR"),
3709 },
3710 193 => TableCategory {
3711 parameter: String::from("Cloud Work Function"),
3712 units: String::from("J kg-1"),
3713 abbrev: String::from("CWORK"),
3714 },
3715 194 => TableCategory {
3716 parameter: String::from("Convective Cloud Efficiency"),
3717 units: String::from("non-dim"),
3718 abbrev: String::from("CUEFI"),
3719 },
3720 195 => TableCategory {
3721 parameter: String::from("Total Condensate"),
3722 units: String::from("kg kg-1"),
3723 abbrev: String::from("TCOND"),
3724 },
3725 196 => TableCategory {
3726 parameter: String::from("Total Column-Integrated Cloud Water"),
3727 units: String::from("kg m-2"),
3728 abbrev: String::from("TCOLW"),
3729 },
3730 197 => TableCategory {
3731 parameter: String::from("Total Column-Integrated Cloud Ice"),
3732 units: String::from("kg m-2"),
3733 abbrev: String::from("TCOLI"),
3734 },
3735 198 => TableCategory {
3736 parameter: String::from("Total Column-Integrated Condensate"),
3737 units: String::from("kg m-2"),
3738 abbrev: String::from("TCOLC"),
3739 },
3740 199 => TableCategory {
3741 parameter: String::from("Ice fraction of total condensate"),
3742 units: String::from("non-dim"),
3743 abbrev: String::from("FICE"),
3744 },
3745 200 => TableCategory {
3746 parameter: String::from("Convective Cloud Mass Flux"),
3747 units: String::from("Pa s-1"),
3748 abbrev: String::from("MFLUX"),
3749 },
3750 201 => TableCategory {
3751 parameter: String::from("Sunshine Duration"),
3752 units: String::from("s"),
3753 abbrev: String::from("SUNSD"),
3754 },
3755 255 => TableCategory {
3756 parameter: String::from("Missing"),
3757 units: String::from(""),
3758 abbrev: String::from("Missing"),
3759 },
3760 41..=46 => TableCategory {
3761 parameter: String::from("Reserved"),
3762 units: String::from(""),
3763 abbrev: String::from("Reserved"),
3764 },
3765 52..=191 => TableCategory {
3766 parameter: String::from("Reserved"),
3767 units: String::from(""),
3768 abbrev: String::from("Reserved"),
3769 },
3770 _ => TableCategory {
3771 parameter: String::from("Reserved for Local Use"),
3772 units: String::from(""),
3773 abbrev: String::from("Reserved for Local Use"),
3774 },
3775 }
3776}
3777
3778pub fn grib2_lookup_table42_07(category: u8) -> TableCategory {
3799 match category {
3800 0 => TableCategory {
3801 parameter: String::from("Parcel Lifted Index (to 500 hPa)"),
3802 units: String::from("K"),
3803 abbrev: String::from("PLI"),
3804 },
3805 1 => TableCategory {
3806 parameter: String::from("Best Lifted Index (to 500 hPa)"),
3807 units: String::from("K"),
3808 abbrev: String::from("BLI"),
3809 },
3810 2 => TableCategory {
3811 parameter: String::from("K Index"),
3812 units: String::from("K"),
3813 abbrev: String::from("KX"),
3814 },
3815 3 => TableCategory {
3816 parameter: String::from("KO Index"),
3817 units: String::from("K"),
3818 abbrev: String::from("KOX"),
3819 },
3820 4 => TableCategory {
3821 parameter: String::from("Total Totals Index"),
3822 units: String::from("K"),
3823 abbrev: String::from("TOTALX"),
3824 },
3825 5 => TableCategory {
3826 parameter: String::from("Sweat Index"),
3827 units: String::from("Numeric"),
3828 abbrev: String::from("SX"),
3829 },
3830 6 => TableCategory {
3831 parameter: String::from("Convective Available Potential Energy"),
3832 units: String::from("J kg-1"),
3833 abbrev: String::from("CAPE"),
3834 },
3835 7 => TableCategory {
3836 parameter: String::from("Convective Inhibition"),
3837 units: String::from("J kg-1"),
3838 abbrev: String::from("CIN"),
3839 },
3840 8 => TableCategory {
3841 parameter: String::from("Storm Relative Helicity"),
3842 units: String::from("m2 s-2"),
3843 abbrev: String::from("HLCY"),
3844 },
3845 9 => TableCategory {
3846 parameter: String::from("Energy Helicity Index"),
3847 units: String::from("Numeric"),
3848 abbrev: String::from("EHLX"),
3849 },
3850 10 => TableCategory {
3851 parameter: String::from("Surface Lifted Index"),
3852 units: String::from("K"),
3853 abbrev: String::from("LFT X"),
3854 },
3855 11 => TableCategory {
3856 parameter: String::from("Best (4 layer) Lifted Index"),
3857 units: String::from("K"),
3858 abbrev: String::from("4LFTX"),
3859 },
3860 12 => TableCategory {
3861 parameter: String::from("Richardson Number"),
3862 units: String::from("Numeric"),
3863 abbrev: String::from("RI"),
3864 },
3865 13 => TableCategory {
3866 parameter: String::from("Showalter Index"),
3867 units: String::from("K"),
3868 abbrev: String::from("SHWINX"),
3869 },
3870 15 => TableCategory {
3871 parameter: String::from("Updraft Helicity"),
3872 units: String::from("m2 s-2"),
3873 abbrev: String::from("UPHL"),
3874 },
3875 16 => TableCategory {
3876 parameter: String::from("Bulk Richardson Number"),
3877 units: String::from("Numeric"),
3878 abbrev: String::from("BLKRN"),
3879 },
3880 17 => TableCategory {
3881 parameter: String::from("Gradient Richardson Number"),
3882 units: String::from("Numeric"),
3883 abbrev: String::from("GRDRN"),
3884 },
3885 18 => TableCategory {
3886 parameter: String::from("Flux Richardson Number"),
3887 units: String::from("Numeric"),
3888 abbrev: String::from("FLXRN"),
3889 },
3890 19 => TableCategory {
3891 parameter: String::from("Convective Available Potential Energy Shear"),
3892 units: String::from("m2 s-2"),
3893 abbrev: String::from("CONAPES"),
3894 },
3895 20 => TableCategory {
3896 parameter: String::from("Thunderstorm intensity index"),
3897 units: String::from("See Table 4.246"),
3898 abbrev: String::from("TIIDEX"),
3899 },
3900 192 => TableCategory {
3901 parameter: String::from("Surface Lifted Index"),
3902 units: String::from("K"),
3903 abbrev: String::from("LFT X"),
3904 },
3905 193 => TableCategory {
3906 parameter: String::from("Best (4 layer) Lifted Index"),
3907 units: String::from("K"),
3908 abbrev: String::from("4LFTX"),
3909 },
3910 194 => TableCategory {
3911 parameter: String::from("Richardson Number"),
3912 units: String::from("Numeric"),
3913 abbrev: String::from("RI"),
3914 },
3915 195 => TableCategory {
3916 parameter: String::from("Convective Weather Detection Index"),
3917 units: String::from(""),
3918 abbrev: String::from("CWDI"),
3919 },
3920 196 => TableCategory {
3921 parameter: String::from("Ultra Violet Index"),
3922 units: String::from("W m-2"),
3923 abbrev: String::from("UVI"),
3924 },
3925 197 => TableCategory {
3926 parameter: String::from("Updraft Helicity"),
3927 units: String::from("m2 s-2"),
3928 abbrev: String::from("UPHL"),
3929 },
3930 198 => TableCategory {
3931 parameter: String::from("Leaf Area Index"),
3932 units: String::from("Numeric"),
3933 abbrev: String::from("LAI"),
3934 },
3935 199 => TableCategory {
3936 parameter: String::from("Hourly Maximum of Updraft Helicity"),
3937 units: String::from("m2 s-2"),
3938 abbrev: String::from("MXUPHL"),
3939 },
3940 200 => TableCategory {
3941 parameter: String::from("Hourly Minimum of Updraft Helicity"),
3942 units: String::from("m2 s-2"),
3943 abbrev: String::from("MNUPHL"),
3944 },
3945 201 => TableCategory {
3946 parameter: String::from("Bourgoiun Negative Energy Layer (surface to freezing level)"),
3947 units: String::from("J kg-1"),
3948 abbrev: String::from("BNEGELAY"),
3949 },
3950 202 => TableCategory {
3951 parameter: String::from("Bourgoiun Positive Energy Layer (2k ft AGL to 400 hPa)"),
3952 units: String::from("J kg-1"),
3953 abbrev: String::from("BPOSELAY"),
3954 },
3955 203 => TableCategory {
3956 parameter: String::from("Downdraft CAPE"),
3957 units: String::from("J kg-1"),
3958 abbrev: String::from("DCAPE"),
3959 },
3960 204 => TableCategory {
3961 parameter: String::from("Effective Storm Relative Helicity"),
3962 units: String::from("m2 s-2"),
3963 abbrev: String::from("EFHL"),
3964 },
3965 205 => TableCategory {
3966 parameter: String::from("Enhanced Stretching Potential"),
3967 units: String::from("Numeric"),
3968 abbrev: String::from("ESP"),
3969 },
3970 206 => TableCategory {
3971 parameter: String::from("Critical Angle"),
3972 units: String::from("Degree"),
3973 abbrev: String::from("CANGLE"),
3974 },
3975 207 => TableCategory {
3976 parameter: String::from("Effective Surface Helicity"),
3977 units: String::from("m2 s-2"),
3978 abbrev: String::from("E3KH"),
3979 },
3980 208 => TableCategory {
3981 parameter: String::from("Significant Tornado Parameter with CIN-Effective Layer"),
3982 units: String::from("numeric"),
3983 abbrev: String::from("STPC"),
3984 },
3985 209 => TableCategory {
3986 parameter: String::from("Significant Hail Parameter"),
3987 units: String::from("numeric"),
3988 abbrev: String::from("SIGH"),
3989 },
3990 210 => TableCategory {
3991 parameter: String::from("Supercell Composite Parameter-Effective Layer"),
3992 units: String::from("numeric"),
3993 abbrev: String::from("SCCP"),
3994 },
3995 211 => TableCategory {
3996 parameter: String::from("Significant Tornado parameter-Fixed Layer"),
3997 units: String::from("numeric"),
3998 abbrev: String::from("SIGT"),
3999 },
4000 212 => TableCategory {
4001 parameter: String::from("Mixed Layer (100 mb) Virtual LFC"),
4002 units: String::from("numeric"),
4003 abbrev: String::from("MLFC"),
4004 },
4005 255 => TableCategory {
4006 parameter: String::from("Missing"),
4007 units: String::from(""),
4008 abbrev: String::from("Missing"),
4009 },
4010 14 => TableCategory {
4011 parameter: String::from("Reserved"),
4012 units: String::from(""),
4013 abbrev: String::from("Reserved"),
4014 },
4015 21..=191 => TableCategory {
4016 parameter: String::from("Reserved"),
4017 units: String::from(""),
4018 abbrev: String::from("Reserved"),
4019 },
4020 _ => TableCategory {
4021 parameter: String::from("Reserved for Local Use"),
4022 units: String::from(""),
4023 abbrev: String::from("Reserved for Local Use"),
4024 },
4025 }
4026}
4027
4028pub fn grib2_lookup_table42_013(category: u8) -> TableCategory {
4049 match category {
4050 0 => TableCategory {
4051 parameter: String::from("Aerosol Type"),
4052 units: String::from("See Table 4.205"),
4053 abbrev: String::from("AEROT"),
4054 },
4055 192 => TableCategory {
4056 parameter: String::from("Particulate matter (coarse)"),
4057 units: String::from("µg m-3"),
4058 abbrev: String::from("PMTC"),
4059 },
4060 193 => TableCategory {
4061 parameter: String::from("Particulate matter (fine)"),
4062 units: String::from("µg m-3"),
4063 abbrev: String::from("PMTF"),
4064 },
4065 194 => TableCategory {
4066 parameter: String::from("Particulate matter (fine)"),
4067 units: String::from("log10 (µg m-3)"),
4068 abbrev: String::from("LPMTF"),
4069 },
4070 195 => TableCategory {
4071 parameter: String::from("Integrated column particulate matter (fine)"),
4072 units: String::from("log10 (µg m-3)"),
4073 abbrev: String::from("LIPMF"),
4074 },
4075 255 => TableCategory {
4076 parameter: String::from("Missing"),
4077 units: String::from(""),
4078 abbrev: String::from("Missing"),
4079 },
4080 1..=191 => TableCategory {
4081 parameter: String::from("Reserved"),
4082 units: String::from(""),
4083 abbrev: String::from("Reserved"),
4084 },
4085 _ => TableCategory {
4086 parameter: String::from("Reserved for Local Use"),
4087 units: String::from(""),
4088 abbrev: String::from("Reserved for Local Use"),
4089 },
4090 }
4091}
4092
4093pub fn grib2_lookup_table42_014(category: u8) -> TableCategory {
4114 match category {
4115 0 => TableCategory {
4116 parameter: String::from("Total Ozone"),
4117 units: String::from("DU"),
4118 abbrev: String::from("TOZNE"),
4119 },
4120 1 => TableCategory {
4121 parameter: String::from("Ozone Mixing Ratio"),
4122 units: String::from("kg kg-1"),
4123 abbrev: String::from("O3MR"),
4124 },
4125 2 => TableCategory {
4126 parameter: String::from("Total Column Integrated Ozone"),
4127 units: String::from("DU"),
4128 abbrev: String::from("TCIOZ"),
4129 },
4130 192 => TableCategory {
4131 parameter: String::from("Ozone Mixing Ratio"),
4132 units: String::from("kg kg-1"),
4133 abbrev: String::from("O3MR"),
4134 },
4135 193 => TableCategory {
4136 parameter: String::from("Ozone Concentration"),
4137 units: String::from("ppb"),
4138 abbrev: String::from("OZCON"),
4139 },
4140 194 => TableCategory {
4141 parameter: String::from("Categorical Ozone Concentration"),
4142 units: String::from("Non-Dim"),
4143 abbrev: String::from("OZCAT"),
4144 },
4145 195 => TableCategory {
4146 parameter: String::from("Ozone Vertical Diffusion"),
4147 units: String::from("kg kg-1 s-1"),
4148 abbrev: String::from("VDFOZ"),
4149 },
4150 196 => TableCategory {
4151 parameter: String::from("Ozone Production"),
4152 units: String::from("kg kg-1 s-1"),
4153 abbrev: String::from("POZ"),
4154 },
4155 197 => TableCategory {
4156 parameter: String::from("Ozone Tendency"),
4157 units: String::from("kg kg-1 s-1"),
4158 abbrev: String::from("TOZ"),
4159 },
4160 198 => TableCategory {
4161 parameter: String::from("Ozone Production from Temperature Term"),
4162 units: String::from("kg kg-1 s-1"),
4163 abbrev: String::from("POZT"),
4164 },
4165 199 => TableCategory {
4166 parameter: String::from("Ozone Production from Column Ozone Term"),
4167 units: String::from("kg kg-1 s-1"),
4168 abbrev: String::from("POZO"),
4169 },
4170 200 => TableCategory {
4171 parameter: String::from("Ozone Daily Max from 1-hour Average"),
4172 units: String::from("ppbV"),
4173 abbrev: String::from("OZMAX1"),
4174 },
4175 201 => TableCategory {
4176 parameter: String::from("Ozone Daily Max from 8-hour Average"),
4177 units: String::from("ppbV"),
4178 abbrev: String::from("OZMAX8"),
4179 },
4180 202 => TableCategory {
4181 parameter: String::from("PM 2.5 Daily Max from 1-hour Average"),
4182 units: String::from("μg m-3"),
4183 abbrev: String::from("PDMAX1"),
4184 },
4185 203 => TableCategory {
4186 parameter: String::from("PM 2.5 Daily Max from 24-hour Average"),
4187 units: String::from("μg m-3"),
4188 abbrev: String::from("PDMAX24"),
4189 },
4190 204 => TableCategory {
4191 parameter: String::from("Acetaldehyde & Higher Aldehydes"),
4192 units: String::from("ppbV"),
4193 abbrev: String::from("ALD2"),
4194 },
4195 255 => TableCategory {
4196 parameter: String::from("Missing"),
4197 units: String::from(""),
4198 abbrev: String::from("Missing"),
4199 },
4200 3..=191 => TableCategory {
4201 parameter: String::from("Reserved"),
4202 units: String::from(""),
4203 abbrev: String::from("Reserved"),
4204 },
4205 _ => TableCategory {
4206 parameter: String::from("Reserved for Local Use"),
4207 units: String::from(""),
4208 abbrev: String::from("Reserved for Local Use"),
4209 },
4210 }
4211}
4212
4213pub fn grib2_lookup_table42_015(category: u8) -> TableCategory {
4234 match category {
4235 0 => TableCategory {
4236 parameter: String::from("Base Spectrum Width"),
4237 units: String::from("m s-1"),
4238 abbrev: String::from("BSWID"),
4239 },
4240 1 => TableCategory {
4241 parameter: String::from("Base Reflectivity"),
4242 units: String::from("dB"),
4243 abbrev: String::from("BREF"),
4244 },
4245 2 => TableCategory {
4246 parameter: String::from("Base Radial Velocity"),
4247 units: String::from("m s-1"),
4248 abbrev: String::from("BRVEL"),
4249 },
4250 3 => TableCategory {
4251 parameter: String::from("Vertically-Integrated Liquid Water"),
4252 units: String::from("kg m-2"),
4253 abbrev: String::from("VIL"),
4254 },
4255 4 => TableCategory {
4256 parameter: String::from("Layer Maximum Base Reflectivity"),
4257 units: String::from("dB"),
4258 abbrev: String::from("LMAXBR"),
4259 },
4260 5 => TableCategory {
4261 parameter: String::from("Precipitation"),
4262 units: String::from("kg m-2"),
4263 abbrev: String::from("PREC"),
4264 },
4265 6 => TableCategory {
4266 parameter: String::from("Radar Spectra (1)"),
4267 units: String::from(""),
4268 abbrev: String::from("RDSP1"),
4269 },
4270 7 => TableCategory {
4271 parameter: String::from("Radar Spectra (2)"),
4272 units: String::from(""),
4273 abbrev: String::from("RDSP2"),
4274 },
4275 8 => TableCategory {
4276 parameter: String::from("Radar Spectra (3)"),
4277 units: String::from(""),
4278 abbrev: String::from("RDSP3"),
4279 },
4280 9 => TableCategory {
4281 parameter: String::from("Reflectivity of Cloud Droplets"),
4282 units: String::from("dB"),
4283 abbrev: String::from("RFCD"),
4284 },
4285 10 => TableCategory {
4286 parameter: String::from("Reflectivity of Cloud Ice"),
4287 units: String::from("dB"),
4288 abbrev: String::from("RFCI"),
4289 },
4290 11 => TableCategory {
4291 parameter: String::from("Reflectivity of Snow"),
4292 units: String::from("dB"),
4293 abbrev: String::from("RFSNOW"),
4294 },
4295 12 => TableCategory {
4296 parameter: String::from("Reflectivity of Rain"),
4297 units: String::from("dB"),
4298 abbrev: String::from("RFRAIN"),
4299 },
4300 13 => TableCategory {
4301 parameter: String::from("Reflectivity of Graupel"),
4302 units: String::from("dB"),
4303 abbrev: String::from("RFGRPL"),
4304 },
4305 14 => TableCategory {
4306 parameter: String::from("Reflectivity of Hail"),
4307 units: String::from("dB"),
4308 abbrev: String::from("RFHAIL"),
4309 },
4310 15 => TableCategory {
4311 parameter: String::from("Hybrid Scan Reflectivity"),
4312 units: String::from("dB"),
4313 abbrev: String::from("HSR"),
4314 },
4315 16 => TableCategory {
4316 parameter: String::from("Hybrid Scan Reflectivity Height"),
4317 units: String::from("m"),
4318 abbrev: String::from("HSRHT"),
4319 },
4320 192 => TableCategory {
4321 parameter: String::from("Missing"),
4322 units: String::from(""),
4323 abbrev: String::from("Missing"),
4324 },
4325 17..=191 => TableCategory {
4326 parameter: String::from("Reserved"),
4327 units: String::from(""),
4328 abbrev: String::from("Reserved"),
4329 },
4330 _ => TableCategory {
4331 parameter: String::from("Reserved for Local Use"),
4332 units: String::from(""),
4333 abbrev: String::from("Reserved for Local Use"),
4334 },
4335 }
4336}
4337
4338pub fn grib2_lookup_table42_016(category: u8) -> TableCategory {
4361 match category {
4362 0 => TableCategory {
4363 parameter: String::from("Equivalent radar reflectivity factor for rain"),
4364 units: String::from("m m6 m-3"),
4365 abbrev: String::from("REFZR"),
4366 },
4367 1 => TableCategory {
4368 parameter: String::from("Equivalent radar reflectivity factor for snow"),
4369 units: String::from("m m6 m-3"),
4370 abbrev: String::from("REFZI"),
4371 },
4372 2 => TableCategory {
4373 parameter: String::from(
4374 "Equivalent radar reflectivity factor for parameterized convection",
4375 ),
4376 units: String::from("m m6 m-3"),
4377 abbrev: String::from("REFZC"),
4378 },
4379 3 => TableCategory {
4380 parameter: String::from("Echo Top"),
4381 units: String::from("m"),
4382 abbrev: String::from("RETOP"),
4383 },
4384 4 => TableCategory {
4385 parameter: String::from("Reflectivity"),
4386 units: String::from("dB"),
4387 abbrev: String::from("REFD"),
4388 },
4389 5 => TableCategory {
4390 parameter: String::from("Composite reflectivity"),
4391 units: String::from("dB"),
4392 abbrev: String::from("REFC"),
4393 },
4394 192 => TableCategory {
4395 parameter: String::from("Equivalent radar reflectivity factor for rain"),
4396 units: String::from("m m6 m-3"),
4397 abbrev: String::from("REFZR"),
4398 },
4399 193 => TableCategory {
4400 parameter: String::from("Equivalent radar reflectivity factor for snow"),
4401 units: String::from("m m6 m-3"),
4402 abbrev: String::from("REFZI"),
4403 },
4404 194 => TableCategory {
4405 parameter: String::from(
4406 "Equivalent radar reflectivity factor for parameterized convection",
4407 ),
4408 units: String::from("m m6 m-3"),
4409 abbrev: String::from("REFZC"),
4410 },
4411 195 => TableCategory {
4412 parameter: String::from("Reflectivity"),
4413 units: String::from("dB"),
4414 abbrev: String::from("REFD"),
4415 },
4416 196 => TableCategory {
4417 parameter: String::from("Composite reflectivity"),
4418 units: String::from("dB"),
4419 abbrev: String::from("REFC"),
4420 },
4421 197 => TableCategory {
4422 parameter: String::from("Echo Top"),
4423 units: String::from("m"),
4424 abbrev: String::from("RETOP"),
4425 },
4426 198 => TableCategory {
4427 parameter: String::from("Hourly Maximum of Simulated Reflectivity"),
4428 units: String::from("dB"),
4429 abbrev: String::from("MAXREF"),
4430 },
4431 255 => TableCategory {
4432 parameter: String::from("Missing"),
4433 units: String::from(""),
4434 abbrev: String::from("Missing"),
4435 },
4436 6..=191 => TableCategory {
4437 parameter: String::from("Reserved"),
4438 units: String::from(""),
4439 abbrev: String::from("Reserved"),
4440 },
4441 _ => TableCategory {
4442 parameter: String::from("Reserved for Local Use"),
4443 units: String::from(""),
4444 abbrev: String::from("Reserved for Local Use"),
4445 },
4446 }
4447}
4448
4449pub fn grib2_lookup_table42_017(category: u8) -> TableCategory {
4472 match category {
4473 0 => TableCategory {
4474 parameter: String::from("Lightning Strike Density"),
4475 units: String::from("m-2 s-1"),
4476 abbrev: String::from("LTNGSD"),
4477 },
4478 1 => TableCategory {
4479 parameter: String::from("Lightning Potential Index (LPI)"),
4480 units: String::from("J kg-1"),
4481 abbrev: String::from("LTPINX"),
4482 },
4483 2 => TableCategory {
4484 parameter: String::from("Cloud-to-Ground Lightning Flash Density"),
4485 units: String::from("km-2 day-1"),
4486 abbrev: String::from("CDGDLTFD"),
4487 },
4488 3 => TableCategory {
4489 parameter: String::from("Cloud-to-Cloud Lightning Flash Density"),
4490 units: String::from("km-2 day-1"),
4491 abbrev: String::from("CDCDLTFD"),
4492 },
4493 4 => TableCategory {
4494 parameter: String::from("Total Lightning Flash Density"),
4495 units: String::from("km-2 day-1"),
4496 abbrev: String::from("TLGTFD"),
4497 },
4498 5 => TableCategory {
4499 parameter: String::from("Subgrid-scale lightning potential index"),
4500 units: String::from("J kg-1"),
4501 abbrev: String::from("SLNGPIDX"),
4502 },
4503 192 => TableCategory {
4504 parameter: String::from("Lightning"),
4505 units: String::from("non-dim"),
4506 abbrev: String::from("LTNG"),
4507 },
4508 255 => TableCategory {
4509 parameter: String::from("Missing"),
4510 units: String::from(""),
4511 abbrev: String::from("Missing"),
4512 },
4513 6..=191 => TableCategory {
4514 parameter: String::from("Reserved"),
4515 units: String::from(""),
4516 abbrev: String::from("Reserved"),
4517 },
4518 _ => TableCategory {
4519 parameter: String::from("Reserved for Local Use"),
4520 units: String::from(""),
4521 abbrev: String::from("Reserved for Local Use"),
4522 },
4523 }
4524}
4525
4526pub fn grib2_lookup_table42_018(category: u8) -> TableCategory {
4550 match category {
4551 0 => TableCategory {
4552 parameter: String::from("Air Concentration of Caesium 137"),
4553 units: String::from("Bq m-3"),
4554 abbrev: String::from("ACCES"),
4555 },
4556 1 => TableCategory {
4557 parameter: String::from("Air Concentration of Iodine 131"),
4558 units: String::from("Bq m-3"),
4559 abbrev: String::from("ACIOD"),
4560 },
4561 2 => TableCategory {
4562 parameter: String::from("Air Concentration of Radioactive Pollutant"),
4563 units: String::from("Bq m-3"),
4564 abbrev: String::from("ACRADP"),
4565 },
4566 3 => TableCategory {
4567 parameter: String::from("Ground Deposition of Caesium 137"),
4568 units: String::from("Bq m-2"),
4569 abbrev: String::from("GDCES"),
4570 },
4571 4 => TableCategory {
4572 parameter: String::from("Ground Deposition of Iodine 131"),
4573 units: String::from("Bq m-2"),
4574 abbrev: String::from("GDIOD"),
4575 },
4576 5 => TableCategory {
4577 parameter: String::from("Ground Deposition of Radioactive Pollutant"),
4578 units: String::from("Bq m-2"),
4579 abbrev: String::from("GDRADP"),
4580 },
4581 6 => TableCategory {
4582 parameter: String::from("Time Integrated Air Concentration of Cesium Pollutant"),
4583 units: String::from("Bq s m-3"),
4584 abbrev: String::from("TIACCP"),
4585 },
4586 7 => TableCategory {
4587 parameter: String::from("Time Integrated Air Concentration of Iodine Pollutant"),
4588 units: String::from("Bq s m-3"),
4589 abbrev: String::from("TIACIP"),
4590 },
4591 8 => TableCategory {
4592 parameter: String::from("Time Integrated Air Concentration of Radioactive Pollutant"),
4593 units: String::from("Bq s m-3"),
4594 abbrev: String::from("TIACRP"),
4595 },
4596 9 => TableCategory {
4597 parameter: String::from("Reserved"),
4598 units: String::from(""),
4599 abbrev: String::from("Reserved"),
4600 },
4601 10 => TableCategory {
4602 parameter: String::from("Air Concentration"),
4603 units: String::from("Bq m-3"),
4604 abbrev: String::from("AIRCON"),
4605 },
4606 11 => TableCategory {
4607 parameter: String::from("Wet Deposition"),
4608 units: String::from("Bq m-2"),
4609 abbrev: String::from("WETDEP"),
4610 },
4611 12 => TableCategory {
4612 parameter: String::from("Dry Deposition"),
4613 units: String::from("Bq m-2"),
4614 abbrev: String::from("DRYDEP"),
4615 },
4616 13 => TableCategory {
4617 parameter: String::from("Total Deposition (Wet + Dry)"),
4618 units: String::from("Bq m-2"),
4619 abbrev: String::from("TOTLWD"),
4620 },
4621 14 => TableCategory {
4622 parameter: String::from("Specific Activity Concentration"),
4623 units: String::from("Bq kg-1"),
4624 abbrev: String::from("SACON"),
4625 },
4626 15 => TableCategory {
4627 parameter: String::from("Maximum of Air Concentration in Layer"),
4628 units: String::from("Bq m-3"),
4629 abbrev: String::from("MAXACON"),
4630 },
4631 16 => TableCategory {
4632 parameter: String::from("Height of Maximum of Air Concentration"),
4633 units: String::from("m"),
4634 abbrev: String::from("HMXACON"),
4635 },
4636 17 => TableCategory {
4637 parameter: String::from("Column-Integrated Air Concentration"),
4638 units: String::from("Bq m-2"),
4639 abbrev: String::from("CIAIRC"),
4640 },
4641 18 => TableCategory {
4642 parameter: String::from("Column-Averaged Air Concentration in Layer"),
4643 units: String::from("Bq m-3"),
4644 abbrev: String::from("CAACL"),
4645 },
4646 19 => TableCategory {
4647 parameter: String::from("Deposition activity arrival"),
4648 units: String::from("s"),
4649 abbrev: String::from("DEPACTA"),
4650 },
4651 20 => TableCategory {
4652 parameter: String::from("Deposition activity ended"),
4653 units: String::from("s"),
4654 abbrev: String::from("DEPACTE"),
4655 },
4656 21 => TableCategory {
4657 parameter: String::from("Cloud activity arrival"),
4658 units: String::from("s"),
4659 abbrev: String::from("CLDACTA"),
4660 },
4661 22 => TableCategory {
4662 parameter: String::from("Cloud activity ended"),
4663 units: String::from("s"),
4664 abbrev: String::from("CLDACTE"),
4665 },
4666 23 => TableCategory {
4667 parameter: String::from("Effective dose rate"),
4668 units: String::from("nSv h-1"),
4669 abbrev: String::from("EFFDOSER"),
4670 },
4671 24 => TableCategory {
4672 parameter: String::from("Thyroid dose rate (adult)"),
4673 units: String::from("nSv h-1"),
4674 abbrev: String::from("THYDOSER"),
4675 },
4676 25 => TableCategory {
4677 parameter: String::from("Gamma dose rate (adult)"),
4678 units: String::from("nSv h-1"),
4679 abbrev: String::from("GAMDOSER"),
4680 },
4681 26 => TableCategory {
4682 parameter: String::from("Activity emission"),
4683 units: String::from("Bq s-1"),
4684 abbrev: String::from("ACTEMM"),
4685 },
4686 192 => TableCategory {
4687 parameter: String::from("Lightning"),
4688 units: String::from("non-dim"),
4689 abbrev: String::from("LTNG"),
4690 },
4691 255 => TableCategory {
4692 parameter: String::from("Missing"),
4693 units: String::from(""),
4694 abbrev: String::from("Missing"),
4695 },
4696 27..=191 => TableCategory {
4697 parameter: String::from("Reserved"),
4698 units: String::from(""),
4699 abbrev: String::from("Reserved"),
4700 },
4701 _ => TableCategory {
4702 parameter: String::from("Reserved for Local Use"),
4703 units: String::from(""),
4704 abbrev: String::from("Reserved for Local Use"),
4705 },
4706 }
4707}
4708
4709pub fn grib2_lookup_table42_019(category: u8) -> TableCategory {
4735 match category {
4736 0 => TableCategory {
4737 parameter: String::from("Visibility"),
4738 units: String::from("m"),
4739 abbrev: String::from("VIS"),
4740 },
4741 1 => TableCategory {
4742 parameter: String::from("Albedo"),
4743 units: String::from("%"),
4744 abbrev: String::from("ALBDO"),
4745 },
4746 2 => TableCategory {
4747 parameter: String::from("Thunderstorm Probability"),
4748 units: String::from("%"),
4749 abbrev: String::from("TSTM"),
4750 },
4751 3 => TableCategory {
4752 parameter: String::from("Mixed Layer Depth"),
4753 units: String::from("m"),
4754 abbrev: String::from("MIXHT"),
4755 },
4756 4 => TableCategory {
4757 parameter: String::from("Volcanic Ash"),
4758 units: String::from("See Table 4.206"),
4759 abbrev: String::from("VOLASH"),
4760 },
4761 5 => TableCategory {
4762 parameter: String::from("Icing Top"),
4763 units: String::from("m"),
4764 abbrev: String::from("ICIT"),
4765 },
4766 6 => TableCategory {
4767 parameter: String::from("Icing Base"),
4768 units: String::from("m"),
4769 abbrev: String::from("ICIB"),
4770 },
4771 7 => TableCategory {
4772 parameter: String::from("Icing"),
4773 units: String::from("See Table 4.207"),
4774 abbrev: String::from("ICI"),
4775 },
4776 8 => TableCategory {
4777 parameter: String::from("Turbulence Top"),
4778 units: String::from("m"),
4779 abbrev: String::from("TURBT"),
4780 },
4781 9 => TableCategory {
4782 parameter: String::from("Turbulence Base"),
4783 units: String::from("m"),
4784 abbrev: String::from("TURBB"),
4785 },
4786 10 => TableCategory {
4787 parameter: String::from("Turbulence"),
4788 units: String::from("See Table 4.208"),
4789 abbrev: String::from("TURB"),
4790 },
4791 11 => TableCategory {
4792 parameter: String::from("Turbulent Kinetic Energy"),
4793 units: String::from("J kg-1"),
4794 abbrev: String::from("TKE"),
4795 },
4796 12 => TableCategory {
4797 parameter: String::from("Planetary Boundary Layer Regime"),
4798 units: String::from("See Table 4.209"),
4799 abbrev: String::from("PBLREG"),
4800 },
4801 13 => TableCategory {
4802 parameter: String::from("Contrail Intensity"),
4803 units: String::from("See Table 4.210"),
4804 abbrev: String::from("CONTI"),
4805 },
4806 14 => TableCategory {
4807 parameter: String::from("Contrail Engine Type"),
4808 units: String::from("See Table 4.211"),
4809 abbrev: String::from("CONTET"),
4810 },
4811 15 => TableCategory {
4812 parameter: String::from("Contrail Top"),
4813 units: String::from("m"),
4814 abbrev: String::from("CONTT"),
4815 },
4816 16 => TableCategory {
4817 parameter: String::from("Contrail Base"),
4818 units: String::from("m"),
4819 abbrev: String::from("CONTB"),
4820 },
4821 17 => TableCategory {
4822 parameter: String::from("Maximum Snow Albedo"),
4823 units: String::from("%"),
4824 abbrev: String::from("MXSALB"),
4825 },
4826 18 => TableCategory {
4827 parameter: String::from("Snow-Free Albedo"),
4828 units: String::from("%"),
4829 abbrev: String::from("SNFALB"),
4830 },
4831 19 => TableCategory {
4832 parameter: String::from("Snow Albedo"),
4833 units: String::from("%"),
4834 abbrev: String::from("SALBD"),
4835 },
4836 20 => TableCategory {
4837 parameter: String::from("Icing"),
4838 units: String::from("%"),
4839 abbrev: String::from("ICIP"),
4840 },
4841 21 => TableCategory {
4842 parameter: String::from("In-Cloud Turbulence"),
4843 units: String::from("%"),
4844 abbrev: String::from("CTP"),
4845 },
4846 22 => TableCategory {
4847 parameter: String::from("Clear Air Turbulence (CAT)"),
4848 units: String::from("%"),
4849 abbrev: String::from("CAT"),
4850 },
4851 23 => TableCategory {
4852 parameter: String::from("Supercooled Large Droplet Probability"),
4853 units: String::from("%"),
4854 abbrev: String::from("SLDP"),
4855 },
4856 24 => TableCategory {
4857 parameter: String::from("Convective Turbulent Kinetic Energy"),
4858 units: String::from("J kg-1"),
4859 abbrev: String::from("CONTKE"),
4860 },
4861 25 => TableCategory {
4862 parameter: String::from("Weather"),
4863 units: String::from("See Table 4.225"),
4864 abbrev: String::from("WIWW"),
4865 },
4866 26 => TableCategory {
4867 parameter: String::from("Convective Outlook"),
4868 units: String::from("See Table 4.224"),
4869 abbrev: String::from("CONVO"),
4870 },
4871 27 => TableCategory {
4872 parameter: String::from("Icing Scenario"),
4873 units: String::from("See Table 4.227"),
4874 abbrev: String::from("ICESC"),
4875 },
4876 28 => TableCategory {
4877 parameter: String::from("Mountain Wave Turbulence (Eddy Dissipation Rate)"),
4878 units: String::from("m2/3 s-1"),
4879 abbrev: String::from("MWTURB"),
4880 },
4881 29 => TableCategory {
4882 parameter: String::from("Clear Air Turbulence (CAT) (Eddy Dissipation Rate)"),
4883 units: String::from("m2/3 s-1"),
4884 abbrev: String::from("CATEDR"),
4885 },
4886 30 => TableCategory {
4887 parameter: String::from("Eddy Dissipation Parameter"),
4888 units: String::from("m2/3 s-1"),
4889 abbrev: String::from("EDPARM"),
4890 },
4891 31 => TableCategory {
4892 parameter: String::from("Maximum of Eddy Dissipation Parameter in Layer"),
4893 units: String::from("m2/3 s-1"),
4894 abbrev: String::from("MXEDPRM"),
4895 },
4896 32 => TableCategory {
4897 parameter: String::from("Highest Freezing Level"),
4898 units: String::from("m"),
4899 abbrev: String::from("HIFREL"),
4900 },
4901 33 => TableCategory {
4902 parameter: String::from("Visibility Through Liquid Fog"),
4903 units: String::from("m"),
4904 abbrev: String::from("VISLFOG"),
4905 },
4906 34 => TableCategory {
4907 parameter: String::from("Visibility Through Ice Fog"),
4908 units: String::from("m"),
4909 abbrev: String::from("VISIFOG"),
4910 },
4911 35 => TableCategory {
4912 parameter: String::from("Visibility Through Blowing Snow"),
4913 units: String::from("m"),
4914 abbrev: String::from("VISBSN"),
4915 },
4916 36 => TableCategory {
4917 parameter: String::from("Presence of Snow Squalls"),
4918 units: String::from("See Table 4.222"),
4919 abbrev: String::from("PSNOWS"),
4920 },
4921 37 => TableCategory {
4922 parameter: String::from("Icing Severity"),
4923 units: String::from("See Table 4.228"),
4924 abbrev: String::from("ICESEV"),
4925 },
4926 38 => TableCategory {
4927 parameter: String::from("Sky transparency index"),
4928 units: String::from("See Table 4.214"),
4929 abbrev: String::from("SKYIDX"),
4930 },
4931 39 => TableCategory {
4932 parameter: String::from("Seeing index"),
4933 units: String::from("See Table 4.214"),
4934 abbrev: String::from("SEEINDEX"),
4935 },
4936 40 => TableCategory {
4937 parameter: String::from("Snow level"),
4938 units: String::from("m"),
4939 abbrev: String::from("SNOWLVL"),
4940 },
4941 41 => TableCategory {
4942 parameter: String::from("Duct base height"),
4943 units: String::from("m"),
4944 abbrev: String::from("DBHEIGHT"),
4945 },
4946 42 => TableCategory {
4947 parameter: String::from("Trapping layer base height"),
4948 units: String::from("m"),
4949 abbrev: String::from("TLBHEIGHT"),
4950 },
4951 43 => TableCategory {
4952 parameter: String::from("Trapping layer top height"),
4953 units: String::from("m"),
4954 abbrev: String::from("TLTHEIGHT"),
4955 },
4956 44 => TableCategory {
4957 parameter: String::from("Mean vertical gradient of refractivity inside trapping layer"),
4958 units: String::from("m-1"),
4959 abbrev: String::from("MEANVGRTL"),
4960 },
4961 45 => TableCategory {
4962 parameter: String::from(
4963 "Minimum vertical gradient of refractivity inside trapping layer",
4964 ),
4965 units: String::from("m-1"),
4966 abbrev: String::from("MINVGRTL"),
4967 },
4968 46 => TableCategory {
4969 parameter: String::from("Net radiation flux"),
4970 units: String::from("W m-2"),
4971 abbrev: String::from("NETRADFLUX"),
4972 },
4973 47 => TableCategory {
4974 parameter: String::from("Global irradiance on tilted surfaces"),
4975 units: String::from("W m-2"),
4976 abbrev: String::from("GLIRRTS"),
4977 },
4978 48 => TableCategory {
4979 parameter: String::from("Top of persistent contrails"),
4980 units: String::from("m"),
4981 abbrev: String::from("PCONTT"),
4982 },
4983 49 => TableCategory {
4984 parameter: String::from("Base of persistent contrails"),
4985 units: String::from("m"),
4986 abbrev: String::from("PCONTB"),
4987 },
4988 50 => TableCategory {
4989 parameter: String::from(
4990 "Convectively-induced turbulence (CIT) (eddy dissipation rate)",
4991 ),
4992 units: String::from("m2/3 s-1"),
4993 abbrev: String::from("CITEDR"),
4994 },
4995 192 => TableCategory {
4996 parameter: String::from("Maximum Snow Albedo"),
4997 units: String::from("%"),
4998 abbrev: String::from("MXSALB"),
4999 },
5000 193 => TableCategory {
5001 parameter: String::from("Snow-Free Albedo"),
5002 units: String::from("%"),
5003 abbrev: String::from("SNFALB"),
5004 },
5005 194 => TableCategory {
5006 parameter: String::from("Slight risk convective outlook"),
5007 units: String::from("categorical"),
5008 abbrev: String::from("SRCONO"),
5009 },
5010 195 => TableCategory {
5011 parameter: String::from("Moderate risk convective outlook"),
5012 units: String::from("categorical"),
5013 abbrev: String::from("MRCONO"),
5014 },
5015 196 => TableCategory {
5016 parameter: String::from("High risk convective outlook"),
5017 units: String::from("categorical"),
5018 abbrev: String::from("HRCONO"),
5019 },
5020 197 => TableCategory {
5021 parameter: String::from("Tornado probability"),
5022 units: String::from("%"),
5023 abbrev: String::from("TORPROB"),
5024 },
5025 198 => TableCategory {
5026 parameter: String::from("Hail probability"),
5027 units: String::from("%"),
5028 abbrev: String::from("HAILPROB"),
5029 },
5030 199 => TableCategory {
5031 parameter: String::from("Wind probability"),
5032 units: String::from("%"),
5033 abbrev: String::from("WINDPROB"),
5034 },
5035 200 => TableCategory {
5036 parameter: String::from("Significant Tornado probability"),
5037 units: String::from("%"),
5038 abbrev: String::from("STORPROB"),
5039 },
5040 201 => TableCategory {
5041 parameter: String::from("Significant Hail probability"),
5042 units: String::from("%"),
5043 abbrev: String::from("SHAILPRO"),
5044 },
5045 202 => TableCategory {
5046 parameter: String::from("Significant Wind probability"),
5047 units: String::from("%"),
5048 abbrev: String::from("SWINDPRO"),
5049 },
5050 203 => TableCategory {
5051 parameter: String::from("Categorical Thunderstorm"),
5052 units: String::from("Code table 4.222"),
5053 abbrev: String::from("TSTMC"),
5054 },
5055 204 => TableCategory {
5056 parameter: String::from("Number of mixed layers next to surface"),
5057 units: String::from("integer"),
5058 abbrev: String::from("MIXLY"),
5059 },
5060 205 => TableCategory {
5061 parameter: String::from("Flight Category"),
5062 units: String::from(""),
5063 abbrev: String::from("FLGHT"),
5064 },
5065 206 => TableCategory {
5066 parameter: String::from("Confidence - Ceiling"),
5067 units: String::from(""),
5068 abbrev: String::from("CICEL"),
5069 },
5070 207 => TableCategory {
5071 parameter: String::from("Confidence - Visibility"),
5072 units: String::from(""),
5073 abbrev: String::from("CIVIS"),
5074 },
5075 208 => TableCategory {
5076 parameter: String::from("Confidence - Flight Category"),
5077 units: String::from(""),
5078 abbrev: String::from("CIFLT"),
5079 },
5080 209 => TableCategory {
5081 parameter: String::from("Low-Level aviation interest"),
5082 units: String::from(""),
5083 abbrev: String::from("LAVNI"),
5084 },
5085 210 => TableCategory {
5086 parameter: String::from("High-Level aviation interest"),
5087 units: String::from(""),
5088 abbrev: String::from("HAVNI"),
5089 },
5090 211 => TableCategory {
5091 parameter: String::from("Visible, Black Sky Albedo"),
5092 units: String::from("%"),
5093 abbrev: String::from("SBSALB"),
5094 },
5095 212 => TableCategory {
5096 parameter: String::from("Visible, White Sky Albedo"),
5097 units: String::from("%"),
5098 abbrev: String::from("SWSALB"),
5099 },
5100 213 => TableCategory {
5101 parameter: String::from("Near IR, Black Sky Albedo"),
5102 units: String::from("%"),
5103 abbrev: String::from("NBSALB"),
5104 },
5105 214 => TableCategory {
5106 parameter: String::from("Near IR, White Sky Albedo"),
5107 units: String::from("%"),
5108 abbrev: String::from("NWSALB"),
5109 },
5110 215 => TableCategory {
5111 parameter: String::from("Total Probability of Severe Thunderstorms (Days 2,3)"),
5112 units: String::from("%"),
5113 abbrev: String::from("PRSVR"),
5114 },
5115 216 => TableCategory {
5116 parameter: String::from("Total Probability of Extreme Severe Thunderstorms (Days 2,3)"),
5117 units: String::from("%"),
5118 abbrev: String::from("PRSIGSVR"),
5119 },
5120 217 => TableCategory {
5121 parameter: String::from("Supercooled Large Droplet (SLD) Icing"),
5122 units: String::from("See Table 4.207"),
5123 abbrev: String::from("SIPD"),
5124 },
5125 218 => TableCategory {
5126 parameter: String::from("Radiative emissivity"),
5127 units: String::from(""),
5128 abbrev: String::from("EPSR"),
5129 },
5130 219 => TableCategory {
5131 parameter: String::from("Turbulence Potential Forecast Index"),
5132 units: String::from(""),
5133 abbrev: String::from("TPFI"),
5134 },
5135 220 => TableCategory {
5136 parameter: String::from("Categorical Severe Thunderstorm"),
5137 units: String::from("Code table 4.222"),
5138 abbrev: String::from("SVRTS"),
5139 },
5140 221 => TableCategory {
5141 parameter: String::from("Probability of Convection"),
5142 units: String::from("%"),
5143 abbrev: String::from("PROCON"),
5144 },
5145 222 => TableCategory {
5146 parameter: String::from("Convection Potential"),
5147 units: String::from("Code table 4.222"),
5148 abbrev: String::from("CONVP"),
5149 },
5150 232 => TableCategory {
5151 parameter: String::from("Volcanic Ash Forecast Transport and Dispersion"),
5152 units: String::from("log10 (kg m-3)"),
5153 abbrev: String::from("VAFTD"),
5154 },
5155 233 => TableCategory {
5156 parameter: String::from("Icing probability"),
5157 units: String::from("non-dim"),
5158 abbrev: String::from("ICPRB"),
5159 },
5160 234 => TableCategory {
5161 parameter: String::from("Icing Severity"),
5162 units: String::from("non-dim"),
5163 abbrev: String::from("ICSEV"),
5164 },
5165 235 => TableCategory {
5166 parameter: String::from("Joint Fire Weather Probability"),
5167 units: String::from("%"),
5168 abbrev: String::from("JFWPRB"),
5169 },
5170 236 => TableCategory {
5171 parameter: String::from("Snow Level"),
5172 units: String::from("m"),
5173 abbrev: String::from("SNOWLVL"),
5174 },
5175 237 => TableCategory {
5176 parameter: String::from("Dry Thunderstorm Probability"),
5177 units: String::from("%"),
5178 abbrev: String::from("DRYTPROB"),
5179 },
5180 238 => TableCategory {
5181 parameter: String::from("Ellrod Index"),
5182 units: String::from(""),
5183 abbrev: String::from("ELLINX"),
5184 },
5185 239 => TableCategory {
5186 parameter: String::from("Craven-Wiedenfeld Aggregate Severe Parameter"),
5187 units: String::from("Numeric"),
5188 abbrev: String::from("CWASP"),
5189 },
5190 240 => TableCategory {
5191 parameter: String::from("Continuous Icing Severity"),
5192 units: String::from("non-dim"),
5193 abbrev: String::from("ICESEVCON"),
5194 },
5195 255 => TableCategory {
5196 parameter: String::from("Missing"),
5197 units: String::from(""),
5198 abbrev: String::from(""),
5199 },
5200 51..=191 => TableCategory {
5201 parameter: String::from("Reserved"),
5202 units: String::from(""),
5203 abbrev: String::from("Reserved"),
5204 },
5205 223..=231 => TableCategory {
5206 parameter: String::from("Reserved"),
5207 units: String::from(""),
5208 abbrev: String::from("Reserved"),
5209 },
5210 _ => TableCategory {
5211 parameter: String::from("Reserved for Local Use"),
5212 units: String::from(""),
5213 abbrev: String::from("Reserved for Local Use"),
5214 },
5215 }
5216}