# (C) Copyright 2005- ECMWF.

constant isGridded = true;

# Variable resolution latitude/longitude
unsigned[4] Ni : dump;
alias numberOfPointsAlongAParallel=Ni;
alias Nx = Ni;

unsigned[4] Nj : dump;
alias numberOfPointsAlongAMeridian=Nj;
alias Ny = Nj;
alias geography.Ni=Ni;
alias geography.Nj=Nj;

# Basic angle of the initial production domain
unsigned[4] basicAngleOfTheInitialProductionDomain = 0;
transient mBasicAngle=basicAngleOfTheInitialProductionDomain*oneMillionConstant;
transient angleMultiplier  = 1;
transient mAngleMultiplier = 1000000;
when (basicAngleOfTheInitialProductionDomain == 0) {
  set angleMultiplier  = 1;
  set mAngleMultiplier = 1000000;
} else {
  set angleMultiplier  = basicAngleOfTheInitialProductionDomain;
  set mAngleMultiplier = mBasicAngle;
}

# Subdivisions of basic angle used to define extreme longitudes and latitudes, and direction increments
unsigned[4] subdivisionsOfBasicAngle = missing() : can_be_missing;

transient angleDivisor = 1000000;
when (missing(subdivisionsOfBasicAngle) || subdivisionsOfBasicAngle == 0) {
  set angleDivisor  = 1000000;
} else {
  set angleDivisor  = subdivisionsOfBasicAngle;
}

include "grib2/templates/template.3.resolution_flags.def"

include "grib2/templates/template.3.scanning_mode.def"

longitudesList list(Ni) {
   unsigned[4] longitude;
}

latitudesList list(Nj) {
   signed[4] latitude;
}
