From ef8c6e6e5126bd9deb17527b2e8330d3829b8cd8 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 23 Jul 2014 11:55:18 +0100 Subject: [PATCH] GRIB-279 & GRIB-303: Local grib1 tables for DWD --- data/bitmap.diff | 4 +-- data/no_bitmap.diff | 4 +-- definitions/Makefile.am | 5 +++ definitions/grib1/local/edzw/3.table | 48 ++++++++++++++++++++++++++++ definitions/grib1/local/edzw/5.table | 20 ++++++++++++ definitions/grib1/section.1.def | 6 ++-- 6 files changed, 81 insertions(+), 6 deletions(-) create mode 100644 definitions/grib1/local/edzw/3.table create mode 100644 definitions/grib1/local/edzw/5.table diff --git a/data/bitmap.diff b/data/bitmap.diff index 18368347f..237da36d8 100644 --- a/data/bitmap.diff +++ b/data/bitmap.diff @@ -10,7 +10,7 @@ 7 gridDefinition = 255 8 section1Flags = 192 [11000000] 9 indicatorOfParameter = 130 [Temperature (K) (grib1/2.98.128.table) ] -10 indicatorOfTypeOfLevel = 109 [Hybrid level level number (2 octets) (grib1/3.table , grib1/local/ecmf/3.table) ] +10 indicatorOfTypeOfLevel = 109 [Hybrid level level number (2 octets) (grib1/local/ecmf/3.table , grib1/3.table) ] 11-12 level = 1 13 yearOfCentury = 8 14 month = 2 @@ -20,7 +20,7 @@ 18 unitOfTimeRange = 1 [Hour (grib1/4.table) ] 19 P1 = 0 20 P2 = 0 -21 timeRangeIndicator = 0 [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table , grib1/local/ecmf/5.table) ] +21 timeRangeIndicator = 0 [Forecast product valid at reference time + P1 (P1>0) (grib1/local/ecmf/5.table , grib1/5.table) ] 22-23 numberIncludedInAverage = 0 24 numberMissingFromAveragesOrAccumulations = 0 25 centuryOfReferenceTimeOfData = 21 diff --git a/data/no_bitmap.diff b/data/no_bitmap.diff index ce5ea026e..72c38b9e1 100644 --- a/data/no_bitmap.diff +++ b/data/no_bitmap.diff @@ -10,7 +10,7 @@ 7 gridDefinition = 255 8 section1Flags = 128 [10000000] 9 indicatorOfParameter = 130 [Temperature (K) (grib1/2.98.128.table) ] -10 indicatorOfTypeOfLevel = 109 [Hybrid level level number (2 octets) (grib1/3.table , grib1/local/ecmf/3.table) ] +10 indicatorOfTypeOfLevel = 109 [Hybrid level level number (2 octets) (grib1/local/ecmf/3.table , grib1/3.table) ] 11-12 level = 1 13 yearOfCentury = 8 14 month = 2 @@ -20,7 +20,7 @@ 18 unitOfTimeRange = 1 [Hour (grib1/4.table) ] 19 P1 = 0 20 P2 = 0 -21 timeRangeIndicator = 0 [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table , grib1/local/ecmf/5.table) ] +21 timeRangeIndicator = 0 [Forecast product valid at reference time + P1 (P1>0) (grib1/local/ecmf/5.table , grib1/5.table) ] 22-23 numberIncludedInAverage = 0 24 numberMissingFromAveragesOrAccumulations = 0 25 centuryOfReferenceTimeOfData = 21 diff --git a/definitions/Makefile.am b/definitions/Makefile.am index d1448478e..48cb2aa3e 100644 --- a/definitions/Makefile.am +++ b/definitions/Makefile.am @@ -769,6 +769,11 @@ dist_definitionsgrib1_local_ecmf_DATA = \ grib1/local/ecmf/3.table\ grib1/local/ecmf/5.table +definitionsgrib1_local_edzwdir = @GRIB_DEFINITION_PATH@/grib1/local/edzw +dist_definitionsgrib1_local_edzw_DATA = \ + grib1/local/edzw/3.table\ + grib1/local/edzw/5.table + definitionsgrib1_local_rjtddir = @GRIB_DEFINITION_PATH@/grib1/local/rjtd dist_definitionsgrib1_local_rjtd_DATA = \ grib1/local/rjtd/252.table\ diff --git a/definitions/grib1/local/edzw/3.table b/definitions/grib1/local/edzw/3.table new file mode 100644 index 000000000..ea3899278 --- /dev/null +++ b/definitions/grib1/local/edzw/3.table @@ -0,0 +1,48 @@ +# CODE TABLE 3 Fixed levels or layers for wich the data are included +0 0 Reserved +1 G Surface (of the Earth, which includes sea surface) +2 CB Cloud base level +3 CT Cloud top level +4 IZ 0 deg (C) isotherm level +5 AC Adiabatic condensation level (parcel lifted from surface) +6 WM Maximum wind speed level +7 TP Tropopause level +8 AU Nominal top of atmosphere +9 9 Sea bottom +# 10-19 Reserved +20 20 Isothermal level Temperature in 1/100 +# 21-99 Reserved +100 P Isobaric level pressure in hectoPascals (hPa) (2 octets) +101 PI Layer between two isobaric levels pressure of top (kPa) pressure of bottom (kPa) +102 MSL Mean sea level 0 0 +103 HMSL Fixed height level height above mean sea level (MSL) in meters +104 HMSLI Layer between two height levels above msl height of top (hm) above mean sea level height of bottom (hm) above mean sea level +105 HG Fixed height above ground height in meters (2 octets) +106 HGI Layer between two height levels above ground height of top (hm) above ground height of bottom (hm) above ground +107 SIG Sigma level sigma value in 1/10000 (2 octets) +108 SIGI Layer between two sigma levels sigma value at top in 1/100 sigma value at bottom in 1/100 +109 H Hybrid level level number (2 octets) +110 HI Layer between two hybrid levels level number of top level number of bottom +111 B Depth below land surface centimeters (2 octets) +112 S Layer between two depths below land surface depth of upper surface (cm) depth of lower surface (cm) +113 pt Isentropic (theta) level Potential Temp. degrees K (2 octets) +114 114 Layer between two isentropic levels 475K minus theta of top in Deg. K 475K minus theta of bottom in Deg. K +115 115 Level at specified pressure difference from ground to level hPa (2 octets) +116 116 Layer between two levels at specified pressure differences from ground to levels pressure difference from ground to top level hPa pressure difference from ground to bottom level hPa +117 pv Potential vorticity surface 10-9 K m2 kg-1 s-1 +121 121 Layer between two isobaric surfaces (high precision) 1100 hPa minus pressure of top, in hPa 1100 hPa minus pressure of bottom, in hPa +# 122-124 Reserved +125 125 Height level above ground (high precision) centimeters (2 octets) +# 126-127 Reserved +128 128 Layer between two sigma levels (high precision) 1.1 minus sigma of top, in 1/1000 of sigma 1.1 minus sigma of bottom, in 1/1000 of sigma +# 129-140 Reserved +141 141 Layer between two isobaric surfaces (mixed precision) pressure of top, in kPa 1100hPa minus pressure of bottom, in hPa +# 142-159 Reserved +160 dp Depth below sea level meters (2 octets) +# 161-199Reserved +200 R Entire atmosphere considered as a single layer 0 (2 octets) +201 201 Entire ocean considered as a single layer 0 (2 octets) +210 pl Isobaric surface (Pa) (ECMWF extension) +211 wv Ocean wave level (ECMWF extension) +212 oml Ocean mixed layer (ECMWF extension) +222 SYN Synthetic Satellite Images (DWD extension) diff --git a/definitions/grib1/local/edzw/5.table b/definitions/grib1/local/edzw/5.table new file mode 100644 index 000000000..c0ad65d6a --- /dev/null +++ b/definitions/grib1/local/edzw/5.table @@ -0,0 +1,20 @@ +# CODE TABLE 4 Time Range Indicator +0 0 Forecast product valid at reference time + P1 (P1>0) +1 1 Initialized analysis product for reference time (P1=0). +2 2 Product with a valid time ranging between reference time + P1 and reference time + P2 +3 3 Average (reference time + P1 to reference time + P2) +4 4 Accumulation (reference time + P1 to reference time + P2) product considered valid at reference time + P2 +5 5 Difference (reference time + P2 minus reference time + P1) product considered valid at reference time + P2 +10 10 P1 occupies octets 19 and 20; product valid at reference time + P1 +11 11 local use: Initialized forecast (P1 > 0) for IDFI +13 13 local use: Fields from analyses valid at reference time for P1 = 0 +14 14 local use: IFS forecast interpolated to GME triangular grid +51 51 Climatological Mean Value: +113 113 Average of N forecasts (or initialized analyses); each product has forecast period of P1 (P1=0 for initialized analyses); products have reference times at intervals of P2, beginning at the given reference time. +114 114 Accumulation of N forecasts (or initialized analyses); each product has forecast period of P1 (P1=0 for initialized analyses); products have reference times at intervals of P2, beginning at the given reference time. +115 115 Average of N forecasts, all with the same reference time; the first has a forecast period of P1, the remaining forecasts follow at intervals of P2. +116 116 Accumulation of N forecasts, all with the same reference time; the first has a forecast period of P1, the remaining follow at intervals of P2. +117 117 Average of N forecasts, the first has a period of P1, the subsequent ones have forecast periods reduced from the previous one by an interval of P2; the reference time for the first is given in octets 13- 17, the subsequent ones have reference times increased from the previous one by an interval of P2. Thus all the forecasts have the same valid time, given by the initial reference time + P1. +118 118 Temporal variance, or covariance, of N initialized analyses; each product has forecast period P1=0; products have reference times at intervals of P2, beginning at the given reference time. +123 123 Average of N uninitialized analyses, starting at the reference time, at intervals of P2. +124 124 Accumulation of N uninitialized analyses, starting at the reference time, at intervals of P2. diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 99b34b539..770c61400 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -55,7 +55,8 @@ codetable[1] indicatorOfParameter 'grib1/2.[centreForTable2:l].[table2Version:l] meta parameterName codetable_title(indicatorOfParameter); meta parameterUnits codetable_units(indicatorOfParameter); -codetable[1] indicatorOfTypeOfLevel ('3.table',tablesMasterDir,tablesLocalDir) : edition_specific,no_copy,dump,string_type; +# Local comes before Master to give precedence to the local, centre-specific table +codetable[1] indicatorOfTypeOfLevel ('3.table',tablesLocalDir,tablesMasterDir) : edition_specific,no_copy,dump,string_type; alias levelType=indicatorOfTypeOfLevel; transient pressureUnits="hPa"; @@ -128,7 +129,8 @@ unsigned[1] P1 : edition_specific; unsigned[1] P2 : edition_specific; -codetable[1] timeRangeIndicator ('5.table',tablesMasterDir,tablesLocalDir) = 1 : dump,edition_specific; +# Local comes before Master to give precedence to the local, centre-specific table +codetable[1] timeRangeIndicator ('5.table',tablesLocalDir,tablesMasterDir) = 1 : dump,edition_specific; unsigned[2] numberIncludedInAverage;