gistools/readers/grib2/sections/other/
tables.rs

1#![cfg_attr(feature = "nightly", coverage(off))]
2
3/// # ON388 - TABLE A - GENERATING PROCESS OR MODEL
4///
5/// **Details**:
6/// - **Originating Center**: 7 (US-NWS, NCEP)
7/// - **GRIB2 - Product Definition Template in Octet**: 14
8/// - **Revised**: 05/26/2023
9///
10/// **Reserved Ranges**:
11/// - `0-1`: Reserved
12/// - `7-9`: Reserved
13/// - `19`: Reserved
14/// - `24`: Reserved
15/// - `26-29`: Reserved
16/// - `32-41`: Reserved
17/// - `50-51`: Reserved
18/// - `53-63`: Reserved
19/// - `65-67`: Reserved
20/// - `79`: Reserved
21/// - `102-103`: Reserved
22/// - `106`: Reserved
23/// - `142-149`: Reserved
24/// - `194`: Reserved
25/// - `202-209`: Reserved
26/// - `212-214`: Reserved
27/// - `216-219`: Reserved
28/// - `221-230`: Reserved for WPC products
29/// - `231-254`: Reserved
30///
31/// **Special Value**:
32/// - `255`: Missing
33///
34/// ## Description
35/// This table defines the data template definitions used by Originating Center 7 (US-NWS, NCEP) in GRIB2 files,
36/// specifying various generating processes or models and their corresponding template references.
37///
38/// ## Notes
39/// - Red text depicts changes made since 01/25/2022
40#[repr(u8)]
41#[allow(missing_docs)]
42#[derive(Debug, Clone, Copy, PartialEq, Eq)]
43pub enum Grib2TableA {
44    UltraVioletIndexModel = 2,
45    NcepArlTransportAndDispersionModel = 3,
46    NcepArlSmokeModel = 4,
47    SatelliteDerivedPrecipitationAndTemperaturesFromIr = 5,
48    NcepArlDustModel = 6,
49    GlobalWindWaveForecastModel = 10,
50    GlobalMultiGridWaveModelStaticGrids = 11,
51    ProbabilisticStormSurgePSurge = 12,
52    HurricaneMultiGridWaveModel = 13,
53    ExtraTropicalStormSurgeAtlanticDomain = 14,
54    NearshoreWavePredictionSystemNwps = 15,
55    ExtraTropicalStormSurgeEtss = 16,
56    ExtraTropicalStormSurgePacificDomain = 17,
57    ProbabilisticExtraTropicalStormSurgePEtss = 18,
58    ExtraTropicalStormSurgeMicronesiaDomain = 20,
59    ExtraTropicalStormSurgeAtlanticDomain3d = 21,
60    ExtraTropicalStormSurgePacificDomain3d = 22,
61    ExtraTropicalStormSurgeMicronesiaDomain3d = 23,
62    SnowCoverAnalysis = 25,
63    ForecasterGeneratedField = 30,
64    ValueAddedPostProcessedField = 31,
65    GlobalOptimumInterpolationAnalysisGoiFromGfsModel = 42,
66    GlobalOptimumInterpolationAnalysisGoiFromFinalRun = 43,
67    SeaSurfaceTemperatureAnalysis = 44,
68    CoastalOceanCirculationModel = 45,
69    HycomGlobal = 46,
70    HycomNorthPacificBasin = 47,
71    HycomNorthAtlanticBasin = 48,
72    OzoneAnalysisFromTirosObservations = 49,
73    OzoneAnalysisFromNimbus7Observations = 52,
74    RegionalOptimumInterpolationAnalysisRoi = 64,
75    _180WaveTriangular18LayerSpectralModelFromGfsModel = 68,
76    WaveTriangular18LayerSpectralModelFromMediumRangeForecastRun = 69,
77    QuasiLagrangianHurricaneModelQlm = 70,
78    HurricaneWeatherResearchAndForecastingHwrf = 71,
79    HurricaneNonHydrostaticMultiscaleModelOnTheBGridHnmmb = 72,
80    FogForecastModelOceanProdCenter = 73,
81    GulfOfMexicoWindWave = 74,
82    GulfOfAlaskaWindWave = 75,
83    BiasCorrectedMediumRangeForecast = 76,
84    _126WaveTriangular28LayerSpectralModelFromGfsModel = 77,
85    _126WaveTriangular28LayerSpectralModelFromMediumRangeForecastRun = 78,
86    WaveTriangular28LayerSpectralModelFromMediumRangeForecastRun = 80,
87    AnalysisFromGfsGlobalForecastSystem = 81,
88    AnalysisFromGdasGlobalDataAssimilationSystem = 82,
89    HighResolutionRapidRefreshHrrr = 83,
90    MesoNamModelCurrently12Km = 84,
91    RealTimeOceanForecastSystemRtofs = 85,
92    EarlyHurricaneWindSpeedProbabilityModel = 86,
93    CacEnsembleForecastsFromSpectralEnsmb = 87,
94    NoaaWaveWatchIiiNww3OceanWaveModel = 88,
95    NonHydrostaticMesoModelNmmCurrently8Km = 89,
96    WaveTriangular28LayerSpectralModelExtensionOfMediumRangeForecastRun = 90,
97    WaveTriangular28LayerSpectralModelExtensionOfGfsModel = 91,
98    WaveTriangular28LayerSpectralModelRunFromMediumRangeForecastFinalAnalysis = 92,
99    WaveTriangular28LayerSpectralModelRunFromT62GdasAnalysisOfMediumRangeForecastRun = 93,
100    T170L42GlobalSpectralModelFromMrfRun = 94,
101    T126L42GlobalSpectralModelFromMrfRun = 95,
102    GlobalForecastSystemModel = 96,
103    ClimateForecastSystemModel = 98,
104    MiscellaneousTestId99 = 99,
105    MiscellaneousTestId100 = 100,
106    ConventionalObservationReAnalysisCore = 101,
107    NationalBlendGrib = 104,
108    RapidRefreshRap = 105,
109    GlobalEnsembleForecastSystemGefs = 107,
110    LocalizedAviationMosProgramLamp = 108,
111    RealTimeMesoscaleAnalysisRtma = 109,
112    NamModel15KmVersion = 110,
113    NamModelGenericResolution = 111,
114    WrfNmmModelGenericResolution = 112,
115    ProductsFromNcepSrefProcessing = 113,
116    NaefsProductsFromJoinedNcepCmcGlobalEnsembles = 114,
117    DownscaledGfsFromNamExtension = 115,
118    WrfEmModelGenericResolution = 116,
119    NemsGfsAerosolComponent = 117,
120    UnrestrictedMesoscaleAnalysisUrma = 118,
121    WamWholeAtmosphereModel = 119,
122    IceConcentrationAnalysis = 120,
123    WesternNorthAtlanticRegionalWaveModel = 121,
124    AlaskaWatersRegionalWaveModel = 122,
125    NorthAtlanticHurricaneWaveModel = 123,
126    EasternNorthPacificRegionalWaveModel = 124,
127    NorthPacificHurricaneWaveModel = 125,
128    SeaIceForecastModel = 126,
129    LakeIceForecastModel = 127,
130    GlobalOceanForecastModel = 128,
131    GlobalOceanDataAnalysisSystemGodas = 129,
132    MergeOfFieldsFromTheRucNamAndSpectralModel = 130,
133    GreatLakesWaveModel = 131,
134    HighResolutionEnsembleForecastHref = 132,
135    GreatLakesShortRangeWaveModel = 133,
136    RapidRefreshForecastSystemRrfs = 134,
137    HurricaneAnalysisAndForecastSystemHafs = 135,
138    NorthAmericanRegionalReanalysisNarr = 140,
139    LandDataAssimilationAndForecastSystem = 141,
140    NwsRiverForecastSystemNwsrfs = 150,
141    NwsFlashFloodGuidanceSystemNwsffgs = 151,
142    Wsr88dStageIiPrecipitationAnalysis = 152,
143    Wsr88dStageIiiPrecipitationAnalysis = 153,
144    QuantitativePrecipitationForecastGeneratedByNcep = 180,
145    RiverForecastCenterQuantitativePrecipitationForecastMosaicGeneratedByNcep = 181,
146    RiverForecastCenterQuantitativePrecipitationEstimateMosaicGeneratedByNcep = 182,
147    NdfdProductGeneratedByNcepHpc = 183,
148    ClimatologicalCalibratedPrecipitationAnalysisCcpa = 184,
149    NationalConvectiveWeatherDiagnosticGeneratedByNcepAwc = 190,
150    CurrentIcingPotentialAutomatedProductGeneratedByNcepAwc = 191,
151    AnalysisProductFromNcepAwc = 192,
152    ForecastProductFromNcepAwc = 193,
153    ClimateDataAssimilationSystem2Cdas2 = 195,
154    ClimateDataAssimilationSystem2Cdas2UsedForRegenerationRuns = 196,
155    ClimateDataAssimilationSystemCdas = 197,
156    ClimateDataAssimilationSystemCdasUsedForRegenerationRuns = 198,
157    ClimateForecastSystemReanalysisCfsr = 199,
158    CpcManualForecastProduct = 200,
159    CpcAutomatedProduct = 201,
160    EpaAirQualityForecastNorthEastUsDomain = 210,
161    EpaAirQualityForecastEasternUsDomain = 211,
162    SpcManualForecastProduct = 215,
163    NcepOpcAutomatedProduct = 220,
164    Missing = 255,
165}
166impl From<u8> for Grib2TableA {
167    fn from(val: u8) -> Self {
168        match val {
169            2 => Self::UltraVioletIndexModel,
170            3 => Self::NcepArlTransportAndDispersionModel,
171            4 => Self::NcepArlSmokeModel,
172            5 => Self::SatelliteDerivedPrecipitationAndTemperaturesFromIr,
173            6 => Self::NcepArlDustModel,
174            10 => Self::GlobalWindWaveForecastModel,
175            11 => Self::GlobalMultiGridWaveModelStaticGrids,
176            12 => Self::ProbabilisticStormSurgePSurge,
177            13 => Self::HurricaneMultiGridWaveModel,
178            14 => Self::ExtraTropicalStormSurgeAtlanticDomain,
179            15 => Self::NearshoreWavePredictionSystemNwps,
180            16 => Self::ExtraTropicalStormSurgeEtss,
181            17 => Self::ExtraTropicalStormSurgePacificDomain,
182            18 => Self::ProbabilisticExtraTropicalStormSurgePEtss,
183            20 => Self::ExtraTropicalStormSurgeMicronesiaDomain,
184            21 => Self::ExtraTropicalStormSurgeAtlanticDomain3d,
185            22 => Self::ExtraTropicalStormSurgePacificDomain3d,
186            23 => Self::ExtraTropicalStormSurgeMicronesiaDomain3d,
187            25 => Self::SnowCoverAnalysis,
188            30 => Self::ForecasterGeneratedField,
189            31 => Self::ValueAddedPostProcessedField,
190            42 => Self::GlobalOptimumInterpolationAnalysisGoiFromGfsModel,
191            43 => Self::GlobalOptimumInterpolationAnalysisGoiFromFinalRun,
192            44 => Self::SeaSurfaceTemperatureAnalysis,
193            45 => Self::CoastalOceanCirculationModel,
194            46 => Self::HycomGlobal,
195            47 => Self::HycomNorthPacificBasin,
196            48 => Self::HycomNorthAtlanticBasin,
197            49 => Self::OzoneAnalysisFromTirosObservations,
198            52 => Self::OzoneAnalysisFromNimbus7Observations,
199            64 => Self::RegionalOptimumInterpolationAnalysisRoi,
200            68 => Self::_180WaveTriangular18LayerSpectralModelFromGfsModel,
201            69 => Self::WaveTriangular18LayerSpectralModelFromMediumRangeForecastRun,
202            70 => Self::QuasiLagrangianHurricaneModelQlm,
203            71 => Self::HurricaneWeatherResearchAndForecastingHwrf,
204            72 => Self::HurricaneNonHydrostaticMultiscaleModelOnTheBGridHnmmb,
205            73 => Self::FogForecastModelOceanProdCenter,
206            74 => Self::GulfOfMexicoWindWave,
207            75 => Self::GulfOfAlaskaWindWave,
208            76 => Self::BiasCorrectedMediumRangeForecast,
209            77 => Self::_126WaveTriangular28LayerSpectralModelFromGfsModel,
210            78 => Self::_126WaveTriangular28LayerSpectralModelFromMediumRangeForecastRun,
211            80 => Self::WaveTriangular28LayerSpectralModelFromMediumRangeForecastRun,
212            81 => Self::AnalysisFromGfsGlobalForecastSystem,
213            82 => Self::AnalysisFromGdasGlobalDataAssimilationSystem,
214            83 => Self::HighResolutionRapidRefreshHrrr,
215            84 => Self::MesoNamModelCurrently12Km,
216            85 => Self::RealTimeOceanForecastSystemRtofs,
217            86 => Self::EarlyHurricaneWindSpeedProbabilityModel,
218            87 => Self::CacEnsembleForecastsFromSpectralEnsmb,
219            88 => Self::NoaaWaveWatchIiiNww3OceanWaveModel,
220            89 => Self::NonHydrostaticMesoModelNmmCurrently8Km,
221            90 => Self::WaveTriangular28LayerSpectralModelExtensionOfMediumRangeForecastRun,
222            91 => Self::WaveTriangular28LayerSpectralModelExtensionOfGfsModel,
223            92 => Self::WaveTriangular28LayerSpectralModelRunFromMediumRangeForecastFinalAnalysis,
224            93 => Self::WaveTriangular28LayerSpectralModelRunFromT62GdasAnalysisOfMediumRangeForecastRun,
225            94 => Self::T170L42GlobalSpectralModelFromMrfRun,
226            95 => Self::T126L42GlobalSpectralModelFromMrfRun,
227            96 => Self::GlobalForecastSystemModel,
228            98 => Self::ClimateForecastSystemModel,
229            99 => Self::MiscellaneousTestId99,
230            100 => Self::MiscellaneousTestId100,
231            101 => Self::ConventionalObservationReAnalysisCore,
232            104 => Self::NationalBlendGrib,
233            105 => Self::RapidRefreshRap,
234            107 => Self::GlobalEnsembleForecastSystemGefs,
235            108 => Self::LocalizedAviationMosProgramLamp,
236            109 => Self::RealTimeMesoscaleAnalysisRtma,
237            110 => Self::NamModel15KmVersion,
238            111 => Self::NamModelGenericResolution,
239            112 => Self::WrfNmmModelGenericResolution,
240            113 => Self::ProductsFromNcepSrefProcessing,
241            114 => Self::NaefsProductsFromJoinedNcepCmcGlobalEnsembles,
242            115 => Self::DownscaledGfsFromNamExtension,
243            116 => Self::WrfEmModelGenericResolution,
244            117 => Self::NemsGfsAerosolComponent,
245            118 => Self::UnrestrictedMesoscaleAnalysisUrma,
246            119 => Self::WamWholeAtmosphereModel,
247            120 => Self::IceConcentrationAnalysis,
248            121 => Self::WesternNorthAtlanticRegionalWaveModel,
249            122 => Self::AlaskaWatersRegionalWaveModel,
250            123 => Self::NorthAtlanticHurricaneWaveModel,
251            124 => Self::EasternNorthPacificRegionalWaveModel,
252            125 => Self::NorthPacificHurricaneWaveModel,
253            126 => Self::SeaIceForecastModel,
254            127 => Self::LakeIceForecastModel,
255            128 => Self::GlobalOceanForecastModel,
256            129 => Self::GlobalOceanDataAnalysisSystemGodas,
257            130 => Self::MergeOfFieldsFromTheRucNamAndSpectralModel,
258            131 => Self::GreatLakesWaveModel,
259            132 => Self::HighResolutionEnsembleForecastHref,
260            133 => Self::GreatLakesShortRangeWaveModel,
261            134 => Self::RapidRefreshForecastSystemRrfs,
262            135 => Self::HurricaneAnalysisAndForecastSystemHafs,
263            140 => Self::NorthAmericanRegionalReanalysisNarr,
264            141 => Self::LandDataAssimilationAndForecastSystem,
265            150 => Self::NwsRiverForecastSystemNwsrfs,
266            151 => Self::NwsFlashFloodGuidanceSystemNwsffgs,
267            152 => Self::Wsr88dStageIiPrecipitationAnalysis,
268            153 => Self::Wsr88dStageIiiPrecipitationAnalysis,
269            180 => Self::QuantitativePrecipitationForecastGeneratedByNcep,
270            181 => Self::RiverForecastCenterQuantitativePrecipitationForecastMosaicGeneratedByNcep,
271            182 => Self::RiverForecastCenterQuantitativePrecipitationEstimateMosaicGeneratedByNcep,
272            183 => Self::NdfdProductGeneratedByNcepHpc,
273            184 => Self::ClimatologicalCalibratedPrecipitationAnalysisCcpa,
274            190 => Self::NationalConvectiveWeatherDiagnosticGeneratedByNcepAwc,
275            191 => Self::CurrentIcingPotentialAutomatedProductGeneratedByNcepAwc,
276            192 => Self::AnalysisProductFromNcepAwc,
277            193 => Self::ForecastProductFromNcepAwc,
278            195 => Self::ClimateDataAssimilationSystem2Cdas2,
279            196 => Self::ClimateDataAssimilationSystem2Cdas2UsedForRegenerationRuns,
280            197 => Self::ClimateDataAssimilationSystemCdas,
281            198 => Self::ClimateDataAssimilationSystemCdasUsedForRegenerationRuns,
282            199 => Self::ClimateForecastSystemReanalysisCfsr,
283            200 => Self::CpcManualForecastProduct,
284            201 => Self::CpcAutomatedProduct,
285            210 => Self::EpaAirQualityForecastNorthEastUsDomain,
286            211 => Self::EpaAirQualityForecastEasternUsDomain,
287            215 => Self::SpcManualForecastProduct,
288            220 => Self::NcepOpcAutomatedProduct,
289            _ => Self::Missing,
290        }
291    }
292}
293impl core::fmt::Display for Grib2TableA {
294    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
295        let desc = match self {
296            Self::UltraVioletIndexModel => "Ultra Violet Index Model",
297            Self::NcepArlTransportAndDispersionModel => "NCEP/ARL Transport and Dispersion Model",
298            Self::NcepArlSmokeModel => "NCEP/ARL Smoke Model",
299            Self::SatelliteDerivedPrecipitationAndTemperaturesFromIr => "Satellite Derived Precipitation and temperatures, from IR (See PDS Octet 41 ... for specific satellite ID)",
300            Self::NcepArlDustModel => "NCEP/ARL Dust Model",
301            Self::GlobalWindWaveForecastModel => "Global Wind-Wave Forecast Model",
302            Self::GlobalMultiGridWaveModelStaticGrids => "Global Multi-Grid Wave Model (Static Grids)",
303            Self::ProbabilisticStormSurgePSurge => "Probabilistic Storm Surge (P-Surge)",
304            Self::HurricaneMultiGridWaveModel => "Hurricane Multi-Grid Wave Model",
305            Self::ExtraTropicalStormSurgeAtlanticDomain => "Extra-tropical Storm Surge Atlantic Domain",
306            Self::NearshoreWavePredictionSystemNwps => "Nearshore Wave Prediction System (NWPS)",
307            Self::ExtraTropicalStormSurgeEtss => "Extra-Tropical Storm Surge (ETSS)",
308            Self::ExtraTropicalStormSurgePacificDomain => "Extra-tropical Storm Surge Pacific Domain",
309            Self::ProbabilisticExtraTropicalStormSurgePEtss => "Probabilistic Extra-Tropical Storm Surge (P-ETSS)",
310            Self::ExtraTropicalStormSurgeMicronesiaDomain => "Extra-tropical Storm Surge Micronesia Domain",
311            Self::ExtraTropicalStormSurgeAtlanticDomain3d => "Extra-tropical Storm Surge Atlantic Domain (3D)",
312            Self::ExtraTropicalStormSurgePacificDomain3d => "Extra-tropical Storm Surge Pacific Domain (3D)",
313            Self::ExtraTropicalStormSurgeMicronesiaDomain3d => "Extra-tropical Storm Surge Micronesia Domain (3D)",
314            Self::SnowCoverAnalysis => "Snow Cover Analysis",
315            Self::ForecasterGeneratedField => "Forecaster generated field",
316            Self::ValueAddedPostProcessedField => "Value added post processed field",
317            Self::GlobalOptimumInterpolationAnalysisGoiFromGfsModel => "Global Optimum Interpolation Analysis (GOI) from GFS model",
318            Self::GlobalOptimumInterpolationAnalysisGoiFromFinalRun => "Global Optimum Interpolation Analysis (GOI) from \"Final\" run",
319            Self::SeaSurfaceTemperatureAnalysis => "Sea Surface Temperature Analysis",
320            Self::CoastalOceanCirculationModel => "Coastal Ocean Circulation Model",
321            Self::HycomGlobal => "HYCOM - Global",
322            Self::HycomNorthPacificBasin => "HYCOM - North Pacific basin",
323            Self::HycomNorthAtlanticBasin => "HYCOM - North Atlantic basin",
324            Self::OzoneAnalysisFromTirosObservations => "Ozone Analysis from TIROS Observations",
325            Self::OzoneAnalysisFromNimbus7Observations => "Ozone Analysis from Nimbus 7 Observations",
326            Self::RegionalOptimumInterpolationAnalysisRoi => "Regional Optimum Interpolation Analysis (ROI)",
327            Self::_180WaveTriangular18LayerSpectralModelFromGfsModel => "80 wave triangular, 18-layer Spectral model from GFS model",
328            Self::WaveTriangular18LayerSpectralModelFromMediumRangeForecastRun => "80 wave triangular, 18 layer Spectral model from \"Medium Range Forecast\" run",
329            Self::QuasiLagrangianHurricaneModelQlm => "Quasi-Lagrangian Hurricane Model (QLM)",
330            Self::HurricaneWeatherResearchAndForecastingHwrf => "Hurricane Weather Research and Forecasting (HWRF)",
331            Self::HurricaneNonHydrostaticMultiscaleModelOnTheBGridHnmmb => "Hurricane Non-Hydrostatic Multiscale Model on the B Grid (HNMMB)",
332            Self::FogForecastModelOceanProdCenter => "Fog Forecast model - Ocean Prod. Center",
333            Self::GulfOfMexicoWindWave => "Gulf of Mexico Wind/Wave",
334            Self::GulfOfAlaskaWindWave => "Gulf of Alaska Wind/Wave",
335            Self::BiasCorrectedMediumRangeForecast => "Bias corrected Medium Range Forecast",
336            Self::_126WaveTriangular28LayerSpectralModelFromGfsModel => "126 wave triangular, 28 layer Spectral model from GFS model",
337            Self::_126WaveTriangular28LayerSpectralModelFromMediumRangeForecastRun => "126 wave triangular, 28 layer Spectral model from \"Medium Range Forecast\" run",
338            Self::WaveTriangular28LayerSpectralModelFromMediumRangeForecastRun => "62 wave triangular, 28 layer Spectral model from \"Medium Range Forecast\" run",
339            Self::AnalysisFromGfsGlobalForecastSystem => "Analysis from GFS (Global Forecast System)",
340            Self::AnalysisFromGdasGlobalDataAssimilationSystem => "Analysis from GDAS (Global Data Assimilation System)",
341            Self::HighResolutionRapidRefreshHrrr => "High Resolution Rapid Refresh (HRRR)",
342            Self::MesoNamModelCurrently12Km => "MESO NAM Model (currently 12 km)",
343            Self::RealTimeOceanForecastSystemRtofs => "Real Time Ocean Forecast System (RTOFS)",
344            Self::EarlyHurricaneWindSpeedProbabilityModel => "Early Hurricane Wind Speed Probability Model",
345            Self::CacEnsembleForecastsFromSpectralEnsmb => "CAC Ensemble Forecasts from Spectral (ENSMB)",
346            Self::NoaaWaveWatchIiiNww3OceanWaveModel => "NOAA Wave Watch III (NWW3) Ocean Wave Model",
347            Self::NonHydrostaticMesoModelNmmCurrently8Km => "Non-hydrostatic Meso Model (NMM) (Currently 8 km)",
348            Self::WaveTriangular28LayerSpectralModelExtensionOfMediumRangeForecastRun => "62 wave triangular, 28 layer spectral model extension of the \"Medium Range Forecast\" run",
349            Self::WaveTriangular28LayerSpectralModelExtensionOfGfsModel => "62 wave triangular, 28 layer spectral model extension of the GFS model",
350            Self::WaveTriangular28LayerSpectralModelRunFromMediumRangeForecastFinalAnalysis => "62 wave triangular, 28 layer spectral model run from the \"Medium Range Forecast\" final analysis",
351            Self::WaveTriangular28LayerSpectralModelRunFromT62GdasAnalysisOfMediumRangeForecastRun => "62 wave triangular, 28 layer spectral model run from the T62 GDAS analysis of the \"Medium Range Forecast\" run",
352            Self::T170L42GlobalSpectralModelFromMrfRun => "T170/L42 Global Spectral Model from MRF run",
353            Self::T126L42GlobalSpectralModelFromMrfRun => "T126/L42 Global Spectral Model from MRF run",
354            Self::GlobalForecastSystemModel => "Global Forecast System Model. T1534 - Forecast hours 00-384; T574 - Forecast hours 00-192; T190 - Forecast hours 204-384",
355            Self::ClimateForecastSystemModel => "Climate Forecast System Model -- Atmospheric model (GFS) coupled to a multi level ocean model. Currently GFS spectral model at T62, 64 levels coupled to 40 level MOM3 ocean model.",
356            Self::MiscellaneousTestId99 => "Miscellaneous Test ID",
357            Self::MiscellaneousTestId100 => "Miscellaneous Test ID",
358            Self::ConventionalObservationReAnalysisCore => "Conventional Observation Re-Analysis (CORE)",
359            Self::NationalBlendGrib => "National Blend GRIB",
360            Self::RapidRefreshRap => "Rapid Refresh (RAP)",
361            Self::GlobalEnsembleForecastSystemGefs => "Global Ensemble Forecast System (GEFS)",
362            Self::LocalizedAviationMosProgramLamp => "Localized Aviation MOS Program (LAMP)",
363            Self::RealTimeMesoscaleAnalysisRtma => "Real Time Mesoscale Analysis (RTMA)",
364            Self::NamModel15KmVersion => "NAM Model - 15km version",
365            Self::NamModelGenericResolution => "NAM model, generic resolution (Used in SREF processing)",
366            Self::WrfNmmModelGenericResolution => "WRF-NMM model, generic resolution (Used in various runs) NMM=Nondydrostatic Mesoscale Model (NCEP)",
367            Self::ProductsFromNcepSrefProcessing => "Products from NCEP SREF processing",
368            Self::NaefsProductsFromJoinedNcepCmcGlobalEnsembles => "NAEFS Products from joined NCEP, CMC global ensembles",
369            Self::DownscaledGfsFromNamExtension => "Downscaled GFS from NAM eXtension",
370            Self::WrfEmModelGenericResolution => "WRF-EM model, generic resolution (Used in various runs) EM - Eulerian Mass-core (NCAR - aka Advanced Research WRF)",
371            Self::NemsGfsAerosolComponent => "NEMS GFS Aerosol Component",
372            Self::UnrestrictedMesoscaleAnalysisUrma => "UnRestricted Mesoscale Analysis (URMA)",
373            Self::WamWholeAtmosphereModel => "WAM (Whole Atmosphere Model)",
374            Self::IceConcentrationAnalysis => "Ice Concentration Analysis",
375            Self::WesternNorthAtlanticRegionalWaveModel => "Western North Atlantic Regional Wave Model",
376            Self::AlaskaWatersRegionalWaveModel => "Alaska Waters Regional Wave Model",
377            Self::NorthAtlanticHurricaneWaveModel => "North Atlantic Hurricane Wave Model",
378            Self::EasternNorthPacificRegionalWaveModel => "Eastern North Pacific Regional Wave Model",
379            Self::NorthPacificHurricaneWaveModel => "North Pacific Hurricane Wave Model",
380            Self::SeaIceForecastModel => "Sea Ice Forecast Model",
381            Self::LakeIceForecastModel => "Lake Ice Forecast Model",
382            Self::GlobalOceanForecastModel => "Global Ocean Forecast Model",
383            Self::GlobalOceanDataAnalysisSystemGodas => "Global Ocean Data Analysis System (GODAS)",
384            Self::MergeOfFieldsFromTheRucNamAndSpectralModel => "Merge of fields from the RUC, NAM, and Spectral Model",
385            Self::GreatLakesWaveModel => "Great Lakes Wave Model",
386            Self::HighResolutionEnsembleForecastHref => "High Resolution Ensemble Forecast (HREF)",
387            Self::GreatLakesShortRangeWaveModel => "Great Lakes Short Range Wave Model",
388            Self::RapidRefreshForecastSystemRrfs => "Rapid Refresh Forecast System (RRFS)",
389            Self::HurricaneAnalysisAndForecastSystemHafs => "Hurricane Analysis and Forecast System (HAFS)",
390            Self::NorthAmericanRegionalReanalysisNarr => "North American Regional Reanalysis (NARR)",
391            Self::LandDataAssimilationAndForecastSystem => "Land Data Assimilation and Forecast System",
392            Self::NwsRiverForecastSystemNwsrfs => "NWS River Forecast System (NWSRFS)",
393            Self::NwsFlashFloodGuidanceSystemNwsffgs => "NWS Flash Flood Guidance System (NWSFFGS)",
394            Self::Wsr88dStageIiPrecipitationAnalysis => "WSR-88D Stage II Precipitation Analysis",
395            Self::Wsr88dStageIiiPrecipitationAnalysis => "WSR-88D Stage III Precipitation Analysis",
396            Self::QuantitativePrecipitationForecastGeneratedByNcep => "Quantitative Precipitation Forecast generated by NCEP",
397            Self::RiverForecastCenterQuantitativePrecipitationForecastMosaicGeneratedByNcep => "River Forecast Center Quantitative Precipitation Forecast mosaic generated by NCEP",
398            Self::RiverForecastCenterQuantitativePrecipitationEstimateMosaicGeneratedByNcep => "River Forecast Center Quantitative Precipitation estimate mosaic generated by NCEP",
399            Self::NdfdProductGeneratedByNcepHpc => "NDFD product generated by NCEP/HPC",
400            Self::ClimatologicalCalibratedPrecipitationAnalysisCcpa => "Climatological Calibrated Precipitation Analysis (CCPA)",
401            Self::NationalConvectiveWeatherDiagnosticGeneratedByNcepAwc => "National Convective Weather Diagnostic generated by NCEP/AWC",
402            Self::CurrentIcingPotentialAutomatedProductGeneratedByNcepAwc => "Current Icing Potential automated product generated by NCEP/AWC",
403            Self::AnalysisProductFromNcepAwc => "Analysis product from NCEP/AWC",
404            Self::ForecastProductFromNcepAwc => "Forecast product from NCEP/AWC",
405            Self::ClimateDataAssimilationSystem2Cdas2 => "Climate Data Assimilation System 2 (CDAS2)",
406            Self::ClimateDataAssimilationSystem2Cdas2UsedForRegenerationRuns => "Climate Data Assimilation System 2 (CDAS2) - used for regeneration runs",
407            Self::ClimateDataAssimilationSystemCdas => "Climate Data Assimilation System (CDAS)",
408            Self::ClimateDataAssimilationSystemCdasUsedForRegenerationRuns => "Climate Data Assimilation System (CDAS) - used for regeneration runs",
409            Self::ClimateForecastSystemReanalysisCfsr => "Climate Forecast System Reanalysis (CFSR) -- Atmospheric model (GFS) coupled to a multi level ocean, land and seaice model. GFS spectral model at T382, 64 levels coupled to 40 level MOM4 ocean model.",
410            Self::CpcManualForecastProduct => "CPC Manual Forecast Product",
411            Self::CpcAutomatedProduct => "CPC Automated Product",
412            Self::EpaAirQualityForecastNorthEastUsDomain => "EPA Air Quality Forecast - Currently North East US domain",
413            Self::EpaAirQualityForecastEasternUsDomain => "EPA Air Quality Forecast - Currently Eastern US domain",
414            Self::SpcManualForecastProduct => "SPC Manual Forecast Product",
415            Self::NcepOpcAutomatedProduct => "NCEP/OPC automated product",
416            Self::Missing => "Missing",
417        };
418        f.write_str(desc)
419    }
420}
421
422/// # ON388 - TABLE C - NATIONAL SUB-CENTERS (Assigned By The Nation)
423///
424/// **Details**:
425/// - **Originating Center**: 7 (US-NWS, NCEP)
426/// - **GRIB1 - PDS Octet**: 26
427/// - **GRIB2 - Section**: 1, Octets 8-9
428/// - **Revised**: 02/23/2024
429///
430/// **Reserved Ranges**:
431/// - `0`: Reserved
432/// - `19-254`: Reserved
433///
434/// **Special Value**:
435/// - `255`: Missing
436///
437/// ## Description
438/// This table defines the national sub-centers assigned by Originating Center 7 (US-NWS, NCEP) in GRIB1 and GRIB2 files,
439/// specifying various generating processes or models.
440///
441/// ## Notes
442/// - Red text depicts changes made since 06/25/2019
443#[repr(u8)]
444#[allow(missing_docs)]
445#[derive(Debug, Clone, Copy, PartialEq, Eq)]
446pub enum Grib2TableC {
447    NcepReAnalysisProject = 1,
448    NcepEnsembleProducts = 2,
449    NcepCentralOperations = 3,
450    EnvironmentalModelingCenter = 4,
451    WeatherPredictionCenter = 5,
452    OceanPredictionCenter = 6,
453    ClimatePredictionCenter = 7,
454    AviationWeatherCenter = 8,
455    StormPredictionCenter = 9,
456    NationalHurricaneCenter = 10,
457    NwsTechniquesDevelopmentLaboratory = 11,
458    NesdisOfficeOfResearchAndApplications = 12,
459    FederalAviationAdministration = 13,
460    NwsMeteorologicalDevelopmentLaboratory = 14,
461    NorthAmericanRegionalReanalysisProject = 15,
462    SpaceWeatherPredictionCenter = 16,
463    EsrlGlobalSystemsDivision = 17,
464    NationalWaterCenter = 18,
465    Missing = 255,
466}
467impl From<u8> for Grib2TableC {
468    fn from(val: u8) -> Self {
469        match val {
470            1 => Self::NcepReAnalysisProject,
471            2 => Self::NcepEnsembleProducts,
472            3 => Self::NcepCentralOperations,
473            4 => Self::EnvironmentalModelingCenter,
474            5 => Self::WeatherPredictionCenter,
475            6 => Self::OceanPredictionCenter,
476            7 => Self::ClimatePredictionCenter,
477            8 => Self::AviationWeatherCenter,
478            9 => Self::StormPredictionCenter,
479            10 => Self::NationalHurricaneCenter,
480            11 => Self::NwsTechniquesDevelopmentLaboratory,
481            12 => Self::NesdisOfficeOfResearchAndApplications,
482            13 => Self::FederalAviationAdministration,
483            14 => Self::NwsMeteorologicalDevelopmentLaboratory,
484            15 => Self::NorthAmericanRegionalReanalysisProject,
485            16 => Self::SpaceWeatherPredictionCenter,
486            17 => Self::EsrlGlobalSystemsDivision,
487            18 => Self::NationalWaterCenter,
488            _ => Self::Missing,
489        }
490    }
491}
492impl core::fmt::Display for Grib2TableC {
493    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
494        let desc = match self {
495            Self::NcepReAnalysisProject => "NCEP Re-Analysis Project",
496            Self::NcepEnsembleProducts => "NCEP Ensemble Products",
497            Self::NcepCentralOperations => "NCEP Central Operations",
498            Self::EnvironmentalModelingCenter => "Environmental Modeling Center",
499            Self::WeatherPredictionCenter => "Weather Prediction Center",
500            Self::OceanPredictionCenter => "Ocean Prediction Center",
501            Self::ClimatePredictionCenter => "Climate Prediction Center",
502            Self::AviationWeatherCenter => "Aviation Weather Center",
503            Self::StormPredictionCenter => "Storm Prediction Center",
504            Self::NationalHurricaneCenter => "National Hurricane Center",
505            Self::NwsTechniquesDevelopmentLaboratory => "NWS Techniques Development Laboratory",
506            Self::NesdisOfficeOfResearchAndApplications => {
507                "NESDIS Office of Research and Applications"
508            }
509            Self::FederalAviationAdministration => "Federal Aviation Administration",
510            Self::NwsMeteorologicalDevelopmentLaboratory => {
511                "NWS Meteorological Development Laboratory"
512            }
513            Self::NorthAmericanRegionalReanalysisProject => {
514                "North American Regional Reanalysis Project"
515            }
516            Self::SpaceWeatherPredictionCenter => "Space Weather Prediction Center",
517            Self::EsrlGlobalSystemsDivision => "ESRL Global Systems Division",
518            Self::NationalWaterCenter => "National Water Center",
519            Self::Missing => "Missing",
520        };
521        f.write_str(desc)
522    }
523}