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; } } }