Definitions: cleanup

This commit is contained in:
Shahram Najm 2021-12-20 17:28:26 +00:00
parent aec656b339
commit 7b55c29037
15 changed files with 174 additions and 187 deletions

View File

@ -20,7 +20,7 @@ constant epsStatisticsContinous=12 : hidden;
meta headersOnly headers_only(); meta headersOnly headers_only();
#template section_0 "grib1/section.0.def" ; #template section_0 "grib1/section.0.def";
meta gts_header gts_header() : no_copy,hidden,read_only; meta gts_header gts_header() : no_copy,hidden,read_only;
meta gts_TTAAii gts_header(20,6) : no_copy,hidden,read_only; meta gts_TTAAii gts_header(20,6) : no_copy,hidden,read_only;
@ -30,24 +30,24 @@ meta gts_ddhh00 gts_header(32,6) : no_copy,hidden,read_only;
ascii[4] identifier = "GRIB" : read_only,hidden; ascii[4] identifier = "GRIB" : read_only,hidden;
constant offsetSection0=0; constant offsetSection0=0;
constant section0Length=8 ; constant section0Length=8;
meta section0Pointer section_pointer(offsetSection0,section0Length,0); meta section0Pointer section_pointer(offsetSection0,section0Length,0);
# Due to a trick done by GRIBEX to support large GRIBs, we need a special treatment # Due to a trick done by GRIBEX to support large GRIBs, we need a special treatment
# of the message length and of the section4 length, so instead of # of the message length and of the section4 length, so instead of
# section_length[3] totalLength ; # section_length[3] totalLength;
# we get: # we get:
g1_message_length[3] totalLength(section4Length) ; g1_message_length[3] totalLength(section4Length);
position startOfHeaders; position startOfHeaders;
unsigned[1] editionNumber = 1 : edition_specific,dump; unsigned[1] editionNumber = 1 : edition_specific,dump;
template section_1 "grib1/section.1.def" ; template section_1 "grib1/section.1.def";
alias ls.edition = editionNumber; alias ls.edition = editionNumber;
# Note flagbit numbers 7 to 0, while wmo is 1 to 8 # Note flagbit numbers 7 to 0, while wmo is 1 to 8
flagbit gridDescriptionSectionPresent(section1Flags,7) = 1; flagbit gridDescriptionSectionPresent(section1Flags,7) = 1;
meta GDSPresent gds_is_present(gridDescriptionSectionPresent,gridDefinition,bitmapPresent,values): dump ; meta GDSPresent gds_is_present(gridDescriptionSectionPresent,gridDefinition,bitmapPresent,values): dump;
#alias GDSPresent = gridDescriptionSectionPresent; #alias GDSPresent = gridDescriptionSectionPresent;
flagbit bitmapPresent(section1Flags,6) :dump; flagbit bitmapPresent(section1Flags,6) :dump;
@ -57,7 +57,7 @@ alias missingValuesPresent=bitmapPresent : read_only;
transient angleSubdivisions=1000; # milli degrees transient angleSubdivisions=1000; # milli degrees
if(gridDescriptionSectionPresent){ if(gridDescriptionSectionPresent){
template section_2 "grib1/section.2.def" ; template section_2 "grib1/section.2.def";
} else { } else {
template predefined_grid "grib1/predefined_grid.def"; template predefined_grid "grib1/predefined_grid.def";
} }

View File

