mirror of https://github.com/ecmwf/eccodes.git
MARS Testing: Combined changes for ECC-572/ECC-570/ECC-562/ECC-563
This commit is contained in:
parent
33640c6961
commit
fa5809652e
|
@ -1 +1 @@
|
|||
set( ${PROJECT_NAME}_VERSION_STR "2.6.0" )
|
||||
set( ${PROJECT_NAME}_VERSION_STR "2.6.1" )
|
||||
|
|
|
@ -9990,6 +9990,8 @@ dist_definitionsbufr_tables_0_wmo_latest_codetables_DATA = \
|
|||
bufr/tables/0/wmo/latest/codetables/2158.table\
|
||||
bufr/tables/0/wmo/latest/codetables/2159.table\
|
||||
bufr/tables/0/wmo/latest/codetables/2160.table\
|
||||
bufr/tables/0/wmo/latest/codetables/2161.table\
|
||||
bufr/tables/0/wmo/latest/codetables/2162.table\
|
||||
bufr/tables/0/wmo/latest/codetables/2163.table\
|
||||
bufr/tables/0/wmo/latest/codetables/2164.table\
|
||||
bufr/tables/0/wmo/latest/codetables/2165.table\
|
||||
|
@ -10110,6 +10112,7 @@ dist_definitionsbufr_tables_0_wmo_latest_codetables_DATA = \
|
|||
bufr/tables/0/wmo/latest/codetables/3021.table\
|
||||
bufr/tables/0/wmo/latest/codetables/3022.table\
|
||||
bufr/tables/0/wmo/latest/codetables/3023.table\
|
||||
bufr/tables/0/wmo/latest/codetables/3027.table\
|
||||
bufr/tables/0/wmo/latest/codetables/31021.table\
|
||||
bufr/tables/0/wmo/latest/codetables/31031.table\
|
||||
bufr/tables/0/wmo/latest/codetables/33002.table\
|
||||
|
@ -10143,6 +10146,7 @@ dist_definitionsbufr_tables_0_wmo_latest_codetables_DATA = \
|
|||
bufr/tables/0/wmo/latest/codetables/33049.table\
|
||||
bufr/tables/0/wmo/latest/codetables/33050.table\
|
||||
bufr/tables/0/wmo/latest/codetables/33060.table\
|
||||
bufr/tables/0/wmo/latest/codetables/33066.table\
|
||||
bufr/tables/0/wmo/latest/codetables/33070.table\
|
||||
bufr/tables/0/wmo/latest/codetables/33071.table\
|
||||
bufr/tables/0/wmo/latest/codetables/33072.table\
|
||||
|
@ -10213,6 +10217,8 @@ dist_definitionsbufr_tables_0_wmo_latest_codetables_DATA = \
|
|||
bufr/tables/0/wmo/latest/codetables/8034.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8035.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8036.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8037.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8038.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8039.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8040.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8041.table\
|
||||
|
@ -10241,7 +10247,9 @@ dist_definitionsbufr_tables_0_wmo_latest_codetables_DATA = \
|
|||
bufr/tables/0/wmo/latest/codetables/8086.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8087.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8088.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8091.table
|
||||
bufr/tables/0/wmo/latest/codetables/8091.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8092.table\
|
||||
bufr/tables/0/wmo/latest/codetables/8093.table
|
||||
|
||||
definitionsbufr_tables_3_local_1_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/3/local/1/98/0
|
||||
dist_definitionsbufr_tables_3_local_1_98_0_DATA = \
|
||||
|
@ -10660,6 +10668,7 @@ dist_definitionsgrib2_DATA = \
|
|||
grib2/grib2LocalSectionNumber.82.table\
|
||||
grib2/grib2LocalSectionNumber.85.table\
|
||||
grib2/grib2LocalSectionNumber.98.table\
|
||||
grib2/lcwfv_suiteName.table\
|
||||
grib2/local.82.0.def\
|
||||
grib2/local.82.82.def\
|
||||
grib2/local.82.83.def\
|
||||
|
@ -10687,6 +10696,8 @@ dist_definitionsgrib2_DATA = \
|
|||
grib2/local.98.36.def\
|
||||
grib2/local.98.38.def\
|
||||
grib2/local.98.39.def\
|
||||
grib2/local.98.41.def\
|
||||
grib2/local.98.42.def\
|
||||
grib2/local.98.5.def\
|
||||
grib2/local.98.500.def\
|
||||
grib2/local.98.7.def\
|
||||
|
@ -15564,6 +15575,11 @@ dist_definitionsmars_DATA = \
|
|||
mars/grib.edmo.cl.def\
|
||||
mars/grib.edmo.fc.def\
|
||||
mars/grib.edmo.ssd.def\
|
||||
mars/grib.efas.an.def\
|
||||
mars/grib.efas.cf.def\
|
||||
mars/grib.efas.fc.def\
|
||||
mars/grib.efas.fu.def\
|
||||
mars/grib.efas.pf.def\
|
||||
mars/grib.efhc.cf.def\
|
||||
mars/grib.efhc.icp.def\
|
||||
mars/grib.efhc.pf.def\
|
||||
|
|
|
@ -631,6 +631,28 @@
|
|||
lengthOfTimeRange = 24 ;
|
||||
is_uerra = 0 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'tp06' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
is_efas = 1 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
}
|
||||
#Total precipitation in the last 24 hours
|
||||
'tp24' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
is_efas = 1 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Fraction of snow cover
|
||||
'fscov' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -18,5 +18,7 @@
|
|||
36 36 MARS labelling for long window 4DVar system
|
||||
38 38 4D variational increments for long window 4DVar system
|
||||
39 39 4DVar model errors for long window 4Dvar system
|
||||
41 41 The European Flood Awareness System
|
||||
42 42 Lead Centre for Wave Forecast Verification
|
||||
192 192 Multiple ECMWF local definitions
|
||||
300 300 Multi-dimensional parameters
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
1 ecmf-wam-glob Global Wave Model run on HRES-WAM domain by ECMWF
|
||||
2 fnmo-wavewatch-glob Global Wave Watch model run by FNMOC
|
||||
3 edzw-wam-glob Global WAM model run by DWD
|
|
@ -0,0 +1,69 @@
|
|||
# Copyright 2005-2017 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.
|
||||
#
|
||||
|
||||
# Definition 41 - The European Flood Awareness System
|
||||
|
||||
# isFillup can be 0, 1 or missing
|
||||
# When it is 0, it means "Water Balance"
|
||||
unsigned[1] isFillup = missing() : dump, can_be_missing;
|
||||
alias local.isFillup = isFillup;
|
||||
|
||||
# Forecase Reference Date and Time
|
||||
unsigned[2] yearOfForecast = year : dump;
|
||||
unsigned[1] monthOfForecast = month : dump;
|
||||
unsigned[1] dayOfForecast = day : dump;
|
||||
unsigned[1] hourOfForecast = hour : dump;
|
||||
unsigned[1] minuteOfForecast = minute : dump;
|
||||
constant secondsOfForecast = 0;
|
||||
meta dateOfForecast g2date(yearOfForecast,monthOfForecast, dayOfForecast) : dump;
|
||||
meta timeOfForecast time (hourOfForecast,minuteOfForecast,secondsOfForecast) : dump;
|
||||
|
||||
# Calculate the Julian number for the forecast date and time.
|
||||
# This will be a floating point number with units of 'day'
|
||||
meta julianForecastDay julian_day(dateOfForecast,hourOfForecast,minuteOfForecast,secondsOfForecast): hidden;
|
||||
# Calculate the difference between the forecast date and reference date
|
||||
transient diffInDays = (julianForecastDay - julianDay) : hidden; # float
|
||||
|
||||
# Now convert this to hours. First convert to minutes then round up
|
||||
transient diffInHours = (diffInDays * 1440 + 0.5)/60 : hidden;
|
||||
meta anoffset round(diffInHours, 10): dump;
|
||||
alias local.anoffset = anoffset;
|
||||
|
||||
# Boolean
|
||||
transient is_efas = 1;
|
||||
|
||||
# Note: the key typeOfPostProcessing is in the PDTNs 70, 71, 72 and 73
|
||||
concept efas_post_proc {
|
||||
"unknown" = { typeOfPostProcessing=0 ; }
|
||||
"lisflood" = { typeOfPostProcessing=1 ; }
|
||||
"lisflood_eric" = { typeOfPostProcessing=2 ; }
|
||||
"lisflood_season" = { typeOfPostProcessing=3 ; }
|
||||
"lisflood_merged" = { typeOfPostProcessing=4 ; }
|
||||
"ericha" = { typeOfPostProcessing=51 ; }
|
||||
"htessel_lisflood" = { typeOfPostProcessing=101; }
|
||||
"htessel_eric" = { typeOfPostProcessing=102; }
|
||||
"htessel_camaflood" = { typeOfPostProcessing=103; }
|
||||
"epic" = { typeOfPostProcessing=152; }
|
||||
"unknown" = { dummy = 1; }
|
||||
} : hidden;
|
||||
|
||||
# Note: the key inputOriginatingCentre is in the PDTNs 70, 71, 72 and 73
|
||||
concept efas_forecast {
|
||||
"griddedobs" = { inputOriginatingCentre=98; marsType = "an"; }
|
||||
# "reanalysis" = { inputOriginatingCentre=98; marsType = "an"; }
|
||||
|
||||
"hres" = { inputOriginatingCentre=98; marsType = "fc"; } # deterministic
|
||||
"ens" = { inputOriginatingCentre=98; marsType = "pf"; } # ensemble
|
||||
"ens" = { inputOriginatingCentre=98; marsType = "cf"; } # ensemble
|
||||
|
||||
"global" = { inputOriginatingCentre=78; inputProcessIdentifier = 1; }
|
||||
"lam" = { inputOriginatingCentre=78; inputProcessIdentifier = 2; }
|
||||
|
||||
"unknown" = { dummy = 1; }
|
||||
} : hidden;
|
|
@ -0,0 +1,13 @@
|
|||
# Copyright 2005-2017 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.
|
||||
#
|
||||
|
||||
# Definition 42 - WMO Lead Centre for Wave Forecast Verification (LC-WFV)
|
||||
|
||||
codetable[2] lcwfvSuiteName "grib2/lcwfv_suiteName.table" : dump;
|
||||
alias mars.origin = lcwfvSuiteName;
|
|
@ -631,6 +631,28 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'Total precipitation in the last 6 hours' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
is_efas = 1 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
}
|
||||
#Total precipitation in the last 24 hours
|
||||
'Total precipitation in the last 24 hours' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
is_efas = 1 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Fraction of snow cover
|
||||
'Fraction of snow cover' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -631,6 +631,28 @@
|
|||
typeOfFirstFixedSurface = 1 ;
|
||||
is_uerra = 0 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'260267' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
is_efas = 1 ;
|
||||
}
|
||||
#Total precipitation in the last 24 hours
|
||||
'260268' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
is_efas = 1 ;
|
||||
}
|
||||
#Fraction of snow cover
|
||||
'260289' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -631,6 +631,28 @@
|
|||
lengthOfTimeRange = 24 ;
|
||||
is_uerra = 0 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'tp06' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
is_efas = 1 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
}
|
||||
#Total precipitation in the last 24 hours
|
||||
'tp24' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
is_efas = 1 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Fraction of snow cover
|
||||
'fscov' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -631,6 +631,28 @@
|
|||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
}
|
||||
#Total precipitation in the last 6 hours
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
is_efas = 1 ;
|
||||
lengthOfTimeRange = 6 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
}
|
||||
#Total precipitation in the last 24 hours
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 52 ;
|
||||
indicatorOfUnitForTimeRange = 1 ;
|
||||
typeOfStatisticalProcessing = 1 ;
|
||||
typeOfFirstFixedSurface = 1 ;
|
||||
is_efas = 1 ;
|
||||
lengthOfTimeRange = 24 ;
|
||||
}
|
||||
#Fraction of snow cover
|
||||
'Proportion' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -8,21 +8,5 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000);
|
|||
meta verificationMonth evaluate( (verificationDate/100)%100 );
|
||||
meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 );
|
||||
|
||||
# class e4
|
||||
# constant six = 6;
|
||||
|
||||
# There was some forecast data produced incorrectly for stream=edmm with class=em
|
||||
# An exception is required for backward compatibility for the wrongly encoded data
|
||||
# See GRIB-422, GRIB-497, GRIB-833
|
||||
#
|
||||
if (class is "em" || class is "e2" || class is "ea" || class is "ep" ||
|
||||
class is "rd" || class is "mc" || class is "et" || class is "l5")
|
||||
{
|
||||
alias mars.step = endStep;
|
||||
}
|
||||
else
|
||||
{
|
||||
alias mars.step = startStep;
|
||||
}
|
||||
|
||||
alias mars.step = endStep;
|
||||
alias mars.number=perturbationNumber;
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
alias mars.step = startStep;
|
||||
|
||||
# Water Balance
|
||||
|
||||
meta efas_suite_name sprintf("%s_%s_%s", inputOriginatingCentre, efas_forecast, efas_post_proc) : no_copy;
|
||||
alias mars.origin = efas_suite_name;
|
|
@ -0,0 +1,4 @@
|
|||
alias mars.step = startStep;
|
||||
|
||||
meta efas_suite_name sprintf("%s_%s_%s", inputOriginatingCentre, efas_forecast, efas_post_proc) : no_copy;
|
||||
alias mars.origin = efas_suite_name;
|
|
@ -0,0 +1,4 @@
|
|||
alias mars.step = startStep;
|
||||
|
||||
meta efas_suite_name sprintf("%s_%s_%s", inputOriginatingCentre, efas_forecast, efas_post_proc) : no_copy;
|
||||
alias mars.origin = efas_suite_name;
|
|
@ -0,0 +1,6 @@
|
|||
alias mars.step = startStep;
|
||||
|
||||
# Fillup
|
||||
|
||||
meta efas_suite_name sprintf("%s_%s", inputOriginatingCentre, efas_post_proc) : no_copy;
|
||||
alias mars.origin = efas_suite_name;
|
|
@ -0,0 +1,4 @@
|
|||
alias mars.step = startStep;
|
||||
|
||||
meta efas_suite_name sprintf("%s_%s_%s", inputOriginatingCentre, efas_forecast, efas_post_proc) : no_copy;
|
||||
alias mars.origin = efas_suite_name;
|
|
@ -8,17 +8,5 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000);
|
|||
meta verificationMonth evaluate( (verificationDate/100)%100 );
|
||||
meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 );
|
||||
|
||||
#
|
||||
# See GRIB-422, GRIB-497, GRIB-766, GRIB-833
|
||||
#
|
||||
if (class is "em" || class is "e2" || class is "ea" || class is "ep" ||
|
||||
class is "rd" || class is "mc" || class is "et" || class is "l5")
|
||||
{
|
||||
alias mars.step = endStep;
|
||||
}
|
||||
else
|
||||
{
|
||||
alias mars.step = startStep;
|
||||
}
|
||||
|
||||
alias mars.step = endStep;
|
||||
alias mars.number=perturbationNumber;
|
||||
|
|
|
@ -7,15 +7,5 @@ meta verificationYear evaluate(verificationDate/10000);
|
|||
meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000);
|
||||
meta verificationMonth evaluate( (verificationDate/100)%100 );
|
||||
meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 );
|
||||
#
|
||||
# See GRIB-497, GRIB-766, GRIB-833
|
||||
#
|
||||
if (class is "em" || class is "e2" || class is "ea" || class is "ep" ||
|
||||
class is "rd" || class is "mc" || class is "et" || class is "l5")
|
||||
{
|
||||
alias mars.step = endStep;
|
||||
}
|
||||
else
|
||||
{
|
||||
alias mars.step = startStep;
|
||||
}
|
||||
|
||||
alias mars.step = endStep;
|
||||
|
|
|
@ -8,15 +8,4 @@ meta monthlyVerificationYear evaluate(monthlyVerificationDate/10000);
|
|||
meta verificationMonth evaluate( (verificationDate/100)%100 );
|
||||
meta monthlyVerificationMonth evaluate( (monthlyVerificationDate/100)%100 );
|
||||
|
||||
#
|
||||
# See GRIB-497, GRIB-766, GRIB-833
|
||||
#
|
||||
if (class is "em" || class is "e2" || class is "ea" || class is "ep" ||
|
||||
class is "rd" || class is "mc" || class is "et" || class is "l5")
|
||||
{
|
||||
alias mars.step = endStep;
|
||||
}
|
||||
else
|
||||
{
|
||||
alias mars.step = startStep;
|
||||
}
|
||||
alias mars.step = endStep;
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
65 cv Calibration/Validation forecast
|
||||
70 or Ocean reanalysis
|
||||
71 fx Flux forcing
|
||||
72 fu EFAS Fillup
|
||||
80 fcmean Forecast mean
|
||||
81 fcmax Forecast maximum
|
||||
82 fcmin Forecast minimum
|
||||
|
|
|
@ -367,15 +367,16 @@ static int extra_set(grib_accessor* a,long val)
|
|||
typeOfProcessedData=5;
|
||||
typeOfGeneratingProcess=4;
|
||||
break;
|
||||
case 70: /* Ocean reanalysis (or) */
|
||||
case 71: /* Flux forcing (fx) */
|
||||
case 80: /* Forecast mean (fcmean) */
|
||||
case 81: /* Forecast maximum (fcmax) */
|
||||
case 82: /* Forecast minimum (fcmin) */
|
||||
case 83: /* Forecast standard deviation (fcstdev) */
|
||||
case 87: /* Simulated satellite data */
|
||||
case 88: /* Gridded satellite data */
|
||||
case 89: /* GFAS analysis */
|
||||
case 70: /* Ocean reanalysis (or) */
|
||||
case 71: /* Flux forcing (fx) */
|
||||
case 72: /* EFAS Fillup (fu) */
|
||||
case 80: /* Forecast mean (fcmean) */
|
||||
case 81: /* Forecast maximum (fcmax) */
|
||||
case 82: /* Forecast minimum (fcmin) */
|
||||
case 83: /* Forecast standard deviation (fcstdev) */
|
||||
case 87: /* Simulated satellite data */
|
||||
case 88: /* Gridded satellite data */
|
||||
case 89: /* GFAS analysis */
|
||||
typeOfProcessedData=255;
|
||||
typeOfGeneratingProcess=255;
|
||||
break;
|
||||
|
|
|
@ -226,6 +226,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
|
|||
case 1: /* MARS labelling */
|
||||
case 36: /* MARS labelling for long window 4Dvar system */
|
||||
case 40: /* MARS labeling with domain and model (for LAM) */
|
||||
case 42: /* LC-WFV: Wave forecast verification */
|
||||
if (isInstant) {
|
||||
/* type=em || type=es */
|
||||
if (type==17) {
|
||||
|
@ -256,6 +257,16 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 41: /* EFAS: uses post-processing templates */
|
||||
if (isInstant) {
|
||||
if (eps==1) productDefinitionTemplateNumberNew=71;
|
||||
else productDefinitionTemplateNumberNew=70;
|
||||
} else {
|
||||
/* non-instantaneous: accum etc */
|
||||
if (eps==1) productDefinitionTemplateNumberNew=73;
|
||||
else productDefinitionTemplateNumberNew=72;
|
||||
}
|
||||
break;
|
||||
|
||||
case 15: /* Seasonal forecast data */
|
||||
case 16: /* Seasonal forecast monthly mean data */
|
||||
|
|
|
@ -52,6 +52,7 @@ list( APPEND tests_no_data_reqd
|
|||
grib_2nd_order_numValues
|
||||
julian
|
||||
ecc-517
|
||||
grib_efas
|
||||
)
|
||||
# These tests do require data downloads
|
||||
list( APPEND tests_data_reqd
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
#!/bin/sh
|
||||
# Copyright 2005-2017 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.
|
||||
#
|
||||
|
||||
. ./include.sh
|
||||
|
||||
label="grib_efas"
|
||||
sample=temp.sample.$label.grib
|
||||
temp1=temp1.$label.grib
|
||||
temp2=temp2.$label.grib
|
||||
temp3=temp3.$label.grib
|
||||
|
||||
|
||||
# Create a starting GRIB with a basic local definition for MARS
|
||||
${tools_dir}/grib_set -s tablesVersion=19,setLocalDefinition=1,stream=efas $ECCODES_SAMPLES_PATH/GRIB2.tmpl $sample
|
||||
|
||||
# Check is_efas key
|
||||
grib_check_key_equals $sample is_efas 0
|
||||
|
||||
# Test a non-ensemble, instantaneous field
|
||||
${tools_dir}/grib_set -s productDefinitionTemplateNumber=0 $sample $temp1
|
||||
${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=41 $temp1 $temp2
|
||||
grib_check_key_equals $temp2 is_efas,productDefinitionTemplateNumber '1 70'
|
||||
grib_check_key_exists $temp2 isFillup,dateOfForecast,timeOfForecast,anoffset
|
||||
|
||||
# Test an ensemble, instantaneous field
|
||||
${tools_dir}/grib_set -s productDefinitionTemplateNumber=1,number=13 $sample $temp1
|
||||
${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=41 $temp1 $temp2
|
||||
grib_check_key_equals $temp2 is_efas,number,productDefinitionTemplateNumber '1 13 71'
|
||||
|
||||
# Test a non-ensemble, non-instantaneous field
|
||||
${tools_dir}/grib_set -s productDefinitionTemplateNumber=8,stepType=accum $sample $temp1
|
||||
${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=41 $temp1 $temp2
|
||||
grib_check_key_equals $temp2 is_efas,productDefinitionTemplateNumber,typeOfStatisticalProcessing '1 72 1'
|
||||
|
||||
# Test an ensemble, non-instantaneous field (plus mars.origin tests)
|
||||
${tools_dir}/grib_set -s productDefinitionTemplateNumber=11,stepType=accum $sample $temp1
|
||||
${tools_dir}/grib_set -s \
|
||||
setLocalDefinition=1,localDefinitionNumber=41,type=pf,inputOriginatingCentre=ecmf,typeOfPostProcessing=1 \
|
||||
$temp1 $temp2
|
||||
grib_check_key_equals $temp2 is_efas,productDefinitionTemplateNumber,typeOfStatisticalProcessing '1 73 1'
|
||||
#${tools_dir}/grib_ls -m $temp2
|
||||
grib_check_key_equals $temp2 mars.origin 'ecmf_ens_lisflood'
|
||||
${tools_dir}/grib_set -s type=fc $temp2 $temp3
|
||||
grib_check_key_equals $temp3 mars.origin 'ecmf_hres_lisflood'
|
||||
${tools_dir}/grib_set -s type=fu $temp2 $temp3
|
||||
grib_check_key_equals $temp3 mars.origin 'ecmf_lisflood'
|
||||
|
||||
|
||||
# Parameter tests
|
||||
${tools_dir}/grib_set -s paramId=260267 $temp2 $temp3
|
||||
grib_check_key_equals $temp3 paramId,is_efas,lengthOfTimeRange '260267 1 6'
|
||||
|
||||
${tools_dir}/grib_set -s paramId=260268 $temp2 $temp3
|
||||
grib_check_key_equals $temp3 paramId,is_efas,lengthOfTimeRange '260268 1 24'
|
||||
|
||||
# Use stepType
|
||||
${tools_dir}/grib_set -s localDefinitionNumber=41,stepType=accum $sample $temp1
|
||||
${tools_dir}/grib_set -s paramId=260267 $temp1 $temp2
|
||||
|
||||
# Test anoffset calculation
|
||||
${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=41,yearOfForecast=2007,monthOfForecast=3,dayOfForecast=24,hourOfForecast=13 \
|
||||
$sample $temp1
|
||||
grib_check_key_equals $temp1 anoffset 25
|
||||
|
||||
|
||||
# Clean up
|
||||
rm -f $sample $temp1 $temp2 $temp3
|
|
@ -106,4 +106,8 @@ grib_check_key_equals $temp.3 edition,productDefinitionTemplateNumber "2 5"
|
|||
grib_check_key_equals $temp.3 forecastProbabilityNumber,totalNumberOfForecastProbabilities "2 25"
|
||||
grib_check_key_equals $temp.3 probabilityType,scaledValueOfLowerLimit,scaledValueOfUpperLimit "2 54 56"
|
||||
|
||||
# Local Definition 42 for GRIB2 (LC-WFV)
|
||||
${tools_dir}/grib_set -s setLocalDefinition=1,localDefinitionNumber=42,lcwfvSuiteName=1 $sample_g2 $temp
|
||||
grib_check_key_equals $temp 'mars.origin:s' 'ecmf-wam-glob'
|
||||
|
||||
rm -f $temp $temp.1 $temp.2 $temp.3
|
||||
|
|
|
@ -15,7 +15,7 @@ PACKAGE_NAME='eccodes'
|
|||
# Package version
|
||||
ECCODES_MAJOR_VERSION=2
|
||||
ECCODES_MINOR_VERSION=6
|
||||
ECCODES_REVISION_VERSION=0
|
||||
ECCODES_REVISION_VERSION=1
|
||||
|
||||
ECCODES_CURRENT=1
|
||||
ECCODES_REVISION=0
|
||||
|
|
Loading…
Reference in New Issue