# Copyright 2005-2018 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. # # In applying this licence, ECMWF does not waive the privileges and immunities granted to it by # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # # START 1/local.98.13 ---------------------------------------------------------------------- # LOCAL 98 13 # # localDefinitionTemplate_013 # --------------------------- # # Description Octet Code Ksec1 Count # ----------- ----- ---- ----- ----- #localDefinitionNumber 41 I1 37 - #class 42 I1 38 - #type 43 I1 39 - #stream 44 I2 40 - #experimentVersionNumber 46 A4 41 - #number 50 I1 42 - #total 51 I1 43 - #directionNumber 52 I1 44 - #frequencyNumber 53 I1 45 - #numberOfDirections 54 I1 46 - #numberOfFrequencies 55 I1 47 - #directionScalingFactor 56 I4 48 - #frequencyScalingFactor 60 I4 49 - #flag 64 F1 - 3 #scaledDirections 101 LP_I4 50 numberOfDirections #scaledFrequencies - LP_I4 - numberOfFrequencies # template mars_labeling "grib1/mars_labeling.def"; unsigned[1] perturbationNumber : dump; alias number = perturbationNumber; unsigned[1] numberOfForecastsInEnsemble : dump ; alias totalNumber=numberOfForecastsInEnsemble; unsigned[1] directionNumber : dump ; alias mars.direction = directionNumber; unsigned[1] frequencyNumber : dump ; alias mars.frequency = frequencyNumber; unsigned[1] numberOfDirections : dump ; alias totalNumberOfDirections = numberOfDirections ; unsigned[1] numberOfFrequencies : dump; alias totalNumberOfFrequencies = numberOfFrequencies ; unsigned[4] directionScalingFactor : dump; alias integerScalingFactorAppliedToDirections = directionScalingFactor; unsigned[4] frequencyScalingFactor : dump; alias integerScalingFactorAppliedToFrequencies = frequencyScalingFactor ; constant localFlagLatestVersion = 4 : hidden; codetable[1] localFlag "grib1/local.13.table" = localFlagLatestVersion; #! #! Old versions of wave 2D spectra direction and frequency do not #! have the systemNumber and methodNumber, and the flag is set to 0. #! #if0 - IF_EQ 0 flag #spareSetToZero 65 PAD n/a 36 #endif0 - ENDIF if0 if(localFlag == 0) { pad padding_loc13_1(36); } #! #! Old versions of wave 2D spectra direction and frequency do not #! have the systemNumber and methodNumber, and the flag is set to 0. #! #! #! #if1 - IF_EQ 1 flag #systemNumber 065 I2 - - #methodNumber 067 I2 - - #spareSetToZero1 069 PAD n/a 32 #endif1 - ENDIF if1 if(localFlag == 1) { unsigned[2] systemNumber : dump; unsigned[2] methodNumber : dump; alias system = systemNumber; alias method = methodNumber; pad padding_loc13_2(32); } #if2 - IF_EQ 2 flag #systemNumber 065 I2 - - #methodNumber 067 I2 - - #referenceDate 069 I4 - - #climateDateFrom 073 I4 - - #climateDateTo 077 I4 - - #spareSetToZero2 081 PAD n/a 20 #endif2 - ENDIF if2 if(localFlag == 2) { unsigned[2] systemNumber : dump; unsigned[2] methodNumber : dump; unsigned[4] referenceDate : dump ; unsigned[4] climateDateFrom : dump ; unsigned[4] climateDateTo : dump ; alias system = systemNumber; alias method = methodNumber; alias refdate = referenceDate; pad padding_loc13_3(20); } #if3 - IF_EQ 3 flag #systemNumber 065 I2 - - #methodNumber 067 I2 - - #referenceDate 069 I4 - - #climateDateFrom 073 I4 - - #climateDateTo 077 I4 - - #legBaseDate 081 I4 - - #legBaseTime 085 I2 - - #legNumber 087 I1 - - #oceanAtmosphereCoupling 088 I1 - - #spareSetToZero3 089 PAD n/a 12 #endif3 - ENDIF if3 if(localFlag == 3) { unsigned[2] systemNumber = 65535 : dump,can_be_missing ; unsigned[2] methodNumber = 65535 : dump,can_be_missing ; unsigned[4] referenceDate : dump ; unsigned[4] climateDateFrom : dump ; unsigned[4] climateDateTo : dump ; unsigned[4] legBaseDate : dump; alias baseDateOfThisLeg = legBaseDate; unsigned[2] legBaseTime : dump; alias baseTimeOfThisLeg = legBaseTime; unsigned[1] legNumber : dump; unsigned[1] oceanAtmosphereCoupling : dump; pad padding_loc13_4(12); alias system = systemNumber; alias method = methodNumber; alias refdate = referenceDate; alias mars._leg_number = legNumber; } #if4 - IF_EQ 4 flag #systemNumber 065 I2 - - #methodNumber 067 I2 - - #referenceDate 069 I4 - - #climateDateFrom 073 I4 - - #climateDateTo 077 I4 - - #legBaseDate 081 I4 - - #legBaseTime 085 I2 - - #legNumber 087 I1 - - #oceanAtmosphereCoupling 088 I1 - - #offsetToEndOf4DvarWindow 089 I2 - - #lengthOf4DvarWindow 091 I2 - - #spareSetToZero3 093 PAD n/a 8 #endif4 - ENDIF if4 if(localFlag == 4) { unsigned[2] systemNumber = 65535 : dump,can_be_missing ; unsigned[2] methodNumber = 65535 : dump,can_be_missing ; unsigned[4] referenceDate : dump ; unsigned[4] climateDateFrom : dump ; unsigned[4] climateDateTo : dump ; unsigned[4] legBaseDate : dump; alias baseDateOfThisLeg = legBaseDate; unsigned[2] legBaseTime : dump; alias baseTimeOfThisLeg = legBaseTime; unsigned[1] legNumber : dump; unsigned[1] oceanAtmosphereCoupling : dump; # Hours unsigned[2] offsetToEndOf4DvarWindow : dump; alias anoffset=offsetToEndOf4DvarWindow; unsigned[2] lengthOf4DvarWindow : dump; alias system = systemNumber; alias method = methodNumber; alias refdate = referenceDate; alias mars._leg_number = legNumber; pad padding_loc13_5(8); } unsigned[4] scaledDirections[numberOfDirections] : dump; unsigned[4] scaledFrequencies[numberOfFrequencies] : dump; constant GRIBEXSection1Problem = 100 + 4 * numberOfDirections + 4 * numberOfFrequencies - section1Length ; # END 1/local.98.13 ----------------------------------------------------------------------