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();
#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_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;
constant offsetSection0=0;
constant section0Length=8 ;
constant section0Length=8;
meta section0Pointer section_pointer(offsetSection0,section0Length,0);
# 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
# section_length[3] totalLength ;
# section_length[3] totalLength;
# we get:
g1_message_length[3] totalLength(section4Length) ;
g1_message_length[3] totalLength(section4Length);
position startOfHeaders;
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;
# Note flagbit numbers 7 to 0, while wmo is 1 to 8
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;
flagbit bitmapPresent(section1Flags,6) :dump;
@ -57,7 +57,7 @@ alias missingValuesPresent=bitmapPresent : read_only;
transient angleSubdivisions=1000; # milli degrees
if(gridDescriptionSectionPresent){
template section_2 "grib1/section.2.def" ;
template section_2 "grib1/section.2.def";
} else {
template predefined_grid "grib1/predefined_grid.def";
}

View File

@ -58,7 +58,6 @@ if(matrixOfValues == 0)
position offsetBeforeData;
if(bitmapPresent) {
# For grib1 -> grib2
constant bitMapIndicator = 0;
@ -113,27 +112,25 @@ if(matrixOfValues == 0)
constant bitMapIndicator = 0;
# 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;
transient secondaryBitmapsCount = octetAtWichPackedDataBegins*datumSize; #
transient secondaryBitmapsSize = secondaryBitmapsCount/8;

View File

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

View File

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

View File

@ -139,58 +139,52 @@
template mars_labeling "grib1/mars_labeling.def";
unsigned[1] perturbationNumber : dump ;
unsigned[1] perturbationNumber : dump;
alias number = perturbationNumber;
unsigned[1] numberOfForecastsInEnsemble : dump;
#
# EXPERIMENT
#
ascii[4] '************_EXPERIMENT_************' ;
ascii[8] 'Experiment_Identifier' ;
ascii[8] 'Sub-Experiment_Identifier' ;
ascii[4] '************_EXPERIMENT_************';
ascii[8] 'Experiment_Identifier';
ascii[8] 'Sub-Experiment_Identifier';
#
# PRODUCT
#
ascii[4] '************_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;
ascii[8] 'Original_Parameter_Identifier' ;
ascii[8] 'Product_Identifier' ;
ascii[8] 'Original_Parameter_Identifier';
ascii[8] 'Product_Identifier';
# Thresholds and Distributions
unsigned[2] Threshold_Or_Distribution_0_no_1_yes : dump ;
ascii[4] 'Threshold_Or_Distribution_Units' ;
unsigned[4] At_least__Or_Distribut_Proportion_Of : dump ;
unsigned[4] Less_Than_Or_To_Overall_Distribution : dump ;
unsigned[2] Threshold_Or_Distribution_0_no_1_yes : dump;
ascii[4] 'Threshold_Or_Distribution_Units';
unsigned[4] At_least__Or_Distribut_Proportion_Of : dump;
unsigned[4] Less_Than_Or_To_Overall_Distribution : dump;
pad padding_loc244_1(40);
ascii[4] '************_ENSEMBLE_**************' ;
unsigned[2] Number_Combination_Ensembles_1_none : 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_E4_0_no_1_yes : dump ;
ascii[4] '************_ENSEMBLE_**************';
unsigned[2] Number_Combination_Ensembles_1_none : 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_E4_0_no_1_yes : dump;
pad padding_loc244_2(7);
unsigned[2] Total_Number_Members_Used : dump;
unsigned[2] Total_Number_Members_Possible : dump ;
unsigned[2] Total_Number_Members_Missing : dump ;
unsigned[2] Ensemble_Combination_Number : dump ;
ascii[8] 'Ensemble_Identifier' ;
unsigned[2] Local_Number_Members_Used : dump ;
unsigned[2] Local_Number_Members_Possible : dump ;
unsigned[2] Local_Number_Members_Missing : dump ;
unsigned[2] Total_Number_Members_Possible : dump;
unsigned[2] Total_Number_Members_Missing : dump;
unsigned[2] Ensemble_Combination_Number : dump;
ascii[8] 'Ensemble_Identifier';
unsigned[2] Local_Number_Members_Used : dump;
unsigned[2] Local_Number_Members_Possible : dump;
unsigned[2] Local_Number_Members_Missing : dump;
listMembersUsed list(Local_Number_Members_Used){
ascii[4] 'Used_Model_LBC' ;
ascii[4] 'Used_Model_LBC';
}
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){
unsigned[2] Ensemble_Combinat_Number_0_none_E2 : dump ;
ascii[8] 'Ensemble_Identifier_E2' ;
unsigned[2] Local_Number_Members_Used_E2 : dump ;
unsigned[2] Local_Number_Members_Possible_E2 : dump ;
unsigned[2] Local_Number_Members_Missing_E2 : dump ;
unsigned[2] Ensemble_Combinat_Number_0_none_E2 : dump;
ascii[8] 'Ensemble_Identifier_E2';
unsigned[2] Local_Number_Members_Used_E2 : dump;
unsigned[2] Local_Number_Members_Possible_E2 : dump;
unsigned[2] Local_Number_Members_Missing_E2 : dump;
unsigned[3] Date_E2 : dump;
unsigned[1] Hour_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;
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){
ascii[4] 'Missing_Model_LBC_E2' ;
ascii[4] 'Missing_Model_LBC_E2';
}
}
if (Show_Combination_Ensem_E3_0_no_1_yes == 1){
unsigned[2] Ensemble_Combinat_Number_0_none_E3 : dump ;
ascii[8] 'Ensemble_Identifier_E3' ;
unsigned[2] Ensemble_Combinat_Number_0_none_E3 : dump;
ascii[8] 'Ensemble_Identifier_E3';
unsigned[2] Local_Number_Members_Used_E3 : dump;
unsigned[2] Local_Number_Members_Possible_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;
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){
ascii[4] 'Missing_Model_LBC_E3' ;
ascii[4] 'Missing_Model_LBC_E3';
}
}
if (Show_Combination_Ensem_E4_0_no_1_yes == 1){
unsigned[2] Ensemble_Combinat_Number_0_none_E4 : dump ;
ascii[8] 'Ensemble_Identifier_E4' ;
unsigned[2] Ensemble_Combinat_Number_0_none_E4 : dump;
ascii[8] 'Ensemble_Identifier_E4';
unsigned[2] Local_Number_Members_Used_E4 : dump;
unsigned[2] Local_Number_Members_Possible_E4 : dump;
unsigned[2] Local_Number_Members_Missing_E4 : dump;
unsigned[3] Date_E4 : dump;
unsigned[1] Hour_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;
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){
ascii[4] 'Missing_Model_LBC_E4' ;
ascii[4] 'Missing_Model_LBC_E4';
}
}
#
# EXTRA INFORMATION like 191
#
ascii[4] '*********_EXTRA_DATA_***************' ;
ascii[4] '*********_EXTRA_DATA_***************';
unsigned[2] Extra_Data_FreeFormat_0_none : dump;
position offsetFreeFormData;
unsigned[1] freeFormData[Extra_Data_FreeFormat_0_none] : dump;

View File

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

View File

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

View File

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

View File

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

View File

@ -3,18 +3,18 @@
# information about probabilities (they have already probabilities)
# 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";
constant wrongPadding=1 : hidden;
unsigned[1] perturbationNumber : dump;
alias number = perturbationNumber;
unsigned[1] numberOfForecastsInEnsemble : dump ;
unsigned[1] numberOfForecastsInEnsemble : dump;
alias totalNumber=numberOfForecastsInEnsemble;
unsigned[4] baseDateEPS : dump ;
unsigned[4] baseDateEPS : dump;
unsigned[2] baseTimeEPS : dump;
unsigned[1] numberOfRepresentativeMember : dump ;
unsigned[1] numberOfRepresentativeMember : dump;
unsigned[1] numberOfMembersInCluster : dump;
unsigned[1] totalInitialConditions : dump;

View File

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

View File

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

View File

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