eccodes/definitions/grib1/mars_labeling.4.def

194 lines
5.9 KiB
Modula-2

constant P_INST = 0;
constant P_TAVG = 1;
constant P_TACC = 3;
constant TYPE_AN = 2;
constant TYPE_FC = 9;
constant TYPE_CF = 10;
constant TYPE_PF = 11;
constant TYPE_FF = 25;
constant TYPE_OF = 26;
constant TYPE_OR = 70;
constant TYPE_FX = 71;
constant coordAveraging0 = "inst";
constant coordAveraging1 = "tavg";
constant coordAveraging2 = 2;
constant coordAveraging3 = "tacc";
constant coordAveragingTims = "tims";
constant isectionNumber2 = "h";
constant isectionNumber3 = "m";
constant isectionNumber4 = "z";
constant tsectionNumber3 = "v";
constant tsectionNumber4 = "z";
constant tsectionNumber5 = "m";
constant GRIB_DEPTH = 2;
constant GRIB_LONGITUDE = 3;
constant GRIB_LATITUDE = 4;
meta verificationDate g1verificationdate(dataDate, dataTime, endStep) : read_only;
if(horizontalCoordinateDefinition == 0)
{
if(coordinate1Flag == 1 )
{
# range
if(averaging1Flag == P_TAVG ){
if(
marsType == TYPE_OR
|| marsType == TYPE_FC
|| marsType == TYPE_FF
|| marsType == TYPE_FX
)
{
meta marsRange evaluate((coordinate1End - coordinate1Start)/3600);
alias mars.range = marsRange;
}
}
# section
if(coordinate2Flag == 2) { alias mars.section = isectionNumber2;}
if(coordinate2Flag == 3) { alias mars.section = isectionNumber3;}
if(coordinate2Flag == 4) { alias mars.section = isectionNumber4;}
# levelist latitude longitude
if(coordinate2Flag == GRIB_DEPTH){
meta marsLevelist divdouble( coordinate2Start,1000 );
meta roundedMarsLevelist round( marsLevelist ,1000);
alias mars.levelist = roundedMarsLevelist ;
}
if(coordinate2Flag == GRIB_LONGITUDE){
meta marsLongitude divdouble( coordinate2Start,1000000 );
meta roundedMarsLongitude round( marsLongitude ,1000);
alias mars.longitude = roundedMarsLongitude ;
}
if(coordinate2Flag == GRIB_LATITUDE){
meta marsLatitude divdouble( coordinate2Start,1000000 );
meta roundedMarsLatitude round( marsLatitude ,1000);
alias mars.latitude = roundedMarsLatitude ;
}
#product
if(averaging1Flag == 0) { alias mars.product = coordAveraging0;}
if(averaging1Flag == 1) { alias mars.product = coordAveraging1;}
if(averaging1Flag == 2) { alias mars.product = coordAveraging2;}
if(averaging1Flag == 3) { alias mars.product = coordAveraging3;}
# date
if(
(marsType == TYPE_OR && averaging1Flag == P_TAVG)
|| (marsType == TYPE_OR && averaging1Flag == P_TACC)
|| (marsType == TYPE_FX && averaging1Flag == P_TAVG)
)
{
#remove mars.date;
alias mars.date = verificationDate;
#remove mars.step;
constant stepZero = 0;
alias mars.step = stepZero;
}
}
else
{
meta coordinateIndexNumber evaluate(coordinate4Flag+coordinate3Flag);
# levelist latitude longitude
if(coordinateIndexNumber== 3)
{
meta marsLatitude divdouble( coordinate1Start,1000000);
meta marsLongitude divdouble( coordinate2Start,1000000);
meta roundedMarsLatitude round( marsLatitude ,1000);
meta roundedMarsLongitude round( marsLongitude ,1000);
alias mars.latitude = roundedMarsLatitude ;
alias mars.longitude = roundedMarsLongitude ;
}
if(coordinateIndexNumber == 4)
{
meta marsLevelist divdouble( coordinate1Start,1000);
meta marsLatitude divdouble( coordinate2Start,1000000);
meta roundedMarsLevelist round( marsLevelist ,1000);
meta roundedMarsLatitude round( marsLatitude ,1000);
alias mars.levelist = roundedMarsLevelist ;
alias mars.latitude = roundedMarsLatitude ;
}
if(coordinateIndexNumber == 5)
{
meta marsLevelist divdouble( coordinate1Start,1000);
meta marsLongitude divdouble( coordinate2Start,1000000);
meta roundedMarsLevelist round( marsLevelist ,1000);
meta roundedMarsLongitude round( marsLongitude ,1000);
alias mars.levelist = roundedMarsLevelist ;
alias mars.longitude = roundedMarsLongitude ;
}
# section
if(coordinateIndexNumber == 3) { alias mars.section = tsectionNumber3;}
if(coordinateIndexNumber == 4) { alias mars.section = tsectionNumber4;}
if(coordinateIndexNumber == 5) { alias mars.section = tsectionNumber5;}
# range
if(averaging1Flag == P_INST){
if(
(marsType == TYPE_OR)
||(marsType == TYPE_FC)
||(marsType == TYPE_CF)
||(marsType == TYPE_PF)
||(marsType == TYPE_FF)
||(marsType == TYPE_OF)
)
{
if( coordinate4Flag == 1){
meta marsRange evaluate((coordinate4OfLastGridPoint - coordinate4OfFirstGridPoint)/3600);
}else{
meta marsRange evaluate((coordinate3OfLastGridPoint - coordinate3OfFirstGridPoint)/3600);
}
alias mars.range = marsRange;
}
}
# product
alias mars.product = coordAveragingTims;
# date
if(marsType == TYPE_OR && averaging1Flag == P_INST){
#remove mars.date;
alias mars.date = verificationDate;
#remove mars.step;
constant stepZero = 0;
alias mars.step =stepZero;
}
}
}