Пример #1
0
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')
Пример #2
0
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')
Пример #3
0
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')
Пример #4
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (120 - _.Get('section1Length'))))
    h.alias('grib2LocalSectionPresent', 'present')
    h.add(_.Constant('grib2LocalSectionNumber', 18))

    if (h.get_s('stepType') == "instant"):
        h.alias('productDefinitionTemplateNumber', 'epsPoint')
    else:
        h.alias('productDefinitionTemplateNumber', 'epsContinous')

    _.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(_.Codetable('dataOrigin', 1, "common/c-1.table"))
    h.alias('origin', 'dataOrigin')
    h.add(_.Ascii('modelIdentifier', 4))
    h.add(_.Unsigned('consensusCount', 1))
    h.add(_.Pad('padding_loc18_1', 3))

    with h.list('consensus'):
        for i in range(0, h.get_l('consensusCount')):
            h.add(_.Ascii('ccccIdentifiers', 4))
    h.add(_.Padto('padding_loc18_2', (_.Get('offsetSection1') + 120)))
    h.alias('local.dataOrigin', 'dataOrigin')
    h.alias('local.modelIdentifier', 'modelIdentifier')
    h.alias('local.consensusCount', 'consensusCount')
Пример #5
0
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')
Пример #6
0
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')
Пример #7
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (240 - _.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('forecastMonth', 2))
    h.add(_.Unsigned('dateOfForecastRun', 4))
    h.alias('referenceDate', 'dateOfForecastRun')
    h.add(_.Unsigned('numberOfModels', 1))
    h.add(_.Pad('padding_local1_31', 42))

    with h.list('listOfModelIdentifiers'):
        for i in range(0, h.get_l('numberOfModels')):
            h.add(_.Codetable('modelIdentifier', 2, "common/c-1.table"))
    h.add(_.Padto('padding_sec1_loc', (_.Get('offsetSection1') + 240)))
    h.alias('number', 'perturbationNumber')
    h.alias('total', 'numberOfForecastsInEnsemble')
Пример #8
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (1080 - _.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('channelNumber', 1))
    h.alias('mars.channel', 'channelNumber')
    h.add(_.Unsigned('scalingFactorForFrequencies', 4))
    h.alias('integerScalingFactorAppliedToFrequencies', 'scalingFactorForFrequencies')
    h.add(_.Unsigned('numberOfFrequencies', 1))
    h.alias('totalNumberOfFrequencies', 'numberOfFrequencies')
    h.alias('Nf', 'numberOfFrequencies')
    h.add(_.Pad('padding_loc37_1', 3))
    h.add(_.Unsigned('listOfScaledFrequencies', 4, _.Get('numberOfFrequencies')))
    h.add(_.Unsigned('offsetToEndOf4DvarWindow', 2))
    h.add(_.Unsigned('lengthOf4DvarWindow', 2))
    h.alias('anoffset', 'offsetToEndOf4DvarWindow')
    h.add(_.Padto('padding_loc37_2', (_.Get('offsetSection1') + 1080)))
Пример #9
0
def load(h):

    h.add(_.Position('offsetSection2'))
    h.add(_.Section_length('section2Length', 3))
    h.add(_.Section_pointer('section2Pointer', _.Get('offsetSection2'), _.Get('section2Length'), 2))
    h.add(_.Transient('radius', 6367470))
    h.alias('radiusOfTheEarth', 'radius')
    h.alias('radiusInMetres', 'radius')
    h.add(_.Transient('shapeOfTheEarth', 6))
    h.add(_.Unsigned('numberOfVerticalCoordinateValues', 1))
    h.add(_.Constant('neitherPresent', 255))
    h.alias('NV', 'numberOfVerticalCoordinateValues')
    h.alias('numberOfCoordinatesValues', 'numberOfVerticalCoordinateValues')
    h.add(_.Unsigned('pvlLocation', 1))
    h.add(_.Codetable('dataRepresentationType', 1, "grib1/6.table"))
    h.add(_.Codetable_title('gridDefinitionDescription', _.Get('dataRepresentationType')))
    h.alias('isRotatedGrid', 'zero')

    if (h.get_l('dataRepresentationType') < 192):
        _.Template('grib1/grid_definition_[dataRepresentationType:l].def').load(h)
    else:
        _.Template('grib1/grid_definition_[dataRepresentationType:l].[centre:l].def').load(h)

    h.add(_.Position('endGridDefinition'))
    h.add(_.Position('offsetBeforePV'))
    h.add(_.Transient('PVPresent', (_.Get('NV') > 0)))

    if (h.get_l('pvlLocation') != h.get_l('neitherPresent')):
        h.add(_.Padto('padding_sec2_2', ((_.Get('offsetSection2') + _.Get('pvlLocation')) - 1)))
    else:
        h.add(_.Padto('padding_sec2_2', (_.Get('offsetSection2') + 32)))

    if h.get_l('PVPresent'):
        h.add(_.Ibmfloat('pv', 4, _.Get('NV')))
        h.alias('vertical.pv', 'pv')

    h.add(_.Position('offsetBeforePL'))
    h.add(_.Transient('PLPresent', _.And((_.Get('section2Length') > (_.Get('offsetBeforePL') - _.Get('offsetSection2'))), (_.Get('section2Length') >= (((_.Get('Nj') * 2) + _.Get('offsetBeforePL')) - _.Get('offsetSection2'))))))

    if h.get_l('PLPresent'):
        h.add(_.Constant('numberOfOctectsForNumberOfPoints', 2))
        h.add(_.Constant('interpretationOfNumberOfPoints', 1))
        h.add(_.Unsigned('pl', 2, _.Get('Nj')))
        h.alias('geography.pl', 'pl')

    if ((h.get_l('PVPresent') == 0) and (h.get_l('PLPresent') == 0)):
        h.add(_.Padto('padding_sec2_1', (_.Get('offsetSection2') + 32)))

    pass  # when block
    pass  # when block
    h.alias('reducedGrid', 'PLPresent')

    def deletePV_inline_concept(h):
        def wrapped(h):

            PVPresent = h.get_l('PVPresent')
            NV = h.get_l('NV')

            if PVPresent == 0 and NV == 0:
                return 1

        return wrapped

    h.add(_.Concept('deletePV', 'unknown', concepts=deletePV_inline_concept(h)))

    h.add(_.Padtoeven('padding_sec2_3', _.Get('offsetSection2'), _.Get('section2Length')))
    h.add(_.Md5('md5Section2', _.Get('offsetSection2'), _.Get('section2Length')))
    h.alias('md5GridSection', 'md5Section2')