ECC-1354: GRIB2: Refactor and generalise the postProcessing concept

This commit is contained in:
Shahram Najm 2022-02-21 16:57:30 +00:00
commit f6b29e22c6
31 changed files with 77 additions and 80 deletions

View File

@ -40,28 +40,6 @@ unsigned[2] anoffsetFrequency = missing(): dump, can_be_missing;
# Boolean
transient lsdate_bug = 1: hidden; # See ECC-707
# Note: the key typeOfPostProcessing is in the PDTNs 70, 71, 72, 73, 93, 94, 95, or 96
concept efas_post_proc {
"unknown" = { typeOfPostProcessing = 0; }
"lisflood" = { typeOfPostProcessing = 1; }
"lisflood_eric" = { typeOfPostProcessing = 2; }
"lisflood_season" = { typeOfPostProcessing = 3; }
"lisflood_merged" = { typeOfPostProcessing = 4; }
"lisflood_global" = { typeOfPostProcessing = 5; }
"geff" = { typeOfPostProcessing = 10; }
"ericha" = { typeOfPostProcessing = 51; }
"htessel_lisflood" = { typeOfPostProcessing = 101; }
"htessel_eric" = { typeOfPostProcessing = 102; }
"htessel_camaflood" = { typeOfPostProcessing = 103; }
"epic" = { typeOfPostProcessing = 152; }
"jules_mrm" = { typeOfPostProcessing = 201; }
"htessel_mrm" = { typeOfPostProcessing = 202; }
"mhm_mrm" = { typeOfPostProcessing = 203; }
"pcrg_mrm" = { typeOfPostProcessing = 204; }
"meteogrid" = { typeOfPostProcessing = 205; }
"unknown" = { dummy = 1; }
} : hidden;
#Domain. Missing, local or global
#codetable[1] efasDomain "grib2/tables/local/ecmf/efas_domain.table" = 255 : dump, string_type;
#unsigned[1] efas_domain = missing() : can_be_missing, dump;

View File

@ -0,0 +1,17 @@
# For template.4.postproc.def
"lisflood" = { typeOfPostProcessing = 1; }
"lisflood_eric" = { typeOfPostProcessing = 2; }
"lisflood_season" = { typeOfPostProcessing = 3; }
"lisflood_merged" = { typeOfPostProcessing = 4; }
"lisflood_global" = { typeOfPostProcessing = 5; }
"geff" = { typeOfPostProcessing = 10; }
"ericha" = { typeOfPostProcessing = 51; }
"htessel_lisflood" = { typeOfPostProcessing = 101; }
"htessel_eric" = { typeOfPostProcessing = 102; }
"htessel_camaflood" = { typeOfPostProcessing = 103; }
"epic" = { typeOfPostProcessing = 152; }
"jules_mrm" = { typeOfPostProcessing = 201; }
"htessel_mrm" = { typeOfPostProcessing = 202; }
"mhm_mrm" = { typeOfPostProcessing = 203; }
"pcrg_mrm" = { typeOfPostProcessing = 204; }
"meteogrid" = { typeOfPostProcessing = 205; }

View File

@ -2,11 +2,13 @@
# The input process identifier shall have the value of the 'analysis or forecast process identifier' of the
# original GRIB message used as input of the post-processing
unsigned[2] inputProcessIdentifier : dump,edition_specific;
unsigned[2] inputProcessIdentifier : dump,edition_specific;
# The input originating centre shall have the value of the 'originating centre' of the original GRIB message
# used as input of the post-processing
codetable[2] inputOriginatingCentre 'common/c-11.table' : dump,edition_specific,string_type;
# This identifies which post-processing technique was used. This is defined by the originating centre
unsigned[1] typeOfPostProcessing : dump,edition_specific;
unsigned[1] typeOfPostProcessing : dump,edition_specific;
concept postProcessing(unknown,"postProcessingConcept.def",conceptsDir2,conceptsDir1):no_copy;

View File

@ -1,6 +1,6 @@
# EFAS control forecast
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -1,6 +1,6 @@
# EFAS forecast
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -10,6 +10,6 @@ alias mars.origin = inputOriginatingCentre;
alias mars.anoffset=anoffset;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -14,6 +14,6 @@ alias mars.origin = inputOriginatingCentre;
alias mars.anoffset=anoffset;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -3,6 +3,6 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -11,6 +11,6 @@ alias mars.origin = inputOriginatingCentre;
alias mars.anoffset=anoffset;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -1,8 +1,8 @@
# EFAS climatology control forecast
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -1,8 +1,8 @@
# EFAS climatology forecast
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -9,6 +9,6 @@ alias mars.hdate = dataDate;
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -4,8 +4,8 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -10,6 +10,6 @@ alias mars.hdate = dataDate;
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -1,8 +1,8 @@
# EFAS reforecast control
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -3,8 +3,8 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -3,6 +3,6 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -3,8 +3,8 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -2,6 +2,6 @@
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -2,6 +2,6 @@
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -10,6 +10,6 @@ alias mars.origin = inputOriginatingCentre;
alias mars.anoffset=anoffset;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -3,6 +3,6 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -10,6 +10,6 @@ alias mars.origin = inputOriginatingCentre;
alias mars.anoffset=anoffset;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -1,8 +1,8 @@
# GLOFAS climatology
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -1,8 +1,8 @@
# GLOFAS climatology
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -4,8 +4,8 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -9,6 +9,6 @@ alias mars.hdate = dataDate;
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -2,8 +2,8 @@
alias mars.origin = inputOriginatingCentre;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -4,8 +4,8 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;

View File

@ -3,6 +3,6 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;

View File

@ -4,8 +4,8 @@ alias mars.origin = inputOriginatingCentre;
alias mars.number = perturbationNumber;
# We need this because 'efas_post_proc' is defined later
meta efas_model sprintf("%s", efas_post_proc) : no_copy;
# We need this because 'postProcessing' is defined later
meta efas_model sprintf("%s", postProcessing) : no_copy;
alias mars.model = efas_model;
alias mars.date = dateOfModelVersion;