diff --git a/definitions/grib2/template.4.horizontal.def b/definitions/grib2/template.4.horizontal.def index 4702e0319..1ece521da 100644 --- a/definitions/grib2/template.4.horizontal.def +++ b/definitions/grib2/template.4.horizontal.def @@ -64,6 +64,11 @@ if (extraDim) { alias mars.levelist = dimension; alias mars.levtype = dimensionType; } else { + # ECC-1333: levtype should be read-only in GRIB2 + concept mars.levtype(unknown,"marsLevtypeConcept.def",conceptsDir2,conceptsDir1):no_copy, read_only; + # GRIB-372: levelist alias does not pertain to surface parameters + transient tempLevtype = levtype; # Faster to copy the concept so we evaluate it once + # See GRIB-74 why we store the pressureUnits in a transient transient tempPressureUnits=pressureUnits; # Same as typeOfLevel != "surface" but much quicker to evaluate @@ -73,16 +78,11 @@ if (extraDim) { meta marsLevel scale(level,one,hundred) : read_only; alias mars.levelist=marsLevel; } else { + if (tempLevtype isnot "sfc" && tempLevtype isnot "o2d") { alias mars.levelist = level; + } } } - # ECC-1333: levtype should be read-only in GRIB2 - concept mars.levtype(unknown,"marsLevtypeConcept.def",conceptsDir2,conceptsDir1):no_copy, read_only; - # GRIB-372: levelist alias does not pertain to surface parameters - transient tempLevtype = levtype; # Faster to copy the concept so we evaluate it once - if (tempLevtype is "sfc" || tempLevtype is "o2d") { - unalias mars.levelist; - } } # See ECC-854, ECC-1435, ECC-1451, ECC-1462