# Copyright 2005-2012 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. # position offsetSection1; length[4] section1Length ; meta section1Pointer section_pointer(offsetSection1,section1Length,1); unsigned[1] numberOfSection = 1 :read_only; codetable[2] centre 'grib1/0.table' : dump,string_type; alias identificationOfOriginatingGeneratingCentre=centre; meta centreDescription codetable_title(centre); alias parameter.centre=centre; alias ls.centre=centre; alias originatingCentre=centre; unsigned[2] subCentre : dump; _if (subCentre==98 ) { alias centreForLocal=subCentre; } else { alias centreForLocal=centre; } codetable[1] tablesVersion 'grib2/tables/1.0.table' = 5 : edition_specific; alias gribMasterTablesVersionNumber=tablesVersion; transient masterDir="grib2/tables/[tablesVersion]"; when (tablesVersion!=255) { set masterDir="grib2/tables/[tablesVersion]"; } else { set masterDir="grib2/tables/4"; } codetable[1] localTablesVersion 'grib2/tables/[tablesVersion]/1.1.table' ; alias versionNumberOfGribLocalTables=localTablesVersion; transient localDir=""; when (localTablesVersion != 0) { set localDir="grib2/tables/local/[centre]/[localTablesVersion]"; } else { set localDir=""; } # Significance of Reference Time codetable[1] significanceOfReferenceTime ('1.2.table',masterDir,localDir) = 1 : dump; # Year # (4 digits) unsigned[2] year ; # Month unsigned[1] month ; # Day unsigned[1] day ; # Hour unsigned[1] hour ; # Minute unsigned[1] minute ; # Second unsigned[1] second ; meta dataDate g2date(year,month,day) : dump; alias mars.date = dataDate; alias ls.date = dataDate; meta julianDay julian_day(dataDate,hour,minute,second) : edition_specific; meta dataTime time(hour,minute,second) : dump; alias mars.time = dataTime; # Production status of processed data in this GRIB message codetable[1] productionStatusOfProcessedData ('1.3.table',masterDir,localDir) : dump; # Type of processed data in this GRIB message codetable[1] typeOfProcessedData ('1.4.table',masterDir,localDir) = 255 : dump,string_type,no_fail; alias ls.dataType=typeOfProcessedData; meta md5Section1 md5(offsetSection1,section1Length); meta selectStepTemplateInterval select_step_template(productDefinitionTemplateNumber,0); meta selectStepTemplateInstant select_step_template(productDefinitionTemplateNumber,1); transient stepTypeInternal="instant" : hidden,no_copy; concept stepType { "instant" = {selectStepTemplateInstant=1; stepTypeInternal="instant";} "avg" = {selectStepTemplateInterval=1; stepTypeInternal="avg";} "avgd" = {selectStepTemplateInterval=1; stepTypeInternal="avgd";} "accum" = {selectStepTemplateInterval=1; stepTypeInternal="accum";} "max" = {selectStepTemplateInterval=1; stepTypeInternal="max";} "min" = {selectStepTemplateInterval=1; stepTypeInternal="min";} "diff" = {selectStepTemplateInterval=1; stepTypeInternal="diff";} "rms" = {selectStepTemplateInterval=1; stepTypeInternal="rms";} "sd" = {selectStepTemplateInterval=1; stepTypeInternal="sd";} "cov" = {selectStepTemplateInterval=1; stepTypeInternal="cov";} "ratio" = {selectStepTemplateInterval=1; stepTypeInternal="ratio";} }