@ -58,7 +58,6 @@ if(matrixOfValues == 0)
position offsetBeforeData; position offsetBeforeData;
if(bitmapPresent) { if(bitmapPresent) {
# For grib1 -> grib2 # For grib1 -> grib2
constant bitMapIndicator = 0; constant bitMapIndicator = 0;
@ -113,27 +112,25 @@ if(matrixOfValues == 0)
constant bitMapIndicator = 0; constant bitMapIndicator = 0;
# From GRIBEX: # From GRIBEX:
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# ! !
# ! This is the WMO definition, but it is entirely !
# ! inadequate when secondary bit maps are present !
# ! eg 3x3 global grid with a matrix of values !
# ! 12x26 at each point. This gives a bit map with !
# ! a length of 285480 octets which cannot be given!
# ! in 16 bits. !
# ! !
# ! ECMWF uses the following definition for its !
# ! wave model data. !
# ! N - Number of secondary bit maps !
# ! (ie the number of points which are 'not !
# ! missing'). !
# ! This definition will accommodate a 1x1 !
# ! degree global grid. !
# ! !
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# #
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# ! !
# ! This is the WMO definition, but it is entirely !
# ! inadequate when secondary bit maps are present !
# ! eg 3x3 global grid with a matrix of values !
# ! 12x26 at each point. This gives a bit map with !
# ! a length of 285480 octets which cannot be given!
# ! in 16 bits. !
# ! !
# ! ECMWF uses the following definition for its !
# ! wave model data. !
# ! N - Number of secondary bit maps !
# ! (ie the number of points which are 'not !
# ! missing'). !
# ! This definition will accommodate a 1x1 !
# ! degree global grid. !
# ! !
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
constant datumSize = NC*NR; constant datumSize = NC*NR;
transient secondaryBitmapsCount = octetAtWichPackedDataBegins*datumSize; # transient secondaryBitmapsCount = octetAtWichPackedDataBegins*datumSize; #
transient secondaryBitmapsSize = secondaryBitmapsCount/8; transient secondaryBitmapsSize = secondaryBitmapsCount/8;

View File

@ -1,7 +1,7 @@
# (C) Copyright 2005- ECMWF. # (C) Copyright 2005- ECMWF.
# moved here to allow different bitsPerValue in second order packing # moved here to allow different bitsPerValue in second order packing
unsigned[1] bitsPerValue : dump ; unsigned[1] bitsPerValue : dump;
alias numberOfBitsContainingEachPackedValue = bitsPerValue; alias numberOfBitsContainingEachPackedValue = bitsPerValue;
# For grib1 -> grib2 # For grib1 -> grib2
@ -11,15 +11,15 @@ alias numberOfBitsContainingEachPackedValue = bitsPerValue;
constant PUnset = -32767; constant PUnset = -32767;
unsigned[2] N : read_only,dump; unsigned[2] N : read_only,dump;
signed[2] P = PUnset ; signed[2] P = PUnset;
unsigned[1] JS=0 : dump; unsigned[1] JS=0 : dump;
unsigned[1] KS=0 : dump; unsigned[1] KS=0 : dump;
unsigned[1] MS=0 : dump; unsigned[1] MS=0 : dump;
alias subSetJ=JS ; alias subSetJ=JS;
alias subSetK=KS ; alias subSetK=KS;
alias subSetM=MS ; alias subSetM=MS;
constant GRIBEXShBugPresent = 1; constant GRIBEXShBugPresent = 1;
if (gribex_mode_on()) { if (gribex_mode_on()) {
@ -33,9 +33,9 @@ constant PUnset = -32767;
if (localUsePresent) { if (localUsePresent) {
if (changed(localDefinitionNumber)) { if (changed(localDefinitionNumber)) {
transient TS = 0 ; transient TS = 0;
meta TScalc spectral_truncation(JS,KS,MS,TS) : read_only,hidden; meta TScalc spectral_truncation(JS,KS,MS,TS) : read_only,hidden;
meta Nassigned octect_number(N,4*TScalc) : hidden ; meta Nassigned octect_number(N,4*TScalc) : hidden;
} }
} }
@ -68,7 +68,7 @@ constant PUnset = -32767;
halfByte, halfByte,
N,packingType,spectral_ieee,precision N,packingType,spectral_ieee,precision
) : dump ; ) : dump;
meta data.packedValues data_sh_packed( meta data.packedValues data_sh_packed(
section4Length, section4Length,

View File

@ -1,7 +1,7 @@
# (C) Copyright 2005- ECMWF. # (C) Copyright 2005- ECMWF.
# moved here to allow different bitsPerValue in second order packing # moved here to allow different bitsPerValue in second order packing
unsigned[1] bitsPerValue : dump ; unsigned[1] bitsPerValue : dump;
alias numberOfBitsContainingEachPackedValue = bitsPerValue; alias numberOfBitsContainingEachPackedValue = bitsPerValue;
# For grib1 -> grib2 # For grib1 -> grib2
@ -11,15 +11,15 @@ alias numberOfBitsContainingEachPackedValue = bitsPerValue;
constant PUnset = -32767; constant PUnset = -32767;
unsigned[2] N : read_only,dump; unsigned[2] N : read_only,dump;
signed[2] P = PUnset ; signed[2] P = PUnset;
unsigned[1] JS=0 : dump; unsigned[1] JS=0 : dump;
unsigned[1] KS=0 : dump; unsigned[1] KS=0 : dump;
unsigned[1] MS=0 : dump; unsigned[1] MS=0 : dump;
alias subSetJ=JS ; alias subSetJ=JS;
alias subSetK=KS ; alias subSetK=KS;
alias subSetM=MS ; alias subSetM=MS;
constant GRIBEXShBugPresent = 1; constant GRIBEXShBugPresent = 1;
transient computeLaplacianOperator=0; transient computeLaplacianOperator=0;
@ -29,9 +29,9 @@ constant PUnset = -32767;
if (localUsePresent) { if (localUsePresent) {
if (changed(localDefinitionNumber)) { if (changed(localDefinitionNumber)) {
transient TS = 0 ; transient TS = 0;
meta TScalc spectral_truncation(JS,KS,MS,TS) : read_only,hidden; meta TScalc spectral_truncation(JS,KS,MS,TS) : read_only,hidden;
meta Nassigned octect_number(N,4*TScalc) : hidden ; meta Nassigned octect_number(N,4*TScalc) : hidden;
} }
} }
@ -64,7 +64,7 @@ constant PUnset = -32767;
halfByte, halfByte,
N,packingType,spectral_ieee,precision N,packingType,spectral_ieee,precision
) : dump ; ) : dump;
meta data.packedValues data_sh_packed( meta data.packedValues data_sh_packed(
section4Length, section4Length,

View File

@ -139,58 +139,52 @@
template mars_labeling "grib1/mars_labeling.def"; template mars_labeling "grib1/mars_labeling.def";
unsigned[1] perturbationNumber : dump ; unsigned[1] perturbationNumber : dump;
alias number = perturbationNumber; alias number = perturbationNumber;
unsigned[1] numberOfForecastsInEnsemble : dump; unsigned[1] numberOfForecastsInEnsemble : dump;
# ascii[4] '************_EXPERIMENT_************';
# EXPERIMENT ascii[8] 'Experiment_Identifier';
# ascii[8] 'Sub-Experiment_Identifier';
ascii[4] '************_EXPERIMENT_************' ;
ascii[8] 'Experiment_Identifier' ;
ascii[8] 'Sub-Experiment_Identifier' ;
# ascii[4] '************_PRODUCT_***************';
# PRODUCT unsigned[1] Original_CodeTable_2_Version_Number : dump;
#
ascii[4] '************_PRODUCT_***************' ;
unsigned[1] Original_CodeTable_2_Version_Number : dump ;
unsigned[1] Original_Parameter_Iden_CodeTable2 : dump; unsigned[1] Original_Parameter_Iden_CodeTable2 : dump;
ascii[8] 'Original_Parameter_Identifier' ; ascii[8] 'Original_Parameter_Identifier';
ascii[8] 'Product_Identifier' ; ascii[8] 'Product_Identifier';
# Thresholds and Distributions # Thresholds and Distributions
unsigned[2] Threshold_Or_Distribution_0_no_1_yes : dump ; unsigned[2] Threshold_Or_Distribution_0_no_1_yes : dump;
ascii[4] 'Threshold_Or_Distribution_Units' ; ascii[4] 'Threshold_Or_Distribution_Units';
unsigned[4] At_least__Or_Distribut_Proportion_Of : dump ; unsigned[4] At_least__Or_Distribut_Proportion_Of : dump;
unsigned[4] Less_Than_Or_To_Overall_Distribution : dump ; unsigned[4] Less_Than_Or_To_Overall_Distribution : dump;
pad padding_loc244_1(40); pad padding_loc244_1(40);
ascii[4] '************_ENSEMBLE_**************' ; ascii[4] '************_ENSEMBLE_**************';
unsigned[2] Number_Combination_Ensembles_1_none : dump ; unsigned[2] Number_Combination_Ensembles_1_none : dump;
unsigned[1] Show_Combination_Ensem_E2_0_no_1_yes : dump ; unsigned[1] Show_Combination_Ensem_E2_0_no_1_yes : dump;
unsigned[1] Show_Combination_Ensem_E3_0_no_1_yes : dump ; unsigned[1] Show_Combination_Ensem_E3_0_no_1_yes : dump;
unsigned[1] Show_Combination_Ensem_E4_0_no_1_yes : dump ; unsigned[1] Show_Combination_Ensem_E4_0_no_1_yes : dump;
pad padding_loc244_2(7); pad padding_loc244_2(7);
unsigned[2] Total_Number_Members_Used : dump; unsigned[2] Total_Number_Members_Used : dump;
unsigned[2] Total_Number_Members_Possible : dump ; unsigned[2] Total_Number_Members_Possible : dump;
unsigned[2] Total_Number_Members_Missing : dump ; unsigned[2] Total_Number_Members_Missing : dump;
unsigned[2] Ensemble_Combination_Number : dump ; unsigned[2] Ensemble_Combination_Number : dump;
ascii[8] 'Ensemble_Identifier' ; ascii[8] 'Ensemble_Identifier';
unsigned[2] Local_Number_Members_Used : dump ; unsigned[2] Local_Number_Members_Used : dump;
unsigned[2] Local_Number_Members_Possible : dump ; unsigned[2] Local_Number_Members_Possible : dump;
unsigned[2] Local_Number_Members_Missing : dump ; unsigned[2] Local_Number_Members_Missing : dump;
listMembersUsed list(Local_Number_Members_Used){ listMembersUsed list(Local_Number_Members_Used){
ascii[4] 'Used_Model_LBC' ; ascii[4] 'Used_Model_LBC';
} }
listMembersMissing list(Local_Number_Members_Missing){ listMembersMissing list(Local_Number_Members_Missing){
ascii[4] 'Missing_Model_LBC' ; ascii[4] 'Missing_Model_LBC';
} }
# #
@ -198,29 +192,29 @@ listMembersMissing list(Local_Number_Members_Missing){
# #
if (Show_Combination_Ensem_E2_0_no_1_yes == 1){ if (Show_Combination_Ensem_E2_0_no_1_yes == 1){
unsigned[2] Ensemble_Combinat_Number_0_none_E2 : dump ; unsigned[2] Ensemble_Combinat_Number_0_none_E2 : dump;
ascii[8] 'Ensemble_Identifier_E2' ; ascii[8] 'Ensemble_Identifier_E2';
unsigned[2] Local_Number_Members_Used_E2 : dump ; unsigned[2] Local_Number_Members_Used_E2 : dump;
unsigned[2] Local_Number_Members_Possible_E2 : dump ; unsigned[2] Local_Number_Members_Possible_E2 : dump;
unsigned[2] Local_Number_Members_Missing_E2 : dump ; unsigned[2] Local_Number_Members_Missing_E2 : dump;
unsigned[3] Date_E2 : dump; unsigned[3] Date_E2 : dump;
unsigned[1] Hour_E2 : dump; unsigned[1] Hour_E2 : dump;
unsigned[1] Minute_E2 : dump; unsigned[1] Minute_E2 : dump;
unsigned[2] Time_Range_One_E2 : dump ; unsigned[2] Time_Range_One_E2 : dump;
unsigned[2] Time_Range_Two_E2 : dump; unsigned[2] Time_Range_Two_E2 : dump;
listMembersUsed2 list(Local_Number_Members_Used_E2){ listMembersUsed2 list(Local_Number_Members_Used_E2){
ascii[4] 'Used_Model_LBC_E2' ; ascii[4] 'Used_Model_LBC_E2';
} }
listMembersMissing2 list(Local_Number_Members_Missing_E2){ listMembersMissing2 list(Local_Number_Members_Missing_E2){
ascii[4] 'Missing_Model_LBC_E2' ; ascii[4] 'Missing_Model_LBC_E2';
} }
} }
if (Show_Combination_Ensem_E3_0_no_1_yes == 1){ if (Show_Combination_Ensem_E3_0_no_1_yes == 1){
unsigned[2] Ensemble_Combinat_Number_0_none_E3 : dump ; unsigned[2] Ensemble_Combinat_Number_0_none_E3 : dump;
ascii[8] 'Ensemble_Identifier_E3' ; ascii[8] 'Ensemble_Identifier_E3';
unsigned[2] Local_Number_Members_Used_E3 : dump; unsigned[2] Local_Number_Members_Used_E3 : dump;
unsigned[2] Local_Number_Members_Possible_E3 : dump; unsigned[2] Local_Number_Members_Possible_E3 : dump;
unsigned[2] Local_Number_Members_Missing_E3 : dump; unsigned[2] Local_Number_Members_Missing_E3 : dump;
@ -231,39 +225,39 @@ if (Show_Combination_Ensem_E3_0_no_1_yes == 1){
unsigned[2] Time_Range_Two_E3 : dump; unsigned[2] Time_Range_Two_E3 : dump;
listMembersUsed3 list(Local_Number_Members_Used_E3){ listMembersUsed3 list(Local_Number_Members_Used_E3){
ascii[4] 'Used_Model_LBC_E3' ; ascii[4] 'Used_Model_LBC_E3';
} }
listMembersMissing3 list(Local_Number_Members_Missing_E3){ listMembersMissing3 list(Local_Number_Members_Missing_E3){
ascii[4] 'Missing_Model_LBC_E3' ; ascii[4] 'Missing_Model_LBC_E3';
} }
} }
if (Show_Combination_Ensem_E4_0_no_1_yes == 1){ if (Show_Combination_Ensem_E4_0_no_1_yes == 1){
unsigned[2] Ensemble_Combinat_Number_0_none_E4 : dump ; unsigned[2] Ensemble_Combinat_Number_0_none_E4 : dump;
ascii[8] 'Ensemble_Identifier_E4' ; ascii[8] 'Ensemble_Identifier_E4';
unsigned[2] Local_Number_Members_Used_E4 : dump; unsigned[2] Local_Number_Members_Used_E4 : dump;
unsigned[2] Local_Number_Members_Possible_E4 : dump; unsigned[2] Local_Number_Members_Possible_E4 : dump;
unsigned[2] Local_Number_Members_Missing_E4 : dump; unsigned[2] Local_Number_Members_Missing_E4 : dump;
unsigned[3] Date_E4 : dump; unsigned[3] Date_E4 : dump;
unsigned[1] Hour_E4 : dump; unsigned[1] Hour_E4 : dump;
unsigned[1] Minute_E4 : dump; unsigned[1] Minute_E4 : dump;
unsigned[2] Time_Range_One_E4 : dump ; unsigned[2] Time_Range_One_E4 : dump;
unsigned[2] Time_Range_Two_E4 : dump; unsigned[2] Time_Range_Two_E4 : dump;
listMembersUsed4 list(Local_Number_Members_Used_E4){ listMembersUsed4 list(Local_Number_Members_Used_E4){
ascii[4] 'Used_Model_LBC_E4' ; ascii[4] 'Used_Model_LBC_E4';
} }
listMembersMissing4 list(Local_Number_Members_Missing_E4){ listMembersMissing4 list(Local_Number_Members_Missing_E4){
ascii[4] 'Missing_Model_LBC_E4' ; ascii[4] 'Missing_Model_LBC_E4';
} }
} }
# #
# EXTRA INFORMATION like 191 # EXTRA INFORMATION like 191
# #
ascii[4] '*********_EXTRA_DATA_***************' ; ascii[4] '*********_EXTRA_DATA_***************';
unsigned[2] Extra_Data_FreeFormat_0_none : dump; unsigned[2] Extra_Data_FreeFormat_0_none : dump;
position offsetFreeFormData; position offsetFreeFormData;
unsigned[1] freeFormData[Extra_Data_FreeFormat_0_none] : dump; unsigned[1] freeFormData[Extra_Data_FreeFormat_0_none] : dump;

View File

@ -14,15 +14,15 @@ label "CMC local definition (Canada)";
# spatialSmoothingOfProduct 45 # spatialSmoothingOfProduct 45
# isotopeIdentificationNumber 46-47 2 # isotopeIdentificationNumber 46-47 2
unsigned[1] applicationIdentifier : dump ; unsigned[1] applicationIdentifier : dump;
unsigned[1] type : dump; unsigned[1] type : dump;
unsigned[1] identificationNumber : dump; unsigned[1] identificationNumber : dump;
unsigned[1] productIdentifier : dump ; unsigned[1] productIdentifier : dump;
unsigned[1] spatialSmoothingOfProduct : dump ; unsigned[1] spatialSmoothingOfProduct : dump;
# See GRIB-557 # See GRIB-557
unsigned[2] isotopeIdentificationNumber : dump ; unsigned[2] isotopeIdentificationNumber : dump;

View File

@ -1,7 +1,7 @@
# (C) Copyright 2005- ECMWF. # (C) Copyright 2005- ECMWF.
# Coupled atmospheric, wave and ocean means (with hindcast support) # Coupled atmospheric, wave and ocean means (with hindcast support)
constant GRIBEXSection1Problem = 84 - section1Length ; constant GRIBEXSection1Problem = 84 - section1Length;
#used in local definition 13 #used in local definition 13
transient localFlag=2 : hidden; transient localFlag=2 : hidden;
@ -18,8 +18,8 @@ unsigned[2] perturbationNumber : dump;
unsigned[2] systemNumber : dump; unsigned[2] systemNumber : dump;
unsigned[2] methodNumber : dump; unsigned[2] methodNumber : dump;
unsigned[4] verifyingMonth : dump; unsigned[4] verifyingMonth : dump;
unsigned[1] averagingPeriod : dump ; unsigned[1] averagingPeriod : dump;
unsigned[2] forecastMonth : dump ; unsigned[2] forecastMonth : dump;
unsigned[4] referenceDate : dump; unsigned[4] referenceDate : dump;
unsigned[4] climateDateFrom : dump; unsigned[4] climateDateFrom : dump;
unsigned[4] climateDateTo : dump; unsigned[4] climateDateTo : dump;
@ -30,15 +30,15 @@ unsigned[2] upperThresholdValue : dump;
alias local.systemNumber=systemNumber; alias local.systemNumber=systemNumber;
alias local.methodNumber=methodNumber; alias local.methodNumber=methodNumber;
alias local.verifyingMonth=verifyingMonth ; alias local.verifyingMonth=verifyingMonth;
alias local.averagingPeriod=averagingPeriod ; alias local.averagingPeriod=averagingPeriod;
alias local.forecastMonth=forecastMonth ; alias local.forecastMonth=forecastMonth;
alias local.referenceDate=referenceDate ; alias local.referenceDate=referenceDate;
alias local.climateDateFrom=climateDateFrom ; alias local.climateDateFrom=climateDateFrom;
alias local.climateDateTo=climateDateTo ; alias local.climateDateTo=climateDateTo;
alias local.unitsDecimalScaleFactor=unitsDecimalScaleFactor ; alias local.unitsDecimalScaleFactor=unitsDecimalScaleFactor;
alias local.thresholdIndicator=thresholdIndicator ; alias local.thresholdIndicator=thresholdIndicator;
alias local.lowerThresholdValue=lowerThresholdValue ; alias local.lowerThresholdValue=lowerThresholdValue;
alias local.upperThresholdValue=upperThresholdValue; alias local.upperThresholdValue=upperThresholdValue;
# TODO: BR Note: this is not where we expect it!! # TODO: BR Note: this is not where we expect it!!

View File

@ -1,7 +1,7 @@
# (C) Copyright 2005- ECMWF. # (C) Copyright 2005- ECMWF.
# MARS labelling or ensemble forecast data (with hindcast support) # MARS labelling or ensemble forecast data (with hindcast support)
constant GRIBEXSection1Problem = 69 - section1Length ; constant GRIBEXSection1Problem = 69 - section1Length;
#used in local definition 13 #used in local definition 13
transient localFlag=2 : hidden; transient localFlag=2 : hidden;
@ -20,14 +20,14 @@ if (stepType is "instant" ) {
constant wrongPadding=1 : hidden; constant wrongPadding=1 : hidden;
unsigned[1] number : dump; unsigned[1] number : dump;
unsigned[1] numberOfForecastsInEnsemble : dump ; unsigned[1] numberOfForecastsInEnsemble : dump;
alias totalNumber=numberOfForecastsInEnsemble; alias totalNumber=numberOfForecastsInEnsemble;
unsigned[4] referenceDate : dump ; unsigned[4] referenceDate : dump;
unsigned[4] climateDateFrom : dump; unsigned[4] climateDateFrom : dump;
unsigned[4] climateDateTo : dump ; unsigned[4] climateDateTo : dump;
pad padding_loc26_1(6); pad padding_loc26_1(6);
alias perturbationNumber=number; alias perturbationNumber=number;
alias local.referenceDate= referenceDate ; alias local.referenceDate= referenceDate;
alias local.climateDateFrom= climateDateFrom ; alias local.climateDateFrom= climateDateFrom;
alias local.climateDateTo= climateDateTo ; alias local.climateDateTo= climateDateTo;

View File

@ -1,7 +1,7 @@
# (C) Copyright 2005- ECMWF. # (C) Copyright 2005- ECMWF.
# Forecasting Systems with Variable Resolution (Obsolete) # Forecasting Systems with Variable Resolution (Obsolete)
constant GRIBEXSection1Problem = 107 - section1Length ; constant GRIBEXSection1Problem = 107 - section1Length;
#1->2 #1->2
transient grib2LocalSectionNumber=30; transient grib2LocalSectionNumber=30;
@ -9,21 +9,21 @@ transient grib2LocalSectionNumber=30;
template mars_labeling "grib1/mars_labeling.def"; template mars_labeling "grib1/mars_labeling.def";
constant wrongPadding=1 : hidden; constant wrongPadding=1 : hidden;
unsigned[1] perturbationNumber : dump ; unsigned[1] perturbationNumber : dump;
unsigned[1] numberOfForecastsInEnsemble : dump ; unsigned[1] numberOfForecastsInEnsemble : dump;
alias totalNumber=numberOfForecastsInEnsemble; alias totalNumber=numberOfForecastsInEnsemble;
alias number = perturbationNumber; alias number = perturbationNumber;
unsigned[1] oceanAtmosphereCoupling : dump ; unsigned[1] oceanAtmosphereCoupling : dump;
pad padding_loc27_1(3); pad padding_loc27_1(3);
unsigned[4] legBaseDate : dump ; unsigned[4] legBaseDate : dump;
unsigned[2] legBaseTime : dump ; unsigned[2] legBaseTime : dump;
unsigned[1] legNumber : dump ; unsigned[1] legNumber : dump;
unsigned[4] referenceDate : dump ; unsigned[4] referenceDate : dump;
unsigned[4] climateDateFrom : dump ; unsigned[4] climateDateFrom : dump;
unsigned[4] climateDateTo : dump ; unsigned[4] climateDateTo : dump;
alias mars._leg_number = legNumber; alias mars._leg_number = legNumber;

View File

@ -3,18 +3,18 @@
# information about probabilities (they have already probabilities) # information about probabilities (they have already probabilities)
# information about clustering (they save it as ASCII, at the moment...) # information about clustering (they save it as ASCII, at the moment...)
constant GRIBEXSection1Problem = 79 - section1Length ; constant GRIBEXSection1Problem = 79 - section1Length;
template mars_labeling "grib1/mars_labeling.def"; template mars_labeling "grib1/mars_labeling.def";
constant wrongPadding=1 : hidden; constant wrongPadding=1 : hidden;
unsigned[1] perturbationNumber : dump; unsigned[1] perturbationNumber : dump;
alias number = perturbationNumber; alias number = perturbationNumber;
unsigned[1] numberOfForecastsInEnsemble : dump ; unsigned[1] numberOfForecastsInEnsemble : dump;
alias totalNumber=numberOfForecastsInEnsemble; alias totalNumber=numberOfForecastsInEnsemble;
unsigned[4] baseDateEPS : dump ; unsigned[4] baseDateEPS : dump;
unsigned[2] baseTimeEPS : dump; unsigned[2] baseTimeEPS : dump;
unsigned[1] numberOfRepresentativeMember : dump ; unsigned[1] numberOfRepresentativeMember : dump;
unsigned[1] numberOfMembersInCluster : dump; unsigned[1] numberOfMembersInCluster : dump;
unsigned[1] totalInitialConditions : dump; unsigned[1] totalInitialConditions : dump;

View File

@ -1,25 +1,25 @@
# (C) Copyright 2005- ECMWF. # (C) Copyright 2005- ECMWF.
# COSMO clustering information # COSMO clustering information
constant GRIBEXSection1Problem = 960 - section1Length ; constant GRIBEXSection1Problem = 960 - section1Length;
template mars_labeling "grib1/mars_labeling.def"; template mars_labeling "grib1/mars_labeling.def";
unsigned[1] clusterNumber : dump; unsigned[1] clusterNumber : dump;
alias number=clusterNumber; alias number=clusterNumber;
unsigned[1] totalNumberOfClusters : dump ; unsigned[1] totalNumberOfClusters : dump;
alias totalNumber=totalNumberOfClusters; alias totalNumber=totalNumberOfClusters;
pad padding_loc29_1(1); pad padding_loc29_1(1);
unsigned[1] clusteringMethod : dump ; unsigned[1] clusteringMethod : dump;
signed[3] northernLatitudeOfDomain : dump; signed[3] northernLatitudeOfDomain : dump;
signed[3] westernLongitudeOfDomain : dump ; signed[3] westernLongitudeOfDomain : dump;
signed[3] southernLatitudeOfDomain : dump ; signed[3] southernLatitudeOfDomain : dump;
signed[3] easternLongitudeOfDomain : dump ; signed[3] easternLongitudeOfDomain : dump;
unsigned[1] numberOfForecastsInCluster : dump; unsigned[1] numberOfForecastsInCluster : dump;
unsigned[1] numberOfParametersUsedForClustering : dump ; unsigned[1] numberOfParametersUsedForClustering : dump;
unsigned[1] numberOfPressureLevelsUsedForClustering : dump ; unsigned[1] numberOfPressureLevelsUsedForClustering : dump;
unsigned[1] numberOfStepsUsedForClustering : dump ; unsigned[1] numberOfStepsUsedForClustering : dump;
pad padding_loc29_2(10); pad padding_loc29_2(10);

View File

@ -5,7 +5,7 @@
alias grib2LocalSectionPresent=present; alias grib2LocalSectionPresent=present;
constant grib2LocalSectionNumber=9; constant grib2LocalSectionNumber=9;
constant GRIBEXSection1Problem = 92 - section1Length ; constant GRIBEXSection1Problem = 92 - section1Length;
template mars_labeling "grib1/mars_labeling.def"; template mars_labeling "grib1/mars_labeling.def";
@ -30,33 +30,33 @@ if(type != perturbedType)
{ {
unsigned[2] numberOfIterations : dump; unsigned[2] numberOfIterations : dump;
unsigned[2] numberOfSingularVectorsComputed : dump; unsigned[2] numberOfSingularVectorsComputed : dump;
unsigned[1] normAtInitialTime : dump ; unsigned[1] normAtInitialTime : dump;
unsigned[1] normAtFinalTime : dump ; unsigned[1] normAtFinalTime : dump;
unsigned[4] multiplicationFactorForLatLong : dump; unsigned[4] multiplicationFactorForLatLong : dump;
signed[4] northWestLatitudeOfLPOArea : dump ; signed[4] northWestLatitudeOfLPOArea : dump;
signed[4] northWestLongitudeOfLPOArea : dump; signed[4] northWestLongitudeOfLPOArea : dump;
signed[4] southEastLatitudeOfLPOArea : dump; signed[4] southEastLatitudeOfLPOArea : dump;
signed[4] southEastLongitudeOfLPOArea : dump; signed[4] southEastLongitudeOfLPOArea : dump;
unsigned[4] accuracyMultipliedByFactor : dump; unsigned[4] accuracyMultipliedByFactor : dump;
unsigned[2] numberOfSingularVectorsEvolved : dump; unsigned[2] numberOfSingularVectorsEvolved : dump;
# Ritz numbers: # Ritz numbers:
signed[4] NINT_LOG10_RITZ : dump ; signed[4] NINT_LOG10_RITZ : dump;
signed[4] NINT_RITZ_EXP : dump ; signed[4] NINT_RITZ_EXP : dump;
alias local.numberOfIterations= numberOfIterations; alias local.numberOfIterations= numberOfIterations;
alias local.numberOfSingularVectorsComputed= numberOfSingularVectorsComputed ; alias local.numberOfSingularVectorsComputed= numberOfSingularVectorsComputed;
alias local.normAtInitialTime= normAtInitialTime ; alias local.normAtInitialTime= normAtInitialTime;
alias local.normAtFinalTime= normAtFinalTime ; alias local.normAtFinalTime= normAtFinalTime;
alias local.multiplicationFactorForLatLong= multiplicationFactorForLatLong ; alias local.multiplicationFactorForLatLong= multiplicationFactorForLatLong;
alias local.northWestLatitudeOfLPOArea= northWestLatitudeOfLPOArea ; alias local.northWestLatitudeOfLPOArea= northWestLatitudeOfLPOArea;
alias local.northWestLongitudeOfLPOArea= northWestLongitudeOfLPOArea ; alias local.northWestLongitudeOfLPOArea= northWestLongitudeOfLPOArea;
alias local.southEastLatitudeOfLPOArea= southEastLatitudeOfLPOArea ; alias local.southEastLatitudeOfLPOArea= southEastLatitudeOfLPOArea;
alias local.southEastLongitudeOfLPOArea= southEastLongitudeOfLPOArea ; alias local.southEastLongitudeOfLPOArea= southEastLongitudeOfLPOArea;
alias local.accuracyMultipliedByFactor= accuracyMultipliedByFactor ; alias local.accuracyMultipliedByFactor= accuracyMultipliedByFactor;
alias local.numberOfSingularVectorsEvolved= numberOfSingularVectorsEvolved ; alias local.numberOfSingularVectorsEvolved= numberOfSingularVectorsEvolved;
# Ritz numbers:
alias local.NINT_LOG10_RITZ= NINT_LOG10_RITZ ; alias local.NINT_LOG10_RITZ= NINT_LOG10_RITZ;
alias local.NINT_RITZ_EXP= NINT_RITZ_EXP ; alias local.NINT_RITZ_EXP= NINT_RITZ_EXP;
} }
# spareSetToZero # spareSetToZero

View File

@ -54,7 +54,3 @@ if (stepType is "instant" ) {
} }
} }
} }
# monthly mean
#if (timeRangeIndicator==113) {
#}

View File

@ -29,9 +29,9 @@ meta swapScanningY change_scanning_direction( values,Ni,Nj,
alias swapScanningLat = swapScanningY; alias swapScanningLat = swapScanningY;
if (jPointsAreConsecutive) { if (jPointsAreConsecutive) {
alias numberOfRows=Ni; alias numberOfRows=Ni;
alias numberOfColumns=Nj; alias numberOfColumns=Nj;
} else { } else {
alias numberOfRows=Nj; alias numberOfRows=Nj;
alias numberOfColumns=Ni; alias numberOfColumns=Ni;
} }

View File

@ -19,7 +19,7 @@ if (preferLocalConcepts) {
transient productionStatusOfProcessedData=0; transient productionStatusOfProcessedData=0;
position offsetSection1; position offsetSection1;
section_length[3] section1Length ; section_length[3] section1Length;
meta section1Pointer section_pointer(offsetSection1,section1Length,1); meta section1Pointer section_pointer(offsetSection1,section1Length,1);
constant wrongPadding=0; constant wrongPadding=0;
@ -42,12 +42,12 @@ alias ls.centre = centre;
# Generating process identification number # Generating process identification number
# (allocated by originating centre) # (allocated by originating centre)
unsigned[1] generatingProcessIdentifier : dump ; unsigned[1] generatingProcessIdentifier : dump;
alias generatingProcessIdentificationNumber=generatingProcessIdentifier; alias generatingProcessIdentificationNumber=generatingProcessIdentifier;
alias process=generatingProcessIdentifier; alias process=generatingProcessIdentifier;
unsigned[1] gridDefinition = 255 : edition_specific ; unsigned[1] gridDefinition = 255 : edition_specific;
flags[1] section1Flags 'grib1/1.table' = 128 : hidden ; # = section 2 present flags[1] section1Flags 'grib1/1.table' = 128 : hidden; # = section 2 present
alias centreForTable2=centre; alias centreForTable2=centre;
@ -113,11 +113,11 @@ if( indicatorOfTypeOfLevel == 109 ||
alias mars.levelist = level; alias mars.levelist = level;
} }
unsigned[1] yearOfCentury : edition_specific ; unsigned[1] yearOfCentury : edition_specific;
unsigned[1] month ; unsigned[1] month;
unsigned[1] day ; unsigned[1] day;
unsigned[1] hour ; unsigned[1] hour;
unsigned[1] minute ; unsigned[1] minute;
transient second = 0; transient second = 0;
codetable[1] unitOfTimeRange 'grib1/4.table' = 1 : edition_specific; codetable[1] unitOfTimeRange 'grib1/4.table' = 1 : edition_specific;
@ -136,7 +136,7 @@ unsigned[2] numberIncludedInAverage;
meta mybits bits(numberIncludedInAverage,0,12); meta mybits bits(numberIncludedInAverage,0,12);
unsigned[1] numberMissingFromAveragesOrAccumulations; unsigned[1] numberMissingFromAveragesOrAccumulations;
unsigned[1] centuryOfReferenceTimeOfData ; unsigned[1] centuryOfReferenceTimeOfData;
codetable[1] subCentre 'grib1/0.[centre].table' : dump; codetable[1] subCentre 'grib1/0.[centre].table' : dump;
@ -179,7 +179,7 @@ transient setLocalDefinition= 0 : no_copy;
transient optimizeScaleFactor = 0; transient optimizeScaleFactor = 0;
meta dataDate g1date(centuryOfReferenceTimeOfData,yearOfCentury,month,day) : dump; meta dataDate g1date(centuryOfReferenceTimeOfData,yearOfCentury,month,day) : dump;
meta year evaluate(dataDate / 10000) ; meta year evaluate(dataDate / 10000);
meta dataTime time(hour,minute,second) : dump; meta dataTime time(hour,minute,second) : dump;
meta julianDay julian_day(dataDate,hour,minute,second) : edition_specific; meta julianDay julian_day(dataDate,hour,minute,second) : edition_specific;
@ -195,18 +195,18 @@ concept_nofail stepType (timeRangeIndicator, "stepType.def", conceptsDir2, conce
#alias timeIncrement=zero; #alias timeIncrement=zero;
#if (timeRangeIndicator==113) { #if (timeRangeIndicator==113) {
# alias lengthOfTimeRange=numberIncludedInAverage; # alias lengthOfTimeRange=numberIncludedInAverage;
# alias indicatorOfUnitForTimeRange=unitOfTimeRange; # alias indicatorOfUnitForTimeRange=unitOfTimeRange;
# alias indicatorOfUnitForTimeIncrement=unitOfTimeRange; # alias indicatorOfUnitForTimeIncrement=unitOfTimeRange;
# alias timeIncrement=P2; # alias timeIncrement=P2;
# alias forecastTime=P1; # alias forecastTime=P1;
#} #}
#if (stepType is "accum") { #if (stepType is "accum") {
# transient accumulationRange=P2-P1; # transient accumulationRange=P2-P1;
# alias lengthOfTimeRange=accumulationRange; # alias lengthOfTimeRange=accumulationRange;
# alias forecastTime=P1; # alias forecastTime=P1;
# alias indicatorOfUnitForTimeRange=unitOfTimeRange; # alias indicatorOfUnitForTimeRange=unitOfTimeRange;
#} #}
#conversion 1->2 #conversion 1->2