# Copyright 2005-2018 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.36 ----------------------------------------------------------------------
# LOCAL 98 36
#
# localDefinitionTemplate_036
# ---------------------------
#
# 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      -
#offsetToEndOf4DvarWindow        52      I2      44      -
#lengthOf4DvarWindow             54      I2      45      -
#spareSetToZero                  56      PAD     n/a     1
#
constant GRIBEXSection1Problem = 56 - section1Length ;

template mars_labeling "grib1/mars_labeling.def";

unsigned[1] perturbationNumber           : dump;
alias number = perturbationNumber;

unsigned[1] numberOfForecastsInEnsemble  : dump;
alias totalNumber=numberOfForecastsInEnsemble;

# Hours
unsigned[2] offsetToEndOf4DvarWindow : dump;
unsigned[2] lengthOf4DvarWindow : dump;
alias anoffset=offsetToEndOf4DvarWindow;

pad padding_local1_1(1);

#1->2
alias grib2LocalSectionPresent=present;
constant grib2LocalSectionNumber=1;

if (stepType is "instant" ) {
    if (type is "em" || type is "es" ) {
      alias productDefinitionTemplateNumber=epsStatisticsPoint;
    } else {
  		if (numberOfForecastsInEnsemble!=0) {
			if ((perturbationNumber/2)*2 == perturbationNumber) {
				alias typeOfEnsembleForecast=two;
			} else {
				alias typeOfEnsembleForecast=three;
			}
			alias productDefinitionTemplateNumber=epsPoint;
		} else {
			alias productDefinitionTemplateNumber=zero;
		}
	}
} else {
    if (type is "em" || type is "es" ) {
      alias productDefinitionTemplateNumber=epsStatisticsContinous;
    } else {
		if (numberOfForecastsInEnsemble!=0) {
			if ((perturbationNumber/2)*2 == perturbationNumber) {
				alias typeOfEnsembleForecast=two;
			} else {
				alias typeOfEnsembleForecast=three;
			}
			alias productDefinitionTemplateNumber=epsContinous;
		} else {
			alias productDefinitionTemplateNumber=eight;
		}
    }
}

# END   1/local.98.36 ----------------------------------------------------------------------

