diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def index 14700b1d4..fb06fe331 100644 --- a/definitions/grib2/section.4.def +++ b/definitions/grib2/section.4.def @@ -127,9 +127,7 @@ if (paramId >= 140000 && paramId < 141000 && alias mars.paramtype = paramTypeWave; } -template timeproc "grib2/timeproc.def"; -if (defined(timeproc) && !(timeproc is "none")){ - alias mars.timeproc = timeproc ; -} +concept timeproc (unknown,"timeprocConcept.def",conceptsDir2,conceptsDir1) : read_only ; +alias mars.timeproc = timeproc ; meta md5Section4 md5(offsetSection4,section4Length); diff --git a/definitions/grib2/timeproc.def b/definitions/grib2/timeproc.def deleted file mode 100644 index 45ce572f0..000000000 --- a/definitions/grib2/timeproc.def +++ /dev/null @@ -1,91 +0,0 @@ -concept timeproc { - # either instantaneous data or processing is specified by mars stream -# "point-in-time" = {stepType="instant";} - "none" = {stepType="instant";} - "none" = {stream="swmm"; numberOfTimeRange=1;} - "none" = {stream="mnth"; numberOfTimeRange=1;} - "none" = {stream="mmsa"; numberOfTimeRange=1;} - "none" = {stream="msmm"; numberOfTimeRange=1;} -# "point-in-time" = {productDefinitionTemplateNumber=8; lengthOfTimeRange=0;} -# "point-in-time" = {productDefinitionTemplateNumber=11; lengthOfTimeRange=0;} -# "point-in-time" = {typeOfStatisticalProcessing=10; lengthOfTimeRange=0;} - "none" = {productDefinitionTemplateNumber=8; lengthOfTimeRange=0;} - "none" = {productDefinitionTemplateNumber=11; lengthOfTimeRange=0;} - "none" = {typeOfStatisticalProcessing=10; lengthOfTimeRange=0;} - # special rules for weekly extended-range (sub-seasonal) products - "none" = {marsStream="eefo"; type="fcmax"; numberOfTimeRange=1;} - "none" = {marsStream="eefo"; type="fcmin"; numberOfTimeRange=1;} - "none" = {marsStream="eefo"; type="fcmean"; numberOfTimeRange=1;} - "none" = {marsStream="eefo"; type="fcstdev"; numberOfTimeRange=1;} - "none" = {marsStream="eefo"; type="taem"; numberOfTimeRange=1;} - "none" = {marsStream="eefo"; type="taes"; numberOfTimeRange=1;} - "none" = {marsStream="eehs"; type="fcmax"; numberOfTimeRange=1;} - "none" = {marsStream="eehs"; type="fcmin"; numberOfTimeRange=1;} - "none" = {marsStream="eehs"; type="fcmean"; numberOfTimeRange=1;} - "none" = {marsStream="eehs"; type="fcstdev"; numberOfTimeRange=1;} - "none" = {marsStream="eehs"; type="taem"; numberOfTimeRange=1;} - "none" = {marsStream="eehs"; type="taes"; numberOfTimeRange=1;} - "none" = {marsStream="efhs"; type="fcmax"; numberOfTimeRange=1;} - "none" = {marsStream="efhs"; type="fcmin"; numberOfTimeRange=1;} - "none" = {marsStream="efhs"; type="fcmean"; numberOfTimeRange=1;} - "none" = {marsStream="efhs"; type="fcstdev"; numberOfTimeRange=1;} - "none" = {marsStream="efhs"; type="taem"; numberOfTimeRange=1;} - "none" = {marsStream="efhs"; type="taes"; numberOfTimeRange=1;} - # - ### Accumulations ### - # we need to do this dataset dependent, in some datasets we might have - # hourly rolling accumulations and we don't want to have the first in a different bucket - ## since start accumulation must have forecastTime=0 - # hourly - "since-start" = {typeOfStatisticalProcessing=1; forecastTime=0; indicatorOfUnitForTimeRange=1;} - # type an accumulation can have lengthOfTimeRange=0, they should be none - "none" = {typeOfStatisticalProcessing=1; forecastTime=0; marsType="an"; lengthOfTimeRange=0;} - # 24 hourly time unit - "since-start" = {typeOfStatisticalProcessing=1; forecastTime=0; indicatorOfUnitForTimeRange=2;} - # 24 hourly time unit - "24h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 24; class="od"; stream="enfo"; type="ep";} - # special rule for accumulations in stream efhs, type cd - "24h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 24; class="od"; stream="efhs"; type="cd";} - "72h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 72; class="od"; stream="efhs"; type="cd";} - "120h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 120; class="od"; stream="efhs"; type="cd";} - "168h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 168; class="od"; stream="efhs"; type="cd";} - "240h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 240; class="od"; stream="efhs"; type="cd";} - "360h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 360; class="od"; stream="efhs"; type="cd";} - ## 1h rolling accumulation - "1h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 1; class="d1";} - ## 24h rolling accumulation - "24h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 24; class="d1";} - "24h" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=2; lengthOfTimeRange = 1; class="d1";} - ### end Accumulations ### - # - ### mean/min/max/stdev ### - "1h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 1;} - "3h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 3;} - "3h" = {indicatorOfUnitForTimeRange=10; lengthOfTimeRange = 1;} - "6h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 6;} - "6h" = {indicatorOfUnitForTimeRange=11; lengthOfTimeRange = 1;} - "12h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 12;} - "12h" = {indicatorOfUnitForTimeRange=12; lengthOfTimeRange = 1;} - "18h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 18;} - "24h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 24;} - "24h" = {indicatorOfUnitForTimeRange=2; lengthOfTimeRange = 1;} - "48h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 48;} - "72h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 72;} - "120h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 120;} - "240h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 240;} - "360h" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 360;} - "7 days" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 168;} - ## 7 days rolling accumulation - "7 days" = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 168; type="cd";} - # 28 days - "month" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 672;} - # 29 days - "month" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 696;} - # 30 days - "month" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 720;} - # 31 days - "month" = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 744;} - # time unit month - "month" = {indicatorOfUnitForTimeRange=3; lengthOfTimeRange = 1;} - ### end mean/min/max/stdev ### -} diff --git a/definitions/grib2/timeprocConcept.def b/definitions/grib2/timeprocConcept.def new file mode 100644 index 000000000..1399d0b20 --- /dev/null +++ b/definitions/grib2/timeprocConcept.def @@ -0,0 +1,77 @@ +# concept timeproc { + # either instantaneous data or processing is specified by mars stream + 'unknown' = {dummy=0;} + 'point-in-time' = {stepType='instant';} + 'point-in-time' = {stream='swmm'; numberOfTimeRange=1;} + 'point-in-time' = {stream='mnth'; numberOfTimeRange=1;} + 'point-in-time' = {stream='mmsa'; numberOfTimeRange=1;} + 'point-in-time' = {stream='msmm'; numberOfTimeRange=1;} + 'point-in-time' = {productDefinitionTemplateNumber=8; lengthOfTimeRange=0;} + 'point-in-time' = {productDefinitionTemplateNumber=11; lengthOfTimeRange=0;} + 'point-in-time' = {typeOfStatisticalProcessing=10; lengthOfTimeRange=0;} + # special rules for weekly extended-range (sub-seasonal) products + 'point-in-time' = {marsStream='eefo'; type='fcmax'; numberOfTimeRange=1;} + 'point-in-time' = {marsStream='eefo'; type='fcmin'; numberOfTimeRange=1;} + 'point-in-time' = {marsStream='eefo'; type='fcmean'; numberOfTimeRange=1;} + 'point-in-time' = {marsStream='eefo'; type='fcstdev'; numberOfTimeRange=1;} + 'point-in-time' = {marsStream='eefo'; type='taem'; numberOfTimeRange=1;} + 'point-in-time' = {marsStream='eefo'; type='taes'; numberOfTimeRange=1;} + # + ### Accumulations ### + # we need to do this dataset dependent, in some datasets we might have + # hourly rolling accumulations and we don't want to have the first in a different bucket + ## since start accumulation must have forecastTime=0 + # hourly + 'since-start' = {typeOfStatisticalProcessing=1; forecastTime=0; indicatorOfUnitForTimeRange=1;} + # minutes + 'since-start' = {typeOfStatisticalProcessing=1; forecastTime=0; indicatorOfUnitForTimeRange=0;} + # 24 hourly time unit + 'since-start' = {typeOfStatisticalProcessing=1; forecastTime=0; indicatorOfUnitForTimeRange=2;} + # 24 hourly time unit + '24h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 24; class='od'; stream='enfo'; type='ep';} + # special rule for accumulations in stream efhs, type cd + '24h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 24; class='od'; stream='efhs'; type='cd';} + '72h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 72; class='od'; stream='efhs'; type='cd';} + '120h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 120; class='od'; stream='efhs'; type='cd';} + '168h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 168; class='od'; stream='efhs'; type='cd';} + '240h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 240; class='od'; stream='efhs'; type='cd';} + '360h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 360; class='od'; stream='efhs'; type='cd';} + ## 1h rolling accumulation + '1h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 1; class='d1';} + ## 24h rolling accumulation + '24h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 24; class='d1';} + '24h' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=2; lengthOfTimeRange = 1; class='d1';} + ### end Accumulations ### + # + ### mean/min/max/stdev ### + '30m' = {indicatorOfUnitForTimeRange=0; lengthOfTimeRange = 30;} + '1h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 1;} + '3h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 3;} + '3h' = {indicatorOfUnitForTimeRange=10; lengthOfTimeRange = 1;} + '6h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 6;} + '6h' = {indicatorOfUnitForTimeRange=11; lengthOfTimeRange = 1;} + '12h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 12;} + '12h' = {indicatorOfUnitForTimeRange=12; lengthOfTimeRange = 1;} + '18h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 18;} + '24h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 24;} + '24h' = {indicatorOfUnitForTimeRange=2; lengthOfTimeRange = 1;} + '48h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 48;} + '72h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 72;} + '120h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 120;} + '240h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 240;} + '360h' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 360;} + '7 days' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 168;} + ## 7 days rolling accumulation + '7 days' = {typeOfStatisticalProcessing=1; indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 168; type='cd';} + # 28 days + 'month' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 672;} + # 29 days + 'month' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 696;} + # 30 days + 'month' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 720;} + # 31 days + 'month' = {indicatorOfUnitForTimeRange=1; lengthOfTimeRange = 744;} + # time unit month + 'month' = {indicatorOfUnitForTimeRange=3; lengthOfTimeRange = 1;} + ### end mean/min/max/stdev ### +#}