mirror of https://github.com/ecmwf/eccodes.git
199 lines
6.8 KiB
Modula-2
199 lines
6.8 KiB
Modula-2
# Copyright 2005-2014 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.
|
|
#
|
|
|
|
# START 1/local.98.13 ----------------------------------------------------------------------
|
|
# LOCAL 98 13
|
|
#
|
|
# localDefinitionTemplate_013
|
|
# ---------------------------
|
|
#
|
|
# Description Octet Code Ksec1 Count
|
|
# ----------- ----- ---- ----- -----
|
|
#localDefinitionNumber 41 I1 37 -
|
|
#class 42 I1 38 -
|
|
#type 43 I1 39 -
|
|
#stream 44 I2 40 -
|
|
#experimentVersionNumber 46 A4 41 -
|
|
#number 50 I1 42 -
|
|
#total 51 I1 43 -
|
|
#directionNumber 52 I1 44 -
|
|
#frequencyNumber 53 I1 45 -
|
|
#numberOfDirections 54 I1 46 -
|
|
#numberOfFrequencies 55 I1 47 -
|
|
#directionScalingFactor 56 I4 48 -
|
|
#frequencyScalingFactor 60 I4 49 -
|
|
#flag 64 F1 - 3
|
|
#scaledDirections 101 LP_I4 50 numberOfDirections
|
|
#scaledFrequencies - LP_I4 - numberOfFrequencies
|
|
#
|
|
|
|
template mars_labeling "grib1/mars_labeling.def";
|
|
|
|
unsigned[1] perturbationNumber : dump;
|
|
alias number = perturbationNumber;
|
|
|
|
unsigned[1] numberOfForecastsInEnsemble : dump ;
|
|
alias totalNumber=numberOfForecastsInEnsemble;
|
|
|
|
unsigned[1] directionNumber : dump ;
|
|
alias mars.direction = directionNumber;
|
|
|
|
unsigned[1] frequencyNumber : dump ;
|
|
alias mars.frequency = frequencyNumber;
|
|
|
|
unsigned[1] numberOfDirections : dump ;
|
|
alias totalNumberOfDirections = numberOfDirections ;
|
|
|
|
unsigned[1] numberOfFrequencies : dump;
|
|
alias totalNumberOfFrequencies = numberOfFrequencies ;
|
|
|
|
unsigned[4] directionScalingFactor : dump;
|
|
alias integerScalingFactorAppliedToDirections = directionScalingFactor;
|
|
|
|
unsigned[4] frequencyScalingFactor : dump;
|
|
alias integerScalingFactorAppliedToFrequencies = frequencyScalingFactor ;
|
|
|
|
constant localFlagLatestVersion = 4 : hidden;
|
|
codetable[1] localFlag "grib1/local.13.table" = localFlagLatestVersion;
|
|
|
|
#!
|
|
#! Old versions of wave 2D spectra direction and frequency do not
|
|
#! have the systemNumber and methodNumber, and the flag is set to 0.
|
|
#!
|
|
#if0 - IF_EQ 0 flag
|
|
#spareSetToZero 65 PAD n/a 36
|
|
#endif0 - ENDIF if0
|
|
if(localFlag == 0)
|
|
{
|
|
pad padding_loc13_1(36);
|
|
}
|
|
|
|
#!
|
|
#! Old versions of wave 2D spectra direction and frequency do not
|
|
#! have the systemNumber and methodNumber, and the flag is set to 0.
|
|
#!
|
|
#!
|
|
#!
|
|
#if1 - IF_EQ 1 flag
|
|
#systemNumber 065 I2 - -
|
|
#methodNumber 067 I2 - -
|
|
#spareSetToZero1 069 PAD n/a 32
|
|
#endif1 - ENDIF if1
|
|
if(localFlag == 1)
|
|
{
|
|
unsigned[2] systemNumber : dump;
|
|
unsigned[2] methodNumber : dump;
|
|
alias system = systemNumber;
|
|
alias method = methodNumber;
|
|
pad padding_loc13_2(32);
|
|
}
|
|
|
|
#if2 - IF_EQ 2 flag
|
|
#systemNumber 065 I2 - -
|
|
#methodNumber 067 I2 - -
|
|
#referenceDate 069 I4 - -
|
|
#climateDateFrom 073 I4 - -
|
|
#climateDateTo 077 I4 - -
|
|
#spareSetToZero2 081 PAD n/a 20
|
|
#endif2 - ENDIF if2
|
|
if(localFlag == 2)
|
|
{
|
|
unsigned[2] systemNumber : dump;
|
|
unsigned[2] methodNumber : dump;
|
|
unsigned[4] referenceDate : dump ;
|
|
unsigned[4] climateDateFrom : dump ;
|
|
unsigned[4] climateDateTo : dump ;
|
|
alias system = systemNumber;
|
|
alias method = methodNumber;
|
|
alias refdate = referenceDate;
|
|
pad padding_loc13_3(20);
|
|
}
|
|
|
|
#if3 - IF_EQ 3 flag
|
|
#systemNumber 065 I2 - -
|
|
#methodNumber 067 I2 - -
|
|
#referenceDate 069 I4 - -
|
|
#climateDateFrom 073 I4 - -
|
|
#climateDateTo 077 I4 - -
|
|
#legBaseDate 081 I4 - -
|
|
#legBaseTime 085 I2 - -
|
|
#legNumber 087 I1 - -
|
|
#oceanAtmosphereCoupling 088 I1 - -
|
|
#spareSetToZero3 089 PAD n/a 12
|
|
#endif3 - ENDIF if3
|
|
if(localFlag == 3)
|
|
{
|
|
unsigned[2] systemNumber = 65535 : dump,can_be_missing ;
|
|
unsigned[2] methodNumber = 65535 : dump,can_be_missing ;
|
|
unsigned[4] referenceDate : dump ;
|
|
unsigned[4] climateDateFrom : dump ;
|
|
unsigned[4] climateDateTo : dump ;
|
|
unsigned[4] legBaseDate : dump;
|
|
alias baseDateOfThisLeg = legBaseDate;
|
|
unsigned[2] legBaseTime : dump;
|
|
alias baseTimeOfThisLeg = legBaseTime;
|
|
unsigned[1] legNumber : dump;
|
|
unsigned[1] oceanAtmosphereCoupling : dump;
|
|
pad padding_loc13_4(12);
|
|
alias system = systemNumber;
|
|
alias method = methodNumber;
|
|
alias refdate = referenceDate;
|
|
|
|
alias mars._leg_number = legNumber;
|
|
}
|
|
|
|
#if4 - IF_EQ 4 flag
|
|
#systemNumber 065 I2 - -
|
|
#methodNumber 067 I2 - -
|
|
#referenceDate 069 I4 - -
|
|
#climateDateFrom 073 I4 - -
|
|
#climateDateTo 077 I4 - -
|
|
#legBaseDate 081 I4 - -
|
|
#legBaseTime 085 I2 - -
|
|
#legNumber 087 I1 - -
|
|
#oceanAtmosphereCoupling 088 I1 - -
|
|
#offsetToEndOf4DvarWindow 089 I2 - -
|
|
#lengthOf4DvarWindow 091 I2 - -
|
|
#spareSetToZero3 093 PAD n/a 8
|
|
#endif4 - ENDIF if4
|
|
if(localFlag == 4)
|
|
{
|
|
unsigned[2] systemNumber = 65535 : dump,can_be_missing ;
|
|
unsigned[2] methodNumber = 65535 : dump,can_be_missing ;
|
|
unsigned[4] referenceDate : dump ;
|
|
unsigned[4] climateDateFrom : dump ;
|
|
unsigned[4] climateDateTo : dump ;
|
|
unsigned[4] legBaseDate : dump;
|
|
alias baseDateOfThisLeg = legBaseDate;
|
|
unsigned[2] legBaseTime : dump;
|
|
alias baseTimeOfThisLeg = legBaseTime;
|
|
unsigned[1] legNumber : dump;
|
|
unsigned[1] oceanAtmosphereCoupling : dump;
|
|
|
|
# Hours
|
|
unsigned[2] offsetToEndOf4DvarWindow : dump;
|
|
alias anoffset=offsetToEndOf4DvarWindow;
|
|
unsigned[2] lengthOf4DvarWindow : dump;
|
|
|
|
alias system = systemNumber;
|
|
alias method = methodNumber;
|
|
alias refdate = referenceDate;
|
|
|
|
alias mars._leg_number = legNumber;
|
|
|
|
pad padding_loc13_5(8);
|
|
}
|
|
|
|
unsigned[4] scaledDirections[numberOfDirections] : dump;
|
|
unsigned[4] scaledFrequencies[numberOfFrequencies] : dump;
|
|
|
|
constant GRIBEXSection1Problem = 100 + 4 * numberOfDirections + 4 * numberOfFrequencies - section1Length ;
|
|
|
|
# END 1/local.98.13 ----------------------------------------------------------------------
|