diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def index b813fdae6..6137e54e6 100644 --- a/definitions/grib2/section.4.def +++ b/definitions/grib2/section.4.def @@ -51,6 +51,7 @@ concept datasetForLocal(unknown) { "unknown" = { dummy=1; } } +<<<<<<< HEAD # If the keys marsClass or productionStatusOfProcessedData change in memory, # need to trigger the change of conceptsDirs transient redo_concept_dirs = 0; @@ -59,6 +60,9 @@ when( changed(marsClass) || changed(productionStatusOfProcessedData) ) { } if (datasetForLocal isnot "unknown") { +======= +if (!(datasetForLocal is "unknown")) { +>>>>>>> feature/timeproc constant conceptsDir2 = "grib2/localConcepts/[datasetForLocal]": hidden; constant conceptsDir1 = "grib2": hidden; } @@ -129,6 +133,7 @@ else { } } + ## discipline = 10, parameterCategory = 0 are WMO wave parameters ! #if (discipline == 10 && parameterCategory == 0) { ## paramIds 140xxx are for wave parameters, exception for wave spectra templates @@ -140,4 +145,7 @@ if (paramId >= 140000 && paramId < 141000 && alias mars.paramtype = paramTypeWave; } +template timeproc "grib2/timeproc.def"; +alias mars.timeproc = timeproc ; + meta md5Section4 md5(offsetSection4,section4Length); diff --git a/definitions/grib2/timeproc.def b/definitions/grib2/timeproc.def new file mode 100644 index 000000000..f84460cbf --- /dev/null +++ b/definitions/grib2/timeproc.def @@ -0,0 +1,46 @@ +concept timeproc { + # either instantaneous data or processing is specified by mars stream + "point-in-time" = {stepType="instant";} + "point-in-time" = {stream="mnth"; numberOfTimeRange=1;} + "point-in-time" = {stream="mmsa"; numberOfTimeRange=1;} + "point-in-time" = {stream="msmm"; 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; indicatorOfUnitOfTimeRange=1;} + # 24 hourly time unit + "since-start" = {typeOfStatisticalProcessing=1; forecastTime=0; indicatorOfUnitOfTimeRange=2;} + ## 1h rolling accumulation + "1h" = {typeOfStatisticalProcessing=1; indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 1; class=d1;} + ## 24h rolling accumulation + "24h" = {typeOfStatisticalProcessing=1; indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 24; class=d1;} + "24h" = {typeOfStatisticalProcessing=1; indicatorOfUnitOfTimeRange=2; lengthOfTimeRange = 1; class=d1;} + ### end Accumulations ### + # + ### mean/min/max/stdev ### + "1h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 1;} + "3h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 3;} + "3h" = {indicatorOfUnitOfTimeRange=10; lengthOfTimeRange = 1;} + "6h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 6;} + "6h" = {indicatorOfUnitOfTimeRange=11; lengthOfTimeRange = 1;} + "12h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 12;} + "12h" = {indicatorOfUnitOfTimeRange=12; lengthOfTimeRange = 1;} + "18h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 18;} + "24h" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 24;} + "24h" = {indicatorOfUnitOfTimeRange=2; lengthOfTimeRange = 1;} + "7 days" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 168;} + # 28 days + "month" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 672;} + # 29 days + "month" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 696;} + # 30 days + "month" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 720;} + # 31 days + "month" = {indicatorOfUnitOfTimeRange=1; lengthOfTimeRange = 744;} + # time unit month + "month" = {indicatorOfUnitOfTimeRange=3; lengthOfTimeRange = 1;} + ### end mean/min/max/stdev ### +}