def load(h): h.add(_.Constant('GRIBEXSection1Problem', (328 - _.Get('section1Length')))) _.Template('grib1/mars_labeling.def').load(h) h.add(_.Unsigned('clusterNumber', 1)) h.alias('number', 'clusterNumber') h.add(_.Unsigned('totalNumberOfClusters', 1)) h.alias('totalNumber', 'totalNumberOfClusters') h.add(_.Pad('padding_loc2_1', 1)) h.add(_.Unsigned('clusteringMethod', 1)) h.add(_.Unsigned('startTimeStep', 2)) h.add(_.Unsigned('endTimeStep', 2)) h.add(_.Signed('northernLatitudeOfDomain', 3)) h.add(_.Signed('westernLongitudeOfDomain', 3)) h.add(_.Signed('southernLatitudeOfDomain', 3)) h.add(_.Signed('easternLongitudeOfDomain', 3)) h.add(_.Unsigned('operationalForecastCluster', 1)) h.add(_.Unsigned('controlForecastCluster', 1)) h.add(_.Unsigned('numberOfForecastsInCluster', 1)) if (h.get_l('numberOfForecastsInCluster') > 0): h.add( _.Unsigned('ensembleForecastNumbers', 1, _.Get('numberOfForecastsInCluster'))) h.add(_.Padto('padding_loc2_2', (_.Get('offsetSection1') + 328))) h.add(_.Constant('unknown', "-")) h.add( _.Concept('clusteringDomain', 'unknown', 'cluster_domain.def', 'conceptsMasterDir', 'conceptsLocalDirAll', True)) h.alias('number', 'clusterNumber') h.alias('domain', 'clusteringDomain')
def load(h): h.add(_.Constant('GRIBEXSection1Problem', (334 - _.Get('section1Length')))) _.Template('grib1/mars_labeling.def').load(h) h.add(_.Unsigned('tubeNumber', 1)) h.add(_.Unsigned('totalNumberOfTubes', 1)) h.add(_.Unsigned('centralClusterDefinition', 1)) h.add(_.Unsigned('parameterIndicator', 1)) h.add(_.Unsigned('levelIndicator', 1)) h.add(_.Signed('northLatitudeOfDomainOfTubing', 3)) h.add(_.Signed('westLongitudeOfDomainOfTubing', 3)) h.add(_.Signed('southLatitudeOfDomainOfTubing', 3)) h.add(_.Signed('eastLongitudeOfDomainOfTubing', 3)) h.add(_.Unsigned('numberOfOperationalForecastTube', 1)) h.add(_.Unsigned('numberOfControlForecastTube', 1)) h.add(_.Unsigned('heightOrPressureOfLevel', 2)) h.add(_.Unsigned('referenceStep', 2)) h.add(_.Unsigned('radiusOfCentralCluster', 2)) h.add(_.Unsigned('ensembleStandardDeviation', 2)) h.add(_.Unsigned('distanceFromTubeToEnsembleMean', 2)) h.add(_.Unsigned('numberOfForecastsInTube', 1)) h.add(_.Unsigned('ensembleForecastNumbers', 1, _.Get('numberOfForecastsInTube'))) h.add(_.Padto('padding_loc10_1', (_.Get('offsetSection1') + 334))) h.add(_.Concept('tubeDomain', 'unknown', 'tube_domain.def', 'conceptsMasterDir', 'conceptsLocalDirAll', False)) h.alias('number', 'tubeNumber') h.alias('totalNumber', 'totalNumberOfTubes') h.alias('reference', 'referenceStep') h.alias('domain', 'tubeDomain')
def load(h): h.add(_.Constant('GRIBEXSection1Problem', (960 - _.Get('section1Length')))) _.Template('grib1/mars_labeling.def').load(h) h.add(_.Unsigned('clusterNumber', 1)) h.alias('number', 'clusterNumber') h.add(_.Unsigned('totalNumberOfClusters', 1)) h.alias('totalNumber', 'totalNumberOfClusters') h.add(_.Pad('padding_loc29_1', 1)) h.add(_.Unsigned('clusteringMethod', 1)) h.add(_.Signed('northernLatitudeOfDomain', 3)) h.add(_.Signed('westernLongitudeOfDomain', 3)) h.add(_.Signed('southernLatitudeOfDomain', 3)) h.add(_.Signed('easternLongitudeOfDomain', 3)) h.add(_.Unsigned('numberOfForecastsInCluster', 1)) h.add(_.Unsigned('numberOfParametersUsedForClustering', 1)) h.add(_.Unsigned('numberOfPressureLevelsUsedForClustering', 1)) h.add(_.Unsigned('numberOfStepsUsedForClustering', 1)) h.add(_.Pad('padding_loc29_2', 10)) with h.list('listOfEnsembleForecastNumbers'): for i in range(0, h.get_l('numberOfForecastsInCluster')): h.add(_.Unsigned('baseDateEPS', 4)) h.add(_.Unsigned('baseTimeEPS', 2)) h.add(_.Unsigned('number', 1)) with h.list('listOfParametersUsedForClustering'): for i in range(0, h.get_l('numberOfParametersUsedForClustering')): h.add(_.Unsigned('parameterCode', 1)) h.add(_.Unsigned('tableCode', 1)) h.add(_.Unsigned('pressureLevel', 2, _.Get('numberOfPressureLevelsUsedForClustering'))) h.add(_.Unsigned('stepForClustering', 2, _.Get('numberOfStepsUsedForClustering'))) h.add(_.Padto('padding_loc29_3', (_.Get('offsetSection1') + 960))) h.alias('number', 'clusterNumber')
def load(h): h.add(_.Ieeefloat('referenceValue', 4)) h.add( _.Reference_value_error('referenceValueError', _.Get('referenceValue'), _.Get('ieee'))) h.add(_.Signed('binaryScaleFactor', 2)) h.add(_.Signed('decimalScaleFactor', 2)) h.add(_.Transient('optimizeScaleFactor', 0)) h.add(_.Unsigned('bitsPerValue', 1)) h.alias('numberOfBits', 'bitsPerValue') h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue') h.add( _.Codetable('typeOfOriginalFieldValues', 1, "5.1.table", _.Get('masterDir'), _.Get('localDir'))) h.add( _.Codetable('groupSplittingMethodUsed', 1, "5.4.table", _.Get('masterDir'), _.Get('localDir'))) h.add( _.Codetable('missingValueManagementUsed', 1, "5.5.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('primaryMissingValueSubstitute', 4)) h.add(_.Unsigned('secondaryMissingValueSubstitute', 4)) h.add(_.Unsigned('numberOfGroupsOfDataValues', 4)) h.alias('NG', 'numberOfGroupsOfDataValues') h.add(_.Unsigned('referenceForGroupWidths', 1)) h.add(_.Unsigned('numberOfBitsUsedForTheGroupWidths', 1)) h.add(_.Unsigned('referenceForGroupLengths', 4)) h.add(_.Unsigned('lengthIncrementForTheGroupLengths', 1)) h.add(_.Unsigned('trueLengthOfLastGroup', 4)) h.add(_.Unsigned('numberOfBitsForScaledGroupLengths', 1)) h.alias('numberOfBitsUsedForTheScaledGroupLengths', 'numberOfBitsForScaledGroupLengths')
def load(h): h.add(_.Ieeefloat('referenceValue', 4)) h.add( _.Reference_value_error('referenceValueError', _.Get('referenceValue'), _.Get('ieee'))) h.add(_.Signed('binaryScaleFactor', 2)) h.add(_.Signed('decimalScaleFactor', 2)) h.add(_.Transient('optimizeScaleFactor', 0)) h.add(_.Unsigned('bitsPerValue', 1)) h.add(_.Unsigned('widthOfFirstOrderValues', 1)) h.add(_.Unsigned('numberOfGroups', 4)) h.add(_.Unsigned('numberOfSecondOrderPackedValues', 4)) h.add(_.Unsigned('widthOfWidths', 1)) h.add(_.Unsigned('widthOfLengths', 1)) h.add( _.Codeflag('secondOrderFlags', 1, "grib2/tables/[tablesVersion]/5.50002.table")) h.add(_.Unsigned('orderOfSPD', 1)) h.add(_.Bit('boustrophedonicOrdering', _.Get('secondOrderFlags'), 7)) h.alias('boustrophedonic', 'boustrophedonicOrdering') if h.get_l('orderOfSPD'): h.add(_.Unsigned('widthOfSPD', 1)) h.add(_.Spd('SPD', _.Get('widthOfSPD'), _.Get('orderOfSPD')))
def load(h): h.add(_.Codetable('parameterCategory', 1, "4.1.[discipline:l].table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable('parameterNumber', 1, "4.2.[discipline:l].[parameterCategory:l].table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable_units('parameterUnits', _.Get('parameterNumber'))) h.add(_.Codetable_title('parameterName', _.Get('parameterNumber'))) h.add(_.Codetable('constituentType', 2, "4.230.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('numberOfModeOfDistribution', 2)) h.add(_.Unsigned('modeNumber', 2)) h.add(_.Codetable('typeOfDistributionFunction', 2, "4.240.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('numberOfDistributionFunctionParameters', 1)) h.alias('NP', 'numberOfDistributionFunctionParameters') with h.list('listOfDistributionFunctionParameter'): for i in range(0, h.get_l('numberOfDistributionFunctionParameters')): h.add(_.Signed('scaleFactorOfDistributionFunctionParameter', 1)) h.add(_.Unsigned('scaledValueOfDistributionFunctionParameter', 4)) h.add(_.Codetable('typeOfGeneratingProcess', 1, "4.3.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('backgroundProcess', 1)) h.alias('backgroundGeneratingProcessIdentifier', 'backgroundProcess') h.add(_.Unsigned('generatingProcessIdentifier', 1)) h.add(_.Unsigned('hoursAfterDataCutoff', 2)) h.alias('hoursAfterReferenceTimeOfDataCutoff', 'hoursAfterDataCutoff') h.add(_.Unsigned('minutesAfterDataCutoff', 1)) h.alias('minutesAfterReferenceTimeOfDataCutoff', 'minutesAfterDataCutoff') h.add(_.Codetable('indicatorOfUnitOfTimeRange', 1, "4.4.table", _.Get('masterDir'), _.Get('localDir'))) h.alias('defaultStepUnits', 'one') _.Template('grib2/localConcepts/[centre:s]/default_step_units.def', True).load(h) h.add(_.TransientCodetable('stepUnits', 1, "stepUnits.table")) h.add(_.Signed('forecastTime', 4))
def load(h): h.add(_.Ieeefloat('referenceValue', 4)) h.add( _.Reference_value_error('referenceValueError', _.Get('referenceValue'), _.Get('ieee'))) h.add(_.Signed('binaryScaleFactor', 2)) h.add(_.Signed('decimalScaleFactor', 2)) h.add(_.Transient('optimizeScaleFactor', 0)) h.add(_.Unsigned('bitsPerValue', 1)) h.alias('numberOfBits', 'bitsPerValue') h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue') h.add( _.Codetable('typeOfOriginalFieldValues', 1, "5.1.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('ccsdsFlags', 1)) h.alias('ccsdsCompressionOptionsMask', 'ccsdsFlags') h.add(_.Bit('AEC_DATA_SIGNED_OPTION_MASK', _.Get('ccsdsFlags'), 0)) h.add(_.Bit('AEC_DATA_3BYTE_OPTION_MASK', _.Get('ccsdsFlags'), 1)) h.add(_.Bit('AEC_DATA_MSB_OPTION_MASK', _.Get('ccsdsFlags'), 2)) h.add(_.Bit('AEC_DATA_PREPROCESS_OPTION_MASK', _.Get('ccsdsFlags'), 3)) h.add(_.Bit('AEC_RESTRICTED_OPTION_MASK', _.Get('ccsdsFlags'), 4)) h.add(_.Bit('AEC_PAD_RSI_OPTION_MASK', _.Get('ccsdsFlags'), 5)) h.add(_.Unsigned('ccsdsBlockSize', 1)) h.add(_.Unsigned('ccsdsRsi', 2)) h.alias('referenceSampleInterval', 'ccsdsRsi')
def load(h): h.add(_.Constant('GRIBEXSection1Problem', (328 - _.Get('section1Length')))) _.Template('grib1/mars_labeling.def').load(h) h.add(_.Unsigned('clusterNumber', 1)) h.alias('number', 'clusterNumber') h.add(_.Unsigned('totalNumberOfClusters', 1)) h.alias('totalNumber', 'totalNumberOfClusters') h.add(_.Pad('padding_loc2_1', 1)) h.add(_.Unsigned('clusteringMethod', 1)) h.add(_.Unsigned('startTimeStep', 2)) h.add(_.Unsigned('endTimeStep', 2)) h.add(_.Signed('northernLatitudeOfDomain', 3)) h.add(_.Signed('westernLongitudeOfDomain', 3)) h.add(_.Signed('southernLatitudeOfDomain', 3)) h.add(_.Signed('easternLongitudeOfDomain', 3)) h.add(_.Ascii('clusteringDomain', 1)) h.add(_.Unsigned('operationalForecastCluster', 1)) h.add(_.Unsigned('controlForecastCluster', 1)) h.add(_.Unsigned('representativeMember', 1)) h.add(_.Codetable('climatologicalRegime', 1, "grib1/regime.table")) h.add(_.Unsigned('numberOfForecastsInCluster', 1)) if (h.get_l('numberOfForecastsInCluster') > 0): h.add( _.Unsigned('ensembleForecastNumbers', 1, _.Get('numberOfForecastsInCluster'))) h.add(_.Padto('padding_loc2_2', (_.Get('offsetSection1') + 328))) h.alias('mars.number', 'clusterNumber') h.alias('mars.domain', 'clusteringDomain')
def load(h): h.add(_.Ieeefloat('referenceValue', 4)) h.add( _.Reference_value_error('referenceValueError', _.Get('referenceValue'), _.Get('ieee'))) h.add(_.Signed('binaryScaleFactor', 2)) h.add(_.Signed('decimalScaleFactor', 2)) h.add(_.Transient('optimizeScaleFactor', 0)) h.add(_.Unsigned('bitsPerValue', 1)) h.alias('numberOfBits', 'bitsPerValue') h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue') h.add(_.Unsigned('matrixBitmapsPresent', 1)) h.alias('secondaryBitmapPresent', 'matrixBitmapsPresent') h.add(_.Unsigned('numberOfCodedValues', 4)) h.add(_.Unsigned('firstDimension', 2)) h.alias('NR', 'firstDimension') h.add(_.Unsigned('secondDimension', 2)) h.alias('NC', 'secondDimension') h.add(_.Unsigned('firstDimensionCoordinateValueDefinition', 1)) h.add(_.Unsigned('NC1', 1)) h.alias( 'numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction', 'NC1') h.add(_.Unsigned('secondDimensionCoordinateValueDefinition', 1)) h.add(_.Unsigned('NC2', 1)) h.alias( 'numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction', 'NC2') h.add(_.Unsigned('firstDimensionPhysicalSignificance', 1)) h.add(_.Unsigned('secondDimensionPhysicalSignificance', 1)) h.add(_.Ieeefloat('coefsFirst', 4, _.Get('NC1'))) h.add(_.Ieeefloat('coefsSecond', 4, _.Get('NC2'))) h.alias('data.coefsFirst', 'coefsFirst') h.alias('data.coefsSecond', 'coefsSecond') if (h.get_l('matrixBitmapsPresent') == 1): h.add(_.Constant('datumSize', (_.Get('NC') * _.Get('NR')))) h.add( _.Constant('secondaryBitmapsCount', (_.Get('numberOfValues') + 0))) h.add( _.Constant('secondaryBitmapsSize', (_.Get('secondaryBitmapsCount') / 8))) h.add( _.Transient('numberOfDataMatrices', (_.Get('numberOfDataPoints') / _.Get('datumSize')))) h.add(_.Position('offsetBBitmap')) h.add( _.G2bitmap('secondaryBitmaps', _.Get('dummy'), _.Get('missingValue'), _.Get('offsetBSection5'), _.Get('section5Length'), _.Get('numberOfCodedValues'), _.Get('dummy'))) h.add( _.Data_g2secondary_bitmap('bitmap', _.Get('primaryBitmap'), _.Get('secondaryBitmaps'), _.Get('missingValue'), _.Get('datumSize'), _.Get('numberOfDataPoints')))
def load(h): h.add(_.Ieeefloat('referenceValue', 4)) h.add(_.Reference_value_error('referenceValueError', _.Get('referenceValue'), _.Get('ieee'))) h.add(_.Signed('binaryScaleFactor', 2)) h.add(_.Signed('decimalScaleFactor', 2)) h.add(_.Transient('optimizeScaleFactor', 0)) h.add(_.Unsigned('bitsPerValue', 1)) h.alias('numberOfBits', 'bitsPerValue') h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')
def load(h): h.add(_.Codetable('parameterCategory', 1, "4.1.[discipline:l].table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable('parameterNumber', 1, "4.2.[discipline:l].[parameterCategory:l].table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable_units('parameterUnits', _.Get('parameterNumber'))) h.add(_.Codetable_title('parameterName', _.Get('parameterNumber'))) h.add(_.Codetable('aerosolType', 2, "4.233.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable('sourceSinkChemicalPhysicalProcess', 1, "4.238.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable('typeOfSizeInterval', 1, "4.91.table", _.Get('masterDir'), _.Get('localDir'))) h.alias('typeOfIntervalForFirstAndSecondSize', 'typeOfSizeInterval') h.add(_.Signed('scaleFactorOfFirstSize', 1)) h.add(_.Signed('scaledValueOfFirstSize', 4)) h.add(_.Signed('scaleFactorOfSecondSize', 1)) h.add(_.Signed('scaledValueOfSecondSize', 4)) h.add(_.Codetable('typeOfWavelengthInterval', 1, "4.91.table", _.Get('masterDir'), _.Get('localDir'))) h.alias('typeOfIntervalForFirstAndSecondWavelength', 'typeOfWavelengthInterval') h.add(_.Signed('scaleFactorOfFirstWavelength', 1)) h.add(_.Signed('scaledValueOfFirstWavelength', 4)) h.add(_.Signed('scaleFactorOfSecondWavelength', 1)) h.add(_.Signed('scaledValueOfSecondWavelength', 4)) h.add(_.Codetable('typeOfGeneratingProcess', 1, "4.3.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('backgroundProcess', 1)) h.alias('backgroundGeneratingProcessIdentifier', 'backgroundProcess') h.add(_.Unsigned('generatingProcessIdentifier', 1)) h.add(_.Unsigned('hoursAfterDataCutoff', 2)) h.alias('hoursAfterReferenceTimeOfDataCutoff', 'hoursAfterDataCutoff') h.add(_.Unsigned('minutesAfterDataCutoff', 1)) h.alias('minutesAfterReferenceTimeOfDataCutoff', 'minutesAfterDataCutoff') h.add(_.Codetable('indicatorOfUnitOfTimeRange', 1, "4.4.table", _.Get('masterDir'), _.Get('localDir'))) h.alias('defaultStepUnits', 'one') _.Template('grib2/localConcepts/[centre:s]/default_step_units.def', True).load(h) h.add(_.TransientCodetable('stepUnits', 1, "stepUnits.table")) h.add(_.Signed('forecastTime', 4))
def load(h): h.add(_.Constant('gridDefinitionTemplateNumber', 52)) _.Template('grib1/grid_definition_spherical_harmonics.def').load(h) h.add(_.Signed('latitudeOfStretchingPole', 3)) h.add(_.Signed('longitudeOfStretchingPole', 3)) h.add(_.Scale('latitudeOfStretchingPoleInDegrees', _.Get('latitudeOfStretchingPole'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfStretchingPoleInDegrees', 'latitudeOfStretchingPoleInDegrees') h.add(_.Scale('longitudeOfStretchingPoleInDegrees', _.Get('longitudeOfStretchingPole'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfStretchingPoleInDegrees', 'longitudeOfStretchingPoleInDegrees') h.add(_.Ibmfloat('stretchingFactor', 4)) h.alias('geography.stretchingFactor', 'stretchingFactor')
def load(h): h.add(_.Constant('GRIBEXSection1Problem', (58 - _.Get('section1Length')))) h.add(_.Constant('probPoint', 5)) h.add(_.Constant('probContinous', 9)) if (((h.get_l('timeRangeIndicator') == 3) or (h.get_l('timeRangeIndicator') == 4)) or (h.get_l('timeRangeIndicator') == 5)): h.alias('productDefinitionTemplateNumber', 'probContinous') else: h.alias('productDefinitionTemplateNumber', 'probPoint') _.Template('grib1/mars_labeling.def').load(h) h.add(_.Unsigned('forecastProbabilityNumber', 1)) h.add(_.Unsigned('totalNumberOfForecastProbabilities', 1)) h.add(_.Signed('localDecimalScaleFactor', 1)) h.add(_.Unsigned('thresholdIndicator', 1)) h.add(_.Signed('lowerThreshold', 2)) h.add(_.Signed('upperThreshold', 2)) if (h.get_l('thresholdIndicator') == 1): h.add(_.Transient('probabilityType', 3)) h.add( _.Transient('scaleFactorOfLowerLimit', _.Get('localDecimalScaleFactor'))) h.add(_.Transient('scaledValueOfLowerLimit', _.Get('lowerThreshold'))) h.add(_.Transient('scaleFactorOfUpperLimit', h._missing())) h.add(_.Transient('scaledValueOfUpperLimit', h._missing())) if (h.get_l('thresholdIndicator') == 2): h.add(_.Transient('probabilityType', 4)) h.add(_.Transient('scaleFactorOfLowerLimit', h._missing())) h.add(_.Transient('scaledValueOfLowerLimit', h._missing())) h.add( _.Transient('scaleFactorOfUpperLimit', _.Get('localDecimalScaleFactor'))) h.add(_.Transient('scaledValueOfUpperLimit', _.Get('upperThreshold'))) if (h.get_l('thresholdIndicator') == 3): h.add(_.Transient('probabilityType', 2)) h.add( _.Transient('scaleFactorOfLowerLimit', _.Get('localDecimalScaleFactor'))) h.add(_.Transient('scaledValueOfLowerLimit', _.Get('lowerThreshold'))) h.add( _.Transient('scaleFactorOfUpperLimit', _.Get('localDecimalScaleFactor'))) h.add(_.Transient('scaledValueOfUpperLimit', _.Get('upperThreshold'))) h.add(_.Pad('padding_loc5_1', 1)) h.alias('number', 'forecastProbabilityNumber') h.alias('totalNumber', 'totalNumberOfForecastProbabilities')
def load(h): h.add(_.Signed('latitudeOfSouthernPole', 3)) h.add(_.Scale('latitudeOfSouthernPoleInDegrees', _.Get('latitudeOfSouthernPole'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfSouthernPoleInDegrees', 'latitudeOfSouthernPoleInDegrees') h.add(_.Signed('longitudeOfSouthernPole', 3)) h.add(_.Scale('longitudeOfSouthernPoleInDegrees', _.Get('longitudeOfSouthernPole'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfSouthernPoleInDegrees', 'longitudeOfSouthernPoleInDegrees') h.add(_.Ibmfloat('angleOfRotationInDegrees', 4)) h.alias('geography.angleOfRotationInDegrees', 'angleOfRotationInDegrees') h.alias('angleOfRotation', 'angleOfRotationInDegrees') h.alias('isRotatedGrid', 'one')
def load(h): h.add(_.Constant('gridDefinitionTemplateNumber', 41)) _.Template('grib1/grid_definition_gaussian.def').load(h) h.add(_.Signed('latitudeOfSouthernPole', 3)) h.add(_.Scale('latitudeOfSouthernPoleInDegrees', _.Get('latitudeOfSouthernPole'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfSouthernPoleInDegrees', 'latitudeOfSouthernPoleInDegrees') h.add(_.Signed('longitudeOfSouthernPole', 3)) h.add(_.Scale('longitudeOfSouthernPoleInDegrees', _.Get('longitudeOfSouthernPole'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfSouthernPoleInDegrees', 'longitudeOfSouthernPoleInDegrees') h.add(_.Ibmfloat('angleOfRotationInDegrees', 4)) h.alias('geography.angleOfRotationInDegrees', 'angleOfRotationInDegrees') h.alias('angleOfRotation', 'angleOfRotationInDegrees') h.alias('isRotatedGrid', 'one')
def load(h): h.add(_.Ieeefloat('referenceValue', 4)) h.add( _.Reference_value_error('referenceValueError', _.Get('referenceValue'), _.Get('ieee'))) h.add(_.Signed('binaryScaleFactor', 2)) h.add(_.Signed('decimalScaleFactor', 2)) h.add(_.Transient('optimizeScaleFactor', 0)) h.add(_.Unsigned('bitsPerValue', 1)) h.alias('numberOfBits', 'bitsPerValue') h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue') h.add( _.Codetable('typeOfOriginalFieldValues', 1, "5.1.table", _.Get('masterDir'), _.Get('localDir')))
def load(h): h.add(_.Unsigned('n2', 2)) h.add(_.Unsigned('n3', 2)) h.add(_.Unsigned('nd', 3)) h.alias('numberOfDiamonds', 'nd') h.alias('Nj', 'nd') h.add(_.Unsigned('Ni', 3)) h.add( _.Codeflag('numberingOrderOfDiamonds', 1, "grib1/grid.192.78.3.9.table")) h.add(_.Signed('latitudeOfIcosahedronPole', 4)) h.add(_.Unsigned('longitudeOfIcosahedronPole', 4)) h.add(_.Unsigned('longitudeOfFirstDiamondCenterLine', 4)) h.add(_.Unsigned('reservedOctet', 1)) h.add( _.Codeflag('scanningModeForOneDiamond', 1, "grib1/grid.192.78.3.10.table")) h.add( _.Transient('numberOfPoints', ((_.Get('nd') * (_.Get('Ni') + 1)) * (_.Get('Ni') + 1)))) h.alias('numberOfDataPoints', 'numberOfPoints') h.add( _.Number_of_values('numberOfValues', _.Get('values'), _.Get('bitsPerValue'), _.Get('numberOfDataPoints'), _.Get('bitmapPresent'), _.Get('bitmap'), _.Get('numberOfCodedValues')))
def load(h): h.add(_.Constant('GRIBEXSection1Problem', (120 - _.Get('section1Length')))) _.Template('grib1/mars_labeling.def').load(h) h.add(_.Unsigned('yearOfReference', 1)) h.add(_.Unsigned('monthOfReference', 1)) h.add(_.Unsigned('dayOfReference', 1)) h.add(_.Unsigned('hourOfReference', 1)) h.add(_.Unsigned('minuteOfReference', 1)) h.add(_.Unsigned('centuryOfReference', 1)) h.add(_.Transient('secondsOfReference', 0)) h.add(_.Unsigned('numberOfForcasts', 1)) h.add(_.Unsigned('numberOfAnalysis', 1)) if h.get_l('numberOfForcasts'): h.add(_.Unsigned('forecastSteps', 3, _.Get('numberOfForcasts'))) if h.get_l('numberOfAnalysis'): h.add(_.Signed('analysisOffsets', 3, _.Get('numberOfAnalysis'))) h.add(_.Padto('padding_local_35', (_.Get('offsetSection1') + 120))) h.add( _.G1date('dateOfReference', _.Get('centuryOfReference'), _.Get('yearOfReference'), _.Get('monthOfReference'), _.Get('dayOfReference'))) h.add( _.Time('timeOfReference', _.Get('hourOfReference'), _.Get('minuteOfReference'), _.Get('secondsOfReference'))) if (h.get_l('indicatorOfTypeOfLevel') == 160): h.alias('mars.levelist', 'level')
def load(h): h.add( _.Codetable('parameterCategory', 1, "4.1.[discipline:l].table", _.Get('masterDir'), _.Get('localDir'))) h.add( _.Codetable('parameterNumber', 1, "4.2.[discipline:l].[parameterCategory:l].table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable_units('parameterUnits', _.Get('parameterNumber'))) h.add(_.Codetable_title('parameterName', _.Get('parameterNumber'))) h.add(_.Unsigned('inputProcessIdentifier', 2)) h.add(_.StringCodetable('inputOriginatingCentre', 2, "common/c-11.table")) h.add(_.Unsigned('typeOfPostProcessing', 1)) h.add( _.Codetable('typeOfGeneratingProcess', 1, "4.3.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('backgroundProcess', 1)) h.alias('backgroundGeneratingProcessIdentifier', 'backgroundProcess') h.add(_.Unsigned('generatingProcessIdentifier', 1)) h.add(_.Unsigned('hoursAfterDataCutoff', 2)) h.alias('hoursAfterReferenceTimeOfDataCutoff', 'hoursAfterDataCutoff') h.add(_.Unsigned('minutesAfterDataCutoff', 1)) h.alias('minutesAfterReferenceTimeOfDataCutoff', 'minutesAfterDataCutoff') h.add( _.Codetable('indicatorOfUnitOfTimeRange', 1, "4.4.table", _.Get('masterDir'), _.Get('localDir'))) h.alias('defaultStepUnits', 'one') _.Template('grib2/localConcepts/[centre:s]/default_step_units.def', True).load(h) h.add(_.TransientCodetable('stepUnits', 1, "stepUnits.table")) h.add(_.Signed('forecastTime', 4))
def load(h): h.add(_.Codetable('parameterCategory', 1, "4.1.[discipline:l].table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable('parameterNumber', 1, "4.2.[discipline:l].[parameterCategory:l].table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable_units('parameterUnits', _.Get('parameterNumber'))) h.add(_.Codetable_title('parameterName', _.Get('parameterNumber'))) h.add(_.Codetable('typeOfGeneratingProcess', 1, "4.3.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('backgroundProcess', 1)) h.alias('backgroundGeneratingProcessIdentifier', 'backgroundProcess') h.add(_.Unsigned('generatingProcessIdentifier', 1)) h.add(_.Unsigned('hoursAfterDataCutoff', 2)) h.alias('hoursAfterReferenceTimeOfDataCutoff', 'hoursAfterDataCutoff') h.add(_.Unsigned('minutesAfterDataCutoff', 1)) h.alias('minutesAfterReferenceTimeOfDataCutoff', 'minutesAfterDataCutoff') h.add(_.Codetable('indicatorOfUnitOfTimeRange', 1, "4.4.table", _.Get('masterDir'), _.Get('localDir'))) h.alias('defaultStepUnits', 'one') _.Template('grib2/localConcepts/[centre:s]/default_step_units.def', True).load(h) h.add(_.TransientCodetable('stepUnits', 1, "stepUnits.table")) h.add(_.Signed('forecastTime', 4)) h.add(_.Codetable('horizontalDimensionProcessed', 1, "4.220.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable('treatmentOfMissingData', 1, "4.221.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable('typeOfStatisticalProcessing', 1, "4.10.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('startOfRange', 4)) h.add(_.Unsigned('endOfRange', 4)) h.add(_.Unsigned('numberOfDataValues', 2))
def load(h): _.Template('grib1/mars_labeling.def').load(h) h.add(_.Constant('GRIBEXSection1Problem', 0)) h.add(_.Unsigned('yearOfReference', 1)) h.add(_.Unsigned('monthOfReference', 1)) h.add(_.Unsigned('dayOfReference', 1)) h.add(_.Unsigned('hourOfReference', 1)) h.add(_.Unsigned('minuteOfReference', 1)) h.add(_.Unsigned('centuryOfReference', 1)) h.add(_.Transient('secondsOfReference', 0)) h.add(_.Unsigned('numberOfForcasts', 1)) if h.get_l('numberOfForcasts'): h.add(_.Unsigned('forecastSteps', 3, _.Get('numberOfForcasts'))) h.add(_.Unsigned('numberOfAnalysis', 1)) if h.get_l('numberOfAnalysis'): h.add(_.Signed('analysisOffsets', 3, _.Get('numberOfAnalysis'))) h.add( _.G1date('dateOfReference', _.Get('centuryOfReference'), _.Get('yearOfReference'), _.Get('monthOfReference'), _.Get('dayOfReference'))) h.add( _.Time('timeOfReference', _.Get('hourOfReference'), _.Get('minuteOfReference'), _.Get('secondsOfReference')))
def load(h): h.add(_.Constant('sphericalHarmonics', 1)) h.add(_.Unsigned('J', 4)) h.alias('pentagonalResolutionParameterJ', 'J') h.alias('geography.J', 'J') h.add(_.Unsigned('K', 4)) h.alias('pentagonalResolutionParameterK', 'K') h.alias('geography.K', 'K') h.add(_.Unsigned('M', 4)) h.alias('pentagonalResolutionParameterM', 'M') h.alias('geography.M', 'M') h.add(_.Codetable('spectralType', 1, "3.6.table", _.Get('masterDir'), _.Get('localDir'))) h.alias('spectralDataRepresentationType', 'spectralType') h.add(_.Codetable('spectralMode', 1, "3.7.table", _.Get('masterDir'), _.Get('localDir'))) h.alias('spectralDataRepresentationMode', 'spectralMode') h.add(_.Signed('latitudeOfSouthernPole', 4)) h.alias('latitudeOfTheSouthernPoleOfProjection', 'latitudeOfSouthernPole') h.add(_.Unsigned('longitudeOfSouthernPole', 4)) h.alias('longitudeOfTheSouthernPoleOfProjection', 'longitudeOfSouthernPole') h.add(_.Scale('latitudeOfSouthernPoleInDegrees', _.Get('latitudeOfSouthernPole'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfSouthernPoleInDegrees', 'latitudeOfSouthernPoleInDegrees') h.add(_.G2lon('longitudeOfSouthernPoleInDegrees', _.Get('longitudeOfSouthernPole'))) h.alias('geography.longitudeOfSouthernPoleInDegrees', 'longitudeOfSouthernPoleInDegrees') h.add(_.Ieeefloat('angleOfRotation', 4)) h.alias('geography.angleOfRotationInDegrees', 'angleOfRotation') h.alias('angleOfRotationOfProjection', 'angleOfRotation') h.alias('isRotatedGrid', 'one')
def load(h): h.add( _.Codetable('typeOfCalendar', 1, "1.6.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Signed('numberOfTensOfThousandsOfYearsOfOffset', 2)) h.alias('paleontologicalOffset', 'numberOfTensOfThousandsOfYearsOfOffset')
def load(h): h.add(_.Section_length('section4Length', 3)) h.add(_.Unsigned('reserved1', 1)) h.add(_.Codeflag('missingDataFlag', 1, "grib1/1.table")) h.add(_.Unsigned('numberOfBytesPerInteger', 1)) h.add(_.Unsigned('reserved', 2)) h.add(_.Unsigned('numberOfCharacters', 3)) h.alias('numberOfChars', 'numberOfCharacters') h.add(_.Unsigned('numberOfFloats', 3)) h.add(_.Unsigned('numberOfIntegers', 3)) h.alias('numberOfInts', 'numberOfIntegers') h.add(_.Unsigned('numberOfLogicals', 3)) h.add(_.Unsigned('numberOfReservedBytes', 3)) h.add(_.Unsigned('reserved', 4)) h.add(_.Unsigned('reserved', 4)) h.add(_.Unsigned('reserved', 1)) h.add(_.Ibmfloat('floatValues', 4, _.Get('numberOfFloats'))) h.alias('floatVal', 'floatValues') if h.get_l('numberOfIntegers'): h.add(_.Signed('integerValues', 4, _.Get('numberOfIntegers'))) if h.get_l('numberOfCharacters'): h.add(_.StringUnsigned('charValues', 1, _.Get('numberOfCharacters'))) h.add(_.Section_padding('padding'))
def load(h): h.add(_.Ieeefloat('referenceValue', 4)) h.add( _.Reference_value_error('referenceValueError', _.Get('referenceValue'), _.Get('ieee'))) h.add(_.Signed('binaryScaleFactor', 2)) h.add(_.Signed('decimalScaleFactor', 2)) h.add(_.Transient('optimizeScaleFactor', 0)) h.add(_.Unsigned('bitsPerValue', 1)) h.alias('numberOfBits', 'bitsPerValue') h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue') if h._gribex_mode_on(): h.add(_.Transient('computeLaplacianOperator', 0)) else: h.add(_.Transient('computeLaplacianOperator', 1)) h.add( _.Spectral_truncation('_numberOfValues', _.Get('J'), _.Get('K'), _.Get('M'), _.Get('numberOfValues'))) h.add(_.Constant('laplacianScalingFactorUnset', -2147483647)) h.add(_.Signed('laplacianScalingFactor', 4)) h.add( _.Scale('laplacianOperator', _.Get('laplacianScalingFactor'), _.Get('one'), _.Get('million'), _.Get('truncateLaplacian'))) h.alias('data.laplacianOperator', 'laplacianOperator') h.add( _.Evaluate( 'laplacianOperatorIsSet', _.And((_.Get('laplacianScalingFactor') != _.Get('laplacianScalingFactorUnset')), _.Not(_.Get('computeLaplacianOperator'))))) h.add(_.Transient('JS', 20)) h.add(_.Transient('KS', 20)) h.add(_.Transient('MS', 20)) h.add(_.Transient('subSetJ', 0)) h.add(_.Transient('subSetK', 0)) h.add(_.Transient('subSetM', 0)) h.add(_.Unsigned('TS', 4)) h.add( _.Spectral_truncation('_TS', _.Get('J'), _.Get('K'), _.Get('M'), _.Get('TS'))) h.add( _.Codetable('unpackedSubsetPrecision', 1, "5.7.table", _.Get('masterDir'), _.Get('localDir'))) h.alias('precisionOfTheUnpackedSubset', 'unpackedSubsetPrecision')
def load(h): h.add(_.Constant('GRIBEXSection1Problem', (300 - _.Get('section1Length')))) _.Template('grib1/mars_labeling.def').load(h) h.add(_.Unsigned('perturbationNumber', 1)) h.alias('number', 'perturbationNumber') h.add(_.Unsigned('numberOfForecastsInEnsemble', 1)) h.alias('totalNumber', 'numberOfForecastsInEnsemble') h.add(_.Unsigned('modelIdentifier', 1)) h.add(_.Signed('latitudeOfNorthWestCornerOfArea', 4)) h.add(_.Signed('longitudeOfNorthWestCornerOfArea', 4)) h.add(_.Signed('latitudeOfSouthEastCornerOfArea', 4)) h.add(_.Signed('longitudeOfSouthEastCornerOfArea', 4)) h.add(_.Unsigned('originalParameterNumber', 1)) h.add(_.Unsigned('originalParameterTableNumber', 1)) h.add(_.Pad('padding_loc50_1', 46)) h.add(_.Ascii('optionalData', 184))
def load(h): h.add(_.Signed('latitudeOfFirstGridPoint', 3)) h.add(_.Scale('latitudeOfFirstGridPointInDegrees', _.Get('latitudeOfFirstGridPoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfFirstGridPointInDegrees', 'latitudeOfFirstGridPointInDegrees') h.alias('La1', 'latitudeOfFirstGridPoint') h.add(_.Signed('longitudeOfFirstGridPoint', 3)) h.add(_.Scale('longitudeOfFirstGridPointInDegrees', _.Get('longitudeOfFirstGridPoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfFirstGridPointInDegrees', 'longitudeOfFirstGridPointInDegrees') h.alias('Lo1', 'longitudeOfFirstGridPoint') h.add(_.Codeflag('resolutionAndComponentFlags', 1, "grib1/7.table")) h.add(_.Bit('ijDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 7)) h.alias('iDirectionIncrementGiven', 'ijDirectionIncrementGiven') h.alias('jDirectionIncrementGiven', 'ijDirectionIncrementGiven') h.alias('DiGiven', 'ijDirectionIncrementGiven') h.alias('DjGiven', 'ijDirectionIncrementGiven') h.add(_.Bit('earthIsOblate', _.Get('resolutionAndComponentFlags'), 6)) if h.get_l('earthIsOblate'): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Bit('resolutionAndComponentFlags3', _.Get('resolutionAndComponentFlags'), 5)) h.add(_.Bit('resolutionAndComponentFlags4', _.Get('resolutionAndComponentFlags'), 4)) h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3)) h.add(_.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 2)) h.add(_.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 1)) h.add(_.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 0)) h.add(_.Signed('latitudeOfLastGridPoint', 3)) h.add(_.Scale('latitudeOfLastGridPointInDegrees', _.Get('latitudeOfLastGridPoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfLastGridPointInDegrees', 'latitudeOfLastGridPointInDegrees') h.alias('La2', 'latitudeOfLastGridPoint') h.add(_.Signed('longitudeOfLastGridPoint', 3)) h.add(_.Scale('longitudeOfLastGridPointInDegrees', _.Get('longitudeOfLastGridPoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfLastGridPointInDegrees', 'longitudeOfLastGridPointInDegrees') h.alias('Lo2', 'longitudeOfLastGridPoint') h.alias('yFirst', 'latitudeOfFirstGridPointInDegrees') h.alias('yLast', 'latitudeOfLastGridPointInDegrees') h.alias('xFirst', 'longitudeOfFirstGridPointInDegrees') h.alias('xLast', 'longitudeOfLastGridPointInDegrees') h.alias('latitudeFirstInDegrees', 'latitudeOfFirstGridPointInDegrees') h.alias('longitudeFirstInDegrees', 'longitudeOfFirstGridPointInDegrees') h.alias('latitudeLastInDegrees', 'latitudeOfLastGridPointInDegrees') h.alias('longitudeLastInDegrees', 'longitudeOfLastGridPointInDegrees')
def load(h): h.add(_.Signed('latitudeOfStretchingPole', 3)) h.add(_.Signed('longitudeOfStretchingPole', 3)) h.add( _.Scale('latitudeOfStretchingPoleInDegrees', _.Get('latitudeOfStretchingPole'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfStretchingPoleInDegrees', 'latitudeOfStretchingPoleInDegrees') h.add( _.Scale('longitudeOfStretchingPoleInDegrees', _.Get('longitudeOfStretchingPole'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfStretchingPoleInDegrees', 'longitudeOfStretchingPoleInDegrees') h.add(_.Ibmfloat('stretchingFactor', 4)) h.alias('geography.stretchingFactor', 'stretchingFactor')
def load(h): h.add(_.Unsigned('forecastProbabilityNumber', 1)) h.add(_.Unsigned('totalNumberOfForecastProbabilities', 1)) h.add( _.Codetable('probabilityType', 1, "4.9.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Codetable_title('probabilityTypeName', _.Get('probabilityType'))) h.add(_.Signed('scaleFactorOfLowerLimit', 1)) h.add(_.Signed('scaledValueOfLowerLimit', 4)) h.add( _.From_scale_factor_scaled_value('lowerLimit', _.Get('scaleFactorOfLowerLimit'), _.Get('scaledValueOfLowerLimit'))) h.add(_.Signed('scaleFactorOfUpperLimit', 1)) h.add(_.Signed('scaledValueOfUpperLimit', 4)) h.add( _.From_scale_factor_scaled_value('upperLimit', _.Get('scaleFactorOfUpperLimit'), _.Get('scaledValueOfUpperLimit')))
def load(h): h.add(_.Constant('GRIBEXSection1Problem', (100 - _.Get('section1Length')))) _.Template('grib1/mars_labeling.def').load(h) h.add(_.Unsigned('forecastOrSingularVectorNumber', 2)) h.add(_.Unsigned('numberOfIterations', 2)) h.add(_.Unsigned('numberOfSingularVectorsComputed', 2)) h.add(_.Unsigned('normAtInitialTime', 1)) h.add(_.Unsigned('normAtFinalTime', 1)) h.add(_.Unsigned('multiplicationFactorForLatLong', 4)) h.add(_.Signed('northWestLatitudeOfVerficationArea', 4)) h.add(_.Signed('northWestLongitudeOfVerficationArea', 4)) h.add(_.Signed('southEastLatitudeOfVerficationArea', 4)) h.add(_.Signed('southEastLongitudeOfVerficationArea', 4)) h.add(_.Unsigned('accuracyMultipliedByFactor', 4)) h.add(_.Unsigned('numberOfSingularVectorsEvolved', 2)) h.add(_.Signed('NINT_LOG10_RITZ', 4)) h.add(_.Signed('NINT_RITZ_EXP', 4)) h.add(_.Unsigned('optimisationTime', 1)) h.alias('mars.opttime', 'optimisationTime') h.add(_.Unsigned('forecastLeadTime', 1)) h.alias('mars.leadtime', 'forecastLeadTime') h.add(_.Ascii('marsDomain', 1)) h.add(_.Unsigned('methodNumber', 2)) h.add(_.Unsigned('numberOfForecastsInEnsemble', 2)) h.add(_.Unsigned('shapeOfVerificationArea', 1)) h.add(_.Pad('padding_loc21_1', 1)) h.alias('mars.domain', 'marsDomain')