mirror of https://github.com/ecmwf/eccodes.git
Merge develop
This commit is contained in:
commit
45fab8f12a
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
20.000 24.000 5
|
20.000 24.000 5
|
||||||
20.000 23.000 4
|
20.000 23.000 4
|
||||||
20.000 22.000 3
|
20.000 22.000 3
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
20.000 24.000 5
|
20.000 24.000 5
|
||||||
20.000 23.000 4
|
20.000 23.000 4
|
||||||
20.000 22.000 3
|
20.000 22.000 3
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
20.000 27.000 8
|
20.000 27.000 8
|
||||||
20.000 26.000 7
|
20.000 26.000 7
|
||||||
20.000 25.000 6
|
20.000 25.000 6
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
20.000 27.000 8
|
20.000 27.000 8
|
||||||
20.000 26.000 7
|
20.000 26.000 7
|
||||||
20.000 25.000 6
|
20.000 25.000 6
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
59.143 131.824 5
|
59.143 131.824 5
|
||||||
59.882 132.969 4
|
59.882 132.969 4
|
||||||
60.606 134.175 3
|
60.606 134.175 3
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
59.143 131.824 5
|
59.143 131.824 5
|
||||||
59.882 132.969 4
|
59.882 132.969 4
|
||||||
60.606 134.175 3
|
60.606 134.175 3
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
56.853 128.720 8
|
56.853 128.720 8
|
||||||
57.628 129.702 7
|
57.628 129.702 7
|
||||||
58.392 130.736 6
|
58.392 130.736 6
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
56.853 128.720 8
|
56.853 128.720 8
|
||||||
57.628 129.702 7
|
57.628 129.702 7
|
||||||
58.392 130.736 6
|
58.392 130.736 6
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
17.000 20.000 16
|
17.000 20.000 16
|
||||||
17.000 21.000 17
|
17.000 21.000 17
|
||||||
17.000 22.000 18
|
17.000 22.000 18
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
14.000 20.000 31
|
14.000 20.000 31
|
||||||
14.000 21.000 32
|
14.000 21.000 32
|
||||||
14.000 22.000 33
|
14.000 22.000 33
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
17.000 20.000 25
|
17.000 20.000 25
|
||||||
17.000 21.000 26
|
17.000 21.000 26
|
||||||
17.000 22.000 27
|
17.000 22.000 27
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
14.000 20.000 49
|
14.000 20.000 49
|
||||||
14.000 21.000 50
|
14.000 21.000 50
|
||||||
14.000 22.000 51
|
14.000 22.000 51
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
63.979 131.793 16
|
63.979 131.793 16
|
||||||
63.226 130.468 17
|
63.226 130.468 17
|
||||||
62.458 129.219 18
|
62.458 129.219 18
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
65.752 126.092 31
|
65.752 126.092 31
|
||||||
64.938 124.828 32
|
64.938 124.828 32
|
||||||
64.111 123.647 33
|
64.111 123.647 33
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
63.979 131.793 25
|
63.979 131.793 25
|
||||||
63.226 130.468 26
|
63.226 130.468 26
|
||||||
62.458 129.219 27
|
62.458 129.219 27
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Latitude, Longitude, Value
|
Latitude Longitude Value
|
||||||
65.752 126.092 49
|
65.752 126.092 49
|
||||||
64.938 124.828 50
|
64.938 124.828 50
|
||||||
64.111 123.647 51
|
64.111 123.647 51
|
||||||
|
|
|
@ -75,7 +75,6 @@ tigge_ecmf_sfc_10v.grib
|
||||||
tigge_ecmf_sfc_2d.grib
|
tigge_ecmf_sfc_2d.grib
|
||||||
tigge_ecmf_sfc_2t.grib
|
tigge_ecmf_sfc_2t.grib
|
||||||
tigge_ecmf_sfc_cap.grib
|
tigge_ecmf_sfc_cap.grib
|
||||||
tigge_ecmf_sfc_cape.grib
|
|
||||||
tigge_ecmf_sfc_mn2t6.grib
|
tigge_ecmf_sfc_mn2t6.grib
|
||||||
tigge_ecmf_sfc_msl.grib
|
tigge_ecmf_sfc_msl.grib
|
||||||
tigge_ecmf_sfc_mx2t6.grib
|
tigge_ecmf_sfc_mx2t6.grib
|
||||||
|
@ -134,11 +133,8 @@ tigge_kwbc_pv_pt.grib
|
||||||
tigge_kwbc_pv_u.grib
|
tigge_kwbc_pv_u.grib
|
||||||
tigge_kwbc_pv_v.grib
|
tigge_kwbc_pv_v.grib
|
||||||
tigge_kwbc_sfc_10u.grib
|
tigge_kwbc_sfc_10u.grib
|
||||||
tigge_kwbc_sfc_10v.grib
|
|
||||||
tigge_kwbc_sfc_2d.grib
|
tigge_kwbc_sfc_2d.grib
|
||||||
tigge_kwbc_sfc_2t.grib
|
|
||||||
tigge_kwbc_sfc_cap.grib
|
tigge_kwbc_sfc_cap.grib
|
||||||
tigge_kwbc_sfc_cape.grib
|
|
||||||
tigge_kwbc_sfc_ci.grib
|
tigge_kwbc_sfc_ci.grib
|
||||||
tigge_kwbc_sfc_lsm.grib
|
tigge_kwbc_sfc_lsm.grib
|
||||||
tigge_kwbc_sfc_mn2t6.grib
|
tigge_kwbc_sfc_mn2t6.grib
|
||||||
|
@ -169,7 +165,6 @@ tigge_lfpw_sfc_10u.grib
|
||||||
tigge_lfpw_sfc_10v.grib
|
tigge_lfpw_sfc_10v.grib
|
||||||
tigge_lfpw_sfc_2d.grib
|
tigge_lfpw_sfc_2d.grib
|
||||||
tigge_lfpw_sfc_2t.grib
|
tigge_lfpw_sfc_2t.grib
|
||||||
tigge_lfpw_sfc_cap.grib
|
|
||||||
tigge_lfpw_sfc_cape.grib
|
tigge_lfpw_sfc_cape.grib
|
||||||
tigge_lfpw_sfc_mn2t6.grib
|
tigge_lfpw_sfc_mn2t6.grib
|
||||||
tigge_lfpw_sfc_msl.grib
|
tigge_lfpw_sfc_msl.grib
|
||||||
|
|
|
@ -14041,7 +14041,6 @@ dist_definitionsgrib2_DATA = \
|
||||||
grib2/template.7.6.def\
|
grib2/template.7.6.def\
|
||||||
grib2/template.7.61.def\
|
grib2/template.7.61.def\
|
||||||
grib2/template.7.second_order.def\
|
grib2/template.7.second_order.def\
|
||||||
grib2/template.second_order.def\
|
|
||||||
grib2/tiggeLocalVersion.table\
|
grib2/tiggeLocalVersion.table\
|
||||||
grib2/tigge_name.def\
|
grib2/tigge_name.def\
|
||||||
grib2/tigge_parameter.def\
|
grib2/tigge_parameter.def\
|
||||||
|
|
|
@ -0,0 +1,306 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
#
|
||||||
|
# (C) Copyright 2005- 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.
|
||||||
|
#
|
||||||
|
#######################################################################
|
||||||
|
# Script for GRIB2 parameter definitions
|
||||||
|
# Can either write the *.def files or push to the Parameter DB
|
||||||
|
#
|
||||||
|
# Reads an input TSV (tab-separated-value) file which should contain
|
||||||
|
# the following parameter keys as columns:
|
||||||
|
# paramId
|
||||||
|
# shortName
|
||||||
|
# name
|
||||||
|
# units
|
||||||
|
# discipline
|
||||||
|
# parameterCategory
|
||||||
|
# parameterNumber
|
||||||
|
# # The following are optional keys
|
||||||
|
# typeOfFirstFixedSurface
|
||||||
|
# scaleFactorOfFirstFixedSurface
|
||||||
|
# scaledValueOfFirstFixedSurface
|
||||||
|
# typeOfSecondFixedSurface
|
||||||
|
# scaleFactorOfSecondFixedSurface
|
||||||
|
# scaledValueOfSecondFixedSurface
|
||||||
|
# typeOfStatisticalProcessing
|
||||||
|
# aerosolType
|
||||||
|
# constituentType
|
||||||
|
# typeOfGeneratingProcess
|
||||||
|
# localTablesVersion
|
||||||
|
# typeOfWavelengthInterval
|
||||||
|
# scaleFactorOfFirstWavelength
|
||||||
|
# scaledValueOfFirstWavelength
|
||||||
|
# scaleFactorOfSecondWavelength
|
||||||
|
# scaledValueOfSecondWavelength
|
||||||
|
# sourceSinkChemicalPhysicalProcess
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#######################################################################
|
||||||
|
$|=1;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use DBI;
|
||||||
|
use Time::localtime;
|
||||||
|
|
||||||
|
$ARGV[0] or die "USAGE: $0 input.tsv\n";
|
||||||
|
|
||||||
|
my $WRITE_TO_FILES = 0;
|
||||||
|
my $WRITE_TO_PARAMDB = 0;
|
||||||
|
|
||||||
|
my ($paramId, $shortName, $name, $units, $cfVarName);
|
||||||
|
my ($discipline, $pcategory, $pnumber, $type1, $type2, $scaledValue1, $scaleFactor1, $scaledValue2, $scaleFactor2);
|
||||||
|
my ($stat, $aero, $constit);
|
||||||
|
my ($typeGen, $localTV, $typeOfWLInt, $scaleFactorWL1, $scaledValueWL1, $scaleFactorWL2, $scaledValueWL2, $sourceSink);
|
||||||
|
|
||||||
|
my %key_to_attrib_map = (
|
||||||
|
'discipline' => 4,
|
||||||
|
'parameterCategory' => 8,
|
||||||
|
'parameterNumber' => 5,
|
||||||
|
'localTablesVersion' => 16,
|
||||||
|
'typeOfFirstFixedSurface' => 6,
|
||||||
|
'scaleFactorOfFirstFixedSurface' => 7,
|
||||||
|
'scaledValueOfFirstFixedSurface' => 9,
|
||||||
|
'typeOfStatisticalProcessing' => 11,
|
||||||
|
'typeOfSecondFixedSurface' => 13,
|
||||||
|
'scaledValueOfSecondFixedSurface' => 14,
|
||||||
|
'scaleFactorOfSecondFixedSurface' => 15,
|
||||||
|
'typeOfGeneratingProcess' => 28,
|
||||||
|
'constituentType' => 40,
|
||||||
|
'aerosolType' => 46
|
||||||
|
);
|
||||||
|
my $db = "param";
|
||||||
|
my $host = $ENV{'DB_HOST'} || 'unknown';
|
||||||
|
my $user = $ENV{'DB_USER'} || 'unknown';
|
||||||
|
my $pass = $ENV{'DB_PASS'} || 'unknown';
|
||||||
|
my $dbh = 0;
|
||||||
|
my $centre = -3; # WMO table ID
|
||||||
|
my $edition = 2; # GRIB edition 2
|
||||||
|
my $contactId; # JIRA issue ID
|
||||||
|
|
||||||
|
my $PARAMID_FILENAME = "paramId.def";
|
||||||
|
my $SHORTNAME_FILENAME = "shortName.def";
|
||||||
|
my $NAME_FILENAME = "name.def";
|
||||||
|
my $UNITS_FILENAME = "units.def";
|
||||||
|
my $CFVARNAME_FILENAME = "cfVarName.def";
|
||||||
|
|
||||||
|
my $tm = localtime;
|
||||||
|
my $today_date = sprintf("%04d-%02d-%02d", $tm->year+1900, ($tm->mon)+1, $tm->mday);
|
||||||
|
|
||||||
|
if ($WRITE_TO_FILES) {
|
||||||
|
create_or_append(\*OUT_PARAMID, "$PARAMID_FILENAME");
|
||||||
|
create_or_append(\*OUT_SHORTNAME, "$SHORTNAME_FILENAME");
|
||||||
|
create_or_append(\*OUT_NAME, "$NAME_FILENAME");
|
||||||
|
create_or_append(\*OUT_UNITS, "$UNITS_FILENAME");
|
||||||
|
create_or_append(\*OUT_CFVARNAME, "$CFVARNAME_FILENAME");
|
||||||
|
}
|
||||||
|
if ($WRITE_TO_PARAMDB) {
|
||||||
|
$dbh = DBI->connect("dbi:mysql(RaiseError=>1):database=$db;host=$host",$user,$pass) or die $DBI::errstr;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $first = 1;
|
||||||
|
my $lcount = 0;
|
||||||
|
while (<>) {
|
||||||
|
chomp;
|
||||||
|
s/\r//g; # Remove DOS carriage returns
|
||||||
|
if ($first == 1) {
|
||||||
|
check_first_row_column_names($_);
|
||||||
|
$first = 0;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
$lcount++;
|
||||||
|
|
||||||
|
($paramId, $shortName, $name, $units,
|
||||||
|
$discipline, $pcategory, $pnumber, $type1, $type2,
|
||||||
|
$scaledValue1, $scaleFactor1, $scaledValue2, $scaleFactor2, $stat, $aero, $constit,
|
||||||
|
$typeGen, $localTV, $typeOfWLInt, $scaleFactorWL1, $scaledValueWL1, $scaleFactorWL2, $scaledValueWL2, $sourceSink
|
||||||
|
) = split(/\t/);
|
||||||
|
|
||||||
|
die "Error: paramID \"$paramId\" is not an integer (input row=$lcount)!\n" if (!is_integer($paramId));
|
||||||
|
die "Error: shortName \"$shortName\" has an invalid character (input row=$lcount)!\n" if ($shortName =~ /[ '"]/);
|
||||||
|
die "Error: name \"$name\" should have uppercase 1st letter (input row=$lcount)!\n" if ($name !~ /^[A-Z]/);
|
||||||
|
|
||||||
|
$units = "~" if ($units eq "");
|
||||||
|
$cfVarName = $shortName;
|
||||||
|
$cfVarName = '\\'.$shortName if ($shortName =~ /^[0-9]/);
|
||||||
|
$scaleFactorWL1 = undef if ($scaleFactorWL1 =~ /missing/);
|
||||||
|
$scaledValueWL1 = undef if ($scaledValueWL1 =~ /missing/);
|
||||||
|
$scaleFactorWL2 = undef if ($scaleFactorWL2 =~ /missing/);
|
||||||
|
$scaledValueWL2 = undef if ($scaledValueWL2 =~ /missing/);
|
||||||
|
|
||||||
|
if ($WRITE_TO_FILES) {
|
||||||
|
write_out_file(\*OUT_PARAMID, $name, $paramId);
|
||||||
|
write_out_file(\*OUT_SHORTNAME, $name, $shortName);
|
||||||
|
write_out_file(\*OUT_NAME, $name, $name);
|
||||||
|
write_out_file(\*OUT_UNITS, $name, $units);
|
||||||
|
write_out_file(\*OUT_CFVARNAME, $name, $cfVarName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($WRITE_TO_PARAMDB) {
|
||||||
|
my $units_code = get_db_units_code($units);
|
||||||
|
my $is_chem = "";
|
||||||
|
my $is_aero = "";
|
||||||
|
if ($aero ne "") {
|
||||||
|
$is_aero = "1";
|
||||||
|
$is_chem = "";
|
||||||
|
}
|
||||||
|
if ($constit ne "") {
|
||||||
|
$is_aero = "";
|
||||||
|
$is_chem = "1";
|
||||||
|
}
|
||||||
|
die "Error: Both aerosolType and constituentType cannot be set!" if ($constit ne "" && $aero ne "");
|
||||||
|
die "Error: No contact ID provided\n" if (!$contactId);
|
||||||
|
#print "Inserting paramId $paramId ...\n";
|
||||||
|
$dbh->do("insert into param(id,shortName,name,units_id,insert_date,update_date,contact) values (?,?,?,?,?,?,?)",undef,
|
||||||
|
$paramId, $shortName, $name , $units_code, $today_date, $today_date, $contactId);
|
||||||
|
|
||||||
|
# Table 'grib' columns: param_id edition centre attribute_id attribute_value param_version
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,4, $discipline,0);
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,8, $pcategory,0);
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,5, $pnumber,0);
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,6, $type1,0) if ($type1 ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,13,$type2,0) if ($type2 ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,9, $scaledValue1,0) if ($scaledValue1 ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,7, $scaleFactor1,0) if ($scaleFactor1 ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,14,$scaledValue2,0) if ($scaledValue2 ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,15,$scaleFactor2,0) if ($scaleFactor2 ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,11,$stat,0) if ($stat ne "");
|
||||||
|
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,46,$aero,0) if ($aero ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,40,$constit,0) if ($constit ne "");
|
||||||
|
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,53,$is_chem,0) if ($is_chem ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,54,$is_aero,0) if ($is_aero ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,28,$typeGen,0) if ($typeGen ne "");
|
||||||
|
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,16,$localTV,0) if ($localTV ne "");
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,57,$typeOfWLInt,0) if ($typeOfWLInt ne "");
|
||||||
|
|
||||||
|
if (! defined $scaleFactorWL1 || $scaleFactorWL1 ne "") {
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,58,$scaleFactorWL1,0);
|
||||||
|
}
|
||||||
|
if (! defined $scaledValueWL1 || $scaledValueWL1 ne "") {
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,59,$scaledValueWL1,0);
|
||||||
|
}
|
||||||
|
if (! defined $scaleFactorWL2 ||$scaleFactorWL2 ne "") {
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,60,$scaleFactorWL2,0);
|
||||||
|
}
|
||||||
|
if (! defined $scaledValueWL2 || $scaledValueWL2 ne "") {
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,61,$scaledValueWL2,0);
|
||||||
|
}
|
||||||
|
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,64,$sourceSink,0) if ($sourceSink ne "");
|
||||||
|
|
||||||
|
# format is only GRIB2 hence grib1 entry=0 and grib2=1
|
||||||
|
$dbh->do("insert into param_format(param_id,grib1,grib2) values (?,?,?)",undef,$paramId,0,1);
|
||||||
|
}
|
||||||
|
} # for each input line
|
||||||
|
|
||||||
|
if ($WRITE_TO_FILES) {
|
||||||
|
print "Wrote output files: $PARAMID_FILENAME $SHORTNAME_FILENAME $NAME_FILENAME $UNITS_FILENAME $CFVARNAME_FILENAME\n";
|
||||||
|
close(OUT_PARAMID) or die "$PARAMID_FILENAME: $!";
|
||||||
|
close(OUT_SHORTNAME) or die "$SHORTNAME_FILENAME: $!";
|
||||||
|
close(OUT_NAME) or die "$NAME_FILENAME: $!";
|
||||||
|
close(OUT_UNITS) or die "$UNITS_FILENAME: $!";
|
||||||
|
close(OUT_CFVARNAME) or die "$CFVARNAME_FILENAME: $!";
|
||||||
|
}
|
||||||
|
if ($WRITE_TO_PARAMDB) {
|
||||||
|
print "Wrote to Parameter Database. Number of rows processed = $lcount\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
sub get_db_units_code {
|
||||||
|
my $u = shift;
|
||||||
|
my $unit_id = $dbh->selectrow_array("select id from units where name = ?",undef,$u);
|
||||||
|
die "Error: Unit not found: '$u'\n" if (!$unit_id);
|
||||||
|
return $unit_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub write_out_file {
|
||||||
|
my $outfile = $_[0];
|
||||||
|
my $name = $_[1];
|
||||||
|
my $key = $_[2];
|
||||||
|
|
||||||
|
# Assuming every parameter definition has at least discipline, category and number
|
||||||
|
print $outfile "#$name\n";
|
||||||
|
print $outfile "'$key' = {\n";
|
||||||
|
print $outfile " discipline = $discipline ;\n";
|
||||||
|
print $outfile " parameterCategory = $pcategory ;\n";
|
||||||
|
print $outfile " parameterNumber = $pnumber ;\n";
|
||||||
|
|
||||||
|
# Optional keys
|
||||||
|
print $outfile " typeOfFirstFixedSurface = $type1 ;\n" if ($type1 ne "");
|
||||||
|
print $outfile " typeOfSecondFixedSurface = $type2 ;\n" if ($type2 ne "");
|
||||||
|
print $outfile " scaledValueOfFirstFixedSurface = $scaledValue1 ;\n" if ($scaledValue1 ne "");
|
||||||
|
print $outfile " scaleFactorOfFirstFixedSurface = $scaleFactor1 ;\n" if ($scaleFactor1 ne "");
|
||||||
|
print $outfile " scaledValueOfSecondFixedSurface = $scaledValue2 ;\n" if ($scaledValue2 ne "");
|
||||||
|
print $outfile " scaleFactorOfSecondFixedSurface = $scaleFactor2 ;\n" if ($scaleFactor2 ne "");
|
||||||
|
print $outfile " typeOfStatisticalProcessing = $stat ;\n" if ($stat ne "");
|
||||||
|
|
||||||
|
print $outfile " aerosolType = $aero ;\n" if ($aero ne "");
|
||||||
|
print $outfile " constituentType = $constit ;\n" if ($constit ne "");
|
||||||
|
print $outfile " is_aerosol = 1 ;\n" if ($aero ne "");
|
||||||
|
print $outfile " is_chemical = 1 ;\n" if ($constit ne "");
|
||||||
|
|
||||||
|
print $outfile " typeOfGeneratingProcess = $typeGen ;\n" if ($typeGen ne "");
|
||||||
|
print $outfile " localTablesVersion = $localTV ;\n" if ($localTV ne "");
|
||||||
|
|
||||||
|
print $outfile "}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub check_first_row_column_names {
|
||||||
|
my $line = shift; # This is the first row
|
||||||
|
my @keys = split(/\t/, $line);
|
||||||
|
die "Error: 1st row column titles wrong: Column 1 should be 'paramId'\n" if ($keys[0] ne "paramId");
|
||||||
|
die "Error: 1st row column titles wrong: Column 2 should be 'shortName'\n" if ($keys[1] ne "shortName");
|
||||||
|
die "Error: 1st row column titles wrong: Column 3 should be 'name'\n" if ($keys[2] ne "name");
|
||||||
|
die "Error: 1st row column titles wrong: Column 4 should be 'units'\n" if ($keys[3] ne "units");
|
||||||
|
|
||||||
|
die "Error: 1st row column titles wrong: Column 5 should be 'discipline'\n" if ($keys[4] ne "discipline");
|
||||||
|
die "Error: 1st row column titles wrong: Column 6 should be 'parameterCategory'\n" if ($keys[5] ne "parameterCategory");
|
||||||
|
die "Error: 1st row column titles wrong: Column 7 should be 'parameterNumber'\n" if ($keys[6] ne "parameterNumber");
|
||||||
|
|
||||||
|
die "Error: 1st row column titles wrong: Column 8 should be 'typeOfFirstFixedSurface'\n" if ($keys[7] ne "typeOfFirstFixedSurface");
|
||||||
|
die "Error: 1st row column titles wrong: Column 9 should be 'scaleFactorOfFirstFixedSurface'\n" if ($keys[8] ne "scaleFactorOfFirstFixedSurface");
|
||||||
|
die "Error: 1st row column titles wrong: Column 10 should be 'scaledValueOfFirstFixedSurface'\n" if ($keys[9] ne "scaledValueOfFirstFixedSurface");
|
||||||
|
|
||||||
|
die "Error: 1st row column titles wrong: Column 11 should be 'typeOfSecondFixedSurface'\n" if ($keys[10] ne "typeOfSecondFixedSurface");
|
||||||
|
die "Error: 1st row column titles wrong: Column 12 should be 'scaleFactorOfSecondFixedSurface'\n" if ($keys[11] ne "scaleFactorOfSecondFixedSurface");
|
||||||
|
die "Error: 1st row column titles wrong: Column 13 should be 'scaledValueOfSecondFixedSurface'\n" if ($keys[12] ne "scaledValueOfSecondFixedSurface");
|
||||||
|
die "Error: 1st row column titles wrong: Column 14 should be 'typeOfStatisticalProcessing'\n" if ($keys[13] ne "typeOfStatisticalProcessing");
|
||||||
|
|
||||||
|
die "Error: 1st row column titles wrong: Column 15 should be 'aerosolType'\n" if ($keys[14] ne "aerosolType");
|
||||||
|
die "Error: 1st row column titles wrong: Column 16 should be 'constituentType'\n" if ($keys[15] ne "constituentType");
|
||||||
|
|
||||||
|
die "Error: 1st row column titles wrong: Column 17 should be 'typeOfGeneratingProcess'\n" if ($keys[16] ne "typeOfGeneratingProcess");
|
||||||
|
die "Error: 1st row column titles wrong: Column 18 should be 'localTablesVersion'\n" if ($keys[17] ne "localTablesVersion");
|
||||||
|
|
||||||
|
die "Error: 1st row column titles wrong: Column 19 should be 'typeOfWavelengthInterval'\n" if ($keys[18] ne "typeOfWavelengthInterval");
|
||||||
|
die "Error: 1st row column titles wrong: Column 20 should be 'scaleFactorOfFirstWavelength'\n" if ($keys[19] ne "scaleFactorOfFirstWavelength");
|
||||||
|
die "Error: 1st row column titles wrong: Column 21 should be 'scaledValueOfFirstWavelength'\n" if ($keys[20] ne "scaledValueOfFirstWavelength");
|
||||||
|
die "Error: 1st row column titles wrong: Column 22 should be 'scaleFactorOfSecondWavelength'\n" if ($keys[21] ne "scaleFactorOfSecondWavelength");
|
||||||
|
|
||||||
|
die "Error: 1st row column titles wrong: Column 23 should be 'scaledValueOfSecondWavelength'\n" if ($keys[22] ne "scaledValueOfSecondWavelength");
|
||||||
|
die "Error: 1st row column titles wrong: Column 24 should be 'sourceSinkChemicalPhysicalProcess'\n" if ($keys[23] ne "sourceSinkChemicalPhysicalProcess");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub create_or_append {
|
||||||
|
my $outfile = $_[0];
|
||||||
|
my $fname = $_[1];
|
||||||
|
|
||||||
|
if (-f "$fname") {
|
||||||
|
open($outfile, ">>$fname") or die "Error: $fname: $!";
|
||||||
|
} else {
|
||||||
|
open($outfile, ">$fname") or die "Error: $fname: $!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub is_integer {
|
||||||
|
my $val = shift;
|
||||||
|
return ($val =~ /^\d+$/);
|
||||||
|
}
|
|
@ -18,8 +18,8 @@ alias rdb.localHour=localHour;
|
||||||
alias rdb.localMinute=localMinute;
|
alias rdb.localMinute=localMinute;
|
||||||
alias rdb.localSecond=localSecond;
|
alias rdb.localSecond=localSecond;
|
||||||
|
|
||||||
meta localDate sprintf("%.4d%.2d%.2d",localYear,localMonth,localDay) : no_copy,read_only;
|
meta localDate sprintf("%.4d%.2d%.2d",localYear,localMonth,localDay) : no_copy;
|
||||||
meta localTime sprintf("%.2d%.2d",localHour,localMinute) : no_copy,read_only;
|
meta localTime sprintf("%.2d%.2d",localHour,localMinute) : no_copy;
|
||||||
meta localDateTime julian_date(localYear,localMonth,localDay,localHour,localMinute,localSecond) : no_copy;
|
meta localDateTime julian_date(localYear,localMonth,localDay,localHour,localMinute,localSecond) : no_copy;
|
||||||
alias mars.date = localDate;
|
alias mars.date = localDate;
|
||||||
alias mars.time = localTime;
|
alias mars.time = localTime;
|
||||||
|
@ -41,8 +41,8 @@ meta rdbtimeSecond bits(rdbtime,17,6) : dump,long_type,no_copy;
|
||||||
meta rdbtimeYear rdbtime_guess_date(typicalYear,typicalMonth,typicalDay,rdbtimeDay,1);
|
meta rdbtimeYear rdbtime_guess_date(typicalYear,typicalMonth,typicalDay,rdbtimeDay,1);
|
||||||
meta rdbtimeMonth rdbtime_guess_date(typicalYear,typicalMonth,typicalDay,rdbtimeDay,2);
|
meta rdbtimeMonth rdbtime_guess_date(typicalYear,typicalMonth,typicalDay,rdbtimeDay,2);
|
||||||
|
|
||||||
meta ls.rdbtimeDate sprintf("%.4d%.2d%.2d",rdbtimeYear,rdbtimeMonth,rdbtimeDay) : no_copy,read_only;
|
meta ls.rdbtimeDate sprintf("%.4d%.2d%.2d",rdbtimeYear,rdbtimeMonth,rdbtimeDay) : no_copy;
|
||||||
meta ls.rdbtimeTime sprintf("%.2d%.2d%.2d",rdbtimeHour,rdbtimeMinute,rdbtimeSecond) :dump,no_copy,read_only;
|
meta ls.rdbtimeTime sprintf("%.2d%.2d%.2d",rdbtimeHour,rdbtimeMinute,rdbtimeSecond) :dump,no_copy;
|
||||||
|
|
||||||
meta rdbDateTime julian_date(rdbtimeYear,rdbtimeMonth,rdbtimeDay,rdbtimeHour,rdbtimeMinute,rdbtimeSecond) : no_copy;
|
meta rdbDateTime julian_date(rdbtimeYear,rdbtimeMonth,rdbtimeDay,rdbtimeHour,rdbtimeMinute,rdbtimeSecond) : no_copy;
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,8 @@ unsigned[1] typicalMinute : dump;
|
||||||
# unsigned[1] spare; # See ECC-978
|
# unsigned[1] spare; # See ECC-978
|
||||||
transient typicalSecond=0;
|
transient typicalSecond=0;
|
||||||
|
|
||||||
meta ls.typicalDate sprintf("%.4d%.2d%.2d",typicalYear,typicalMonth,typicalDay) : dump,no_copy,read_only;
|
meta ls.typicalDate sprintf("%.4d%.2d%.2d",typicalYear,typicalMonth,typicalDay) : dump,no_copy;
|
||||||
meta ls.typicalTime sprintf("%.2d%.2d%.2d",typicalHour,typicalMinute,typicalSecond) :dump,no_copy,read_only;
|
meta ls.typicalTime sprintf("%.2d%.2d%.2d",typicalHour,typicalMinute,typicalSecond) :dump,no_copy;
|
||||||
|
|
||||||
meta typicalDateTime julian_date(typicalYear,typicalMonth,typicalDay,typicalHour,typicalMinute,typicalSecond) ;
|
meta typicalDateTime julian_date(typicalYear,typicalMonth,typicalDay,typicalHour,typicalMinute,typicalSecond) ;
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,8 @@ unsigned[1] typicalHour : dump;
|
||||||
unsigned[1] typicalMinute : dump;
|
unsigned[1] typicalMinute : dump;
|
||||||
unsigned[1] typicalSecond : dump;
|
unsigned[1] typicalSecond : dump;
|
||||||
|
|
||||||
meta ls.typicalDate sprintf("%.4d%.2d%.2d",typicalYear2,typicalMonth,typicalDay) : dump,no_copy,read_only;
|
meta ls.typicalDate sprintf("%.4d%.2d%.2d",typicalYear2,typicalMonth,typicalDay) : dump,no_copy;
|
||||||
meta ls.typicalTime sprintf("%.2d%.2d%.2d",typicalHour,typicalMinute,typicalSecond) :dump,no_copy,read_only;
|
meta ls.typicalTime sprintf("%.2d%.2d%.2d",typicalHour,typicalMinute,typicalSecond) :dump,no_copy;
|
||||||
|
|
||||||
meta typicalDateTime julian_date(typicalYear2,typicalMonth,typicalDay,typicalHour,typicalMinute,typicalSecond) ;
|
meta typicalDateTime julian_date(typicalYear2,typicalMonth,typicalDay,typicalHour,typicalMinute,typicalSecond) ;
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,13 @@ while (<>) {
|
||||||
#No Title_en SubTitle_en CodeFlag Value MeaningParameterDescription_en Note_en UnitComments_en Status
|
#No Title_en SubTitle_en CodeFlag Value MeaningParameterDescription_en Note_en UnitComments_en Status
|
||||||
#my ($rowid, $title, $subtitle, $codeFlag, $value, $meaning, $note, $unit, $status) = split(/\t/);
|
#my ($rowid, $title, $subtitle, $codeFlag, $value, $meaning, $note, $unit, $status) = split(/\t/);
|
||||||
|
|
||||||
|
s/Hovmöller/Hovmoller/;
|
||||||
|
s/Carrée/Carree/;
|
||||||
|
s/μm/um/;
|
||||||
|
s/°C/degree C/;
|
||||||
|
s/f\(n\) = C2 × f\(n-1\)/f(n) = C2 * f(n-1)/;
|
||||||
|
s/\(see separate doc or pdf file\)/see separate doc or pdf file/;
|
||||||
|
|
||||||
my ($title, $subtitle, $codeFlag, $value, $meaning, $note, $unit, $status) = split(/\t/);
|
my ($title, $subtitle, $codeFlag, $value, $meaning, $note, $unit, $status) = split(/\t/);
|
||||||
|
|
||||||
if ($title =~ /Code table ([0-9.]+)/) {
|
if ($title =~ /Code table ([0-9.]+)/) {
|
||||||
|
@ -69,11 +76,13 @@ sub WriteFile {
|
||||||
print MYFILE "# $title\n";
|
print MYFILE "# $title\n";
|
||||||
}
|
}
|
||||||
my $unit_text = ($unit eq "" ? "" : "($unit)");
|
my $unit_text = ($unit eq "" ? "" : "($unit)");
|
||||||
|
$unit_text =~ s/\(\(Code /(Code /;
|
||||||
|
$unit_text =~ s/\)\)/)/;
|
||||||
if ($codeFlag =~ /\-/) {
|
if ($codeFlag =~ /\-/) {
|
||||||
print MYFILE "# $codeFlag $meaning $unit_text\n";
|
print MYFILE "# $codeFlag $meaning $unit_text\n";
|
||||||
} else {
|
} else {
|
||||||
my $codeFlag1 = $codeFlag;
|
my $codeFlag1 = $codeFlag; # A number
|
||||||
my $codeFlag2 = $codeFlag;
|
my $codeFlag2 = $codeFlag; # A number or string abbreviation
|
||||||
if ($filename eq "1.4.table") {
|
if ($filename eq "1.4.table") {
|
||||||
# Special case. Do not just put 2nd code, translate it to shortName for 'mars type'
|
# Special case. Do not just put 2nd code, translate it to shortName for 'mars type'
|
||||||
$codeFlag2 = TranslateCodes_Table_1_4($codeFlag);
|
$codeFlag2 = TranslateCodes_Table_1_4($codeFlag);
|
||||||
|
|
|
@ -1,37 +1,4 @@
|
||||||
# ECMWF concept type of level
|
# ECMWF concept type of level
|
||||||
'surface' = {indicatorOfTypeOfLevel=1;}
|
|
||||||
'cloudBase' = {indicatorOfTypeOfLevel=2;}
|
|
||||||
'cloudTop' = {indicatorOfTypeOfLevel=3;}
|
|
||||||
'isothermZero' = {indicatorOfTypeOfLevel=4;}
|
|
||||||
'adiabaticCondensation' = {indicatorOfTypeOfLevel=5;}
|
|
||||||
'maxWind' = {indicatorOfTypeOfLevel=6;}
|
|
||||||
'tropopause' = {indicatorOfTypeOfLevel=7;}
|
|
||||||
'nominalTop' = {indicatorOfTypeOfLevel=8;}
|
|
||||||
'seaBottom' = {indicatorOfTypeOfLevel=9;}
|
|
||||||
'isobaricInhPa' = {indicatorOfTypeOfLevel=100;}
|
|
||||||
'isobaricInPa' = {indicatorOfTypeOfLevel=210;}
|
|
||||||
'isobaricLayer' = {indicatorOfTypeOfLevel=101;}
|
|
||||||
'meanSea' = {indicatorOfTypeOfLevel=102;}
|
|
||||||
'isobaricLayerHighPrecision' = {indicatorOfTypeOfLevel=121;}
|
|
||||||
'isobaricLayerMixedPrecision' = {indicatorOfTypeOfLevel=141;}
|
|
||||||
'heightAboveSea' = {indicatorOfTypeOfLevel=103;}
|
|
||||||
'heightAboveSeaLayer' = {indicatorOfTypeOfLevel=104;}
|
|
||||||
'heightAboveGroundHighPrecision' = {indicatorOfTypeOfLevel=125;}
|
|
||||||
'heightAboveGround' = {indicatorOfTypeOfLevel=105;}
|
|
||||||
'heightAboveGroundLayer' = {indicatorOfTypeOfLevel=106;}
|
|
||||||
'sigma' = {indicatorOfTypeOfLevel=107;}
|
|
||||||
'sigmaLayer' = {indicatorOfTypeOfLevel=108;}
|
|
||||||
'sigmaLayerHighPrecision' = {indicatorOfTypeOfLevel=128;}
|
|
||||||
'hybrid' = {indicatorOfTypeOfLevel=109;}
|
|
||||||
'hybridLayer' = {indicatorOfTypeOfLevel=110;}
|
|
||||||
'depthBelowLand' = {indicatorOfTypeOfLevel=111;}
|
|
||||||
'depthBelowLandLayer' = {indicatorOfTypeOfLevel=112;}
|
|
||||||
'theta' = {indicatorOfTypeOfLevel=113;}
|
|
||||||
'thetaLayer' = {indicatorOfTypeOfLevel=114;}
|
|
||||||
'pressureFromGround' = {indicatorOfTypeOfLevel=115;}
|
|
||||||
'pressureFromGroundLayer' = {indicatorOfTypeOfLevel=116;}
|
|
||||||
'potentialVorticity' = {indicatorOfTypeOfLevel=117;}
|
|
||||||
'depthBelowSea' = {indicatorOfTypeOfLevel=160;}
|
|
||||||
'entireAtmosphere' = {indicatorOfTypeOfLevel=200;level=0;}
|
'entireAtmosphere' = {indicatorOfTypeOfLevel=200;level=0;}
|
||||||
'entireOcean' = {indicatorOfTypeOfLevel=201;level=0;}
|
'entireOcean' = {indicatorOfTypeOfLevel=201;level=0;}
|
||||||
'oceanWave' = {indicatorOfTypeOfLevel=211;}
|
'oceanWave' = {indicatorOfTypeOfLevel=211;}
|
||||||
|
|
|
@ -11,7 +11,6 @@ alias radiusInMetres=radius;
|
||||||
transient shapeOfTheEarth=0: hidden; #ECC-811
|
transient shapeOfTheEarth=0: hidden; #ECC-811
|
||||||
|
|
||||||
# NV -- number of vertical coordinate parameters
|
# NV -- number of vertical coordinate parameters
|
||||||
|
|
||||||
unsigned[1] numberOfVerticalCoordinateValues : dump ;
|
unsigned[1] numberOfVerticalCoordinateValues : dump ;
|
||||||
|
|
||||||
constant neitherPresent = 255;
|
constant neitherPresent = 255;
|
||||||
|
@ -33,12 +32,9 @@ meta gridDefinitionDescription codetable_title(dataRepresentationType);
|
||||||
# (according to data representation type - octet 6 above)
|
# (according to data representation type - octet 6 above)
|
||||||
alias isRotatedGrid=zero;
|
alias isRotatedGrid=zero;
|
||||||
|
|
||||||
if (dataRepresentationType < 192)
|
if (dataRepresentationType < 192) {
|
||||||
{
|
|
||||||
template dataRepresentation "grib1/grid_definition_[dataRepresentationType:l].def";
|
template dataRepresentation "grib1/grid_definition_[dataRepresentationType:l].def";
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
template dataRepresentation "grib1/grid_definition_[dataRepresentationType:l].[centre:l].def";
|
template dataRepresentation "grib1/grid_definition_[dataRepresentationType:l].[centre:l].def";
|
||||||
}
|
}
|
||||||
position endGridDefinition;
|
position endGridDefinition;
|
||||||
|
@ -46,15 +42,13 @@ position endGridDefinition;
|
||||||
position offsetBeforePV;
|
position offsetBeforePV;
|
||||||
transient PVPresent = ( NV > 0);
|
transient PVPresent = ( NV > 0);
|
||||||
|
|
||||||
if (pvlLocation != neitherPresent)
|
if (pvlLocation != neitherPresent) {
|
||||||
{
|
|
||||||
padto padding_sec2_2(offsetSection2 + pvlLocation - 1);
|
padto padding_sec2_2(offsetSection2 + pvlLocation - 1);
|
||||||
} else {
|
} else {
|
||||||
padto padding_sec2_2(offsetSection2 + 32 );
|
padto padding_sec2_2(offsetSection2 + 32 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if(PVPresent )
|
if (PVPresent ) {
|
||||||
{
|
|
||||||
ibmfloat pv[NV] : dump;
|
ibmfloat pv[NV] : dump;
|
||||||
alias vertical.pv=pv;
|
alias vertical.pv=pv;
|
||||||
}
|
}
|
||||||
|
@ -62,10 +56,9 @@ if(PVPresent )
|
||||||
position offsetBeforePL;
|
position offsetBeforePL;
|
||||||
|
|
||||||
transient PLPresent = (section2Length > (offsetBeforePL - offsetSection2))
|
transient PLPresent = (section2Length > (offsetBeforePL - offsetSection2))
|
||||||
&& (section2Length >= (Nj * 2 + offsetBeforePL - offsetSection2)) ;
|
&& (section2Length >= (Nj * 2 + offsetBeforePL - offsetSection2));
|
||||||
|
|
||||||
if(PLPresent)
|
if (PLPresent) {
|
||||||
{
|
|
||||||
# For grib 1 -> 2
|
# For grib 1 -> 2
|
||||||
constant numberOfOctectsForNumberOfPoints = 2;
|
constant numberOfOctectsForNumberOfPoints = 2;
|
||||||
constant interpretationOfNumberOfPoints = 1;
|
constant interpretationOfNumberOfPoints = 1;
|
||||||
|
@ -74,8 +67,7 @@ if(PLPresent)
|
||||||
alias geography.pl=pl;
|
alias geography.pl=pl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(PVPresent == 0 && PLPresent == 0)
|
if (PVPresent == 0 && PLPresent == 0) {
|
||||||
{
|
|
||||||
# pad to the end of the grid definiton as in documentation
|
# pad to the end of the grid definiton as in documentation
|
||||||
# ( gribex compatibility )
|
# ( gribex compatibility )
|
||||||
padto padding_sec2_1(offsetSection2 + 32);
|
padto padding_sec2_1(offsetSection2 + 32);
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
|
|
||||||
# This gets updated twice a year by WMO.
|
# This gets updated twice a year by WMO.
|
||||||
# See http://www.wmo.int/pages/prog/www/WMOCodes/WMO306_vI2/LatestVERSION/LatestVERSION.html
|
# See http://www.wmo.int/pages/prog/www/WMOCodes/WMO306_vI2/LatestVERSION/LatestVERSION.html
|
||||||
|
constant tablesVersionLatestOfficial = 26 : edition_specific;
|
||||||
|
# If this is different from the official version, then it is the pre-operational version
|
||||||
constant tablesVersionLatest = 27 : edition_specific;
|
constant tablesVersionLatest = 27 : edition_specific;
|
||||||
|
|
||||||
constant million = 1000000 : hidden;
|
constant million = 1000000 : hidden;
|
||||||
|
|
|
@ -176,6 +176,15 @@
|
||||||
parameterCategory = 3 ;
|
parameterCategory = 3 ;
|
||||||
parameterNumber = 0 ;
|
parameterNumber = 0 ;
|
||||||
}
|
}
|
||||||
|
#Direct solar radiation
|
||||||
|
'dsrp' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 4 ;
|
||||||
|
parameterNumber = 54 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#10 metre wind gust since previous post-processing
|
#10 metre wind gust since previous post-processing
|
||||||
'fg10' = {
|
'fg10' = {
|
||||||
discipline = 0 ;
|
discipline = 0 ;
|
||||||
|
@ -1088,6 +1097,24 @@
|
||||||
typeOfSecondFixedSurface = 255 ;
|
typeOfSecondFixedSurface = 255 ;
|
||||||
typeOfStatisticalProcessing = 1 ;
|
typeOfStatisticalProcessing = 1 ;
|
||||||
}
|
}
|
||||||
|
#Time integral of surface latent heat evaporation flux
|
||||||
|
'tislhef' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 30 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
|
#Time integral of surface latent heat sublimation flux
|
||||||
|
'tislhsf' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 31 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#Cross sectional area of flow in channel
|
#Cross sectional area of flow in channel
|
||||||
'chcross' = {
|
'chcross' = {
|
||||||
discipline = 1 ;
|
discipline = 1 ;
|
||||||
|
@ -1702,6 +1729,21 @@
|
||||||
parameterCategory = 4 ;
|
parameterCategory = 4 ;
|
||||||
parameterNumber = 19 ;
|
parameterNumber = 19 ;
|
||||||
}
|
}
|
||||||
|
#Volumetric soil ice
|
||||||
|
'vsi' = {
|
||||||
|
discipline = 2 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 38 ;
|
||||||
|
}
|
||||||
|
#Time integral of total solid precipitation flux
|
||||||
|
'titspf' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 1 ;
|
||||||
|
parameterNumber = 128 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#Universal thermal climate index
|
#Universal thermal climate index
|
||||||
'utci' = {
|
'utci' = {
|
||||||
discipline = 20 ;
|
discipline = 20 ;
|
||||||
|
|
|
@ -45,6 +45,7 @@ concept efas_post_proc {
|
||||||
"lisflood_eric" = { typeOfPostProcessing=2 ; }
|
"lisflood_eric" = { typeOfPostProcessing=2 ; }
|
||||||
"lisflood_season" = { typeOfPostProcessing=3 ; }
|
"lisflood_season" = { typeOfPostProcessing=3 ; }
|
||||||
"lisflood_merged" = { typeOfPostProcessing=4 ; }
|
"lisflood_merged" = { typeOfPostProcessing=4 ; }
|
||||||
|
"lisflood_global" = { typeOfPostProcessing=5 ; }
|
||||||
"ericha" = { typeOfPostProcessing=51 ; }
|
"ericha" = { typeOfPostProcessing=51 ; }
|
||||||
"htessel_lisflood" = { typeOfPostProcessing=101; }
|
"htessel_lisflood" = { typeOfPostProcessing=101; }
|
||||||
"htessel_eric" = { typeOfPostProcessing=102; }
|
"htessel_eric" = { typeOfPostProcessing=102; }
|
||||||
|
|
|
@ -245,12 +245,6 @@
|
||||||
parameterCategory = 128 ;
|
parameterCategory = 128 ;
|
||||||
parameterNumber = 46 ;
|
parameterNumber = 46 ;
|
||||||
}
|
}
|
||||||
#Direct solar radiation
|
|
||||||
'dsrp' = {
|
|
||||||
discipline = 192 ;
|
|
||||||
parameterCategory = 128 ;
|
|
||||||
parameterNumber = 47 ;
|
|
||||||
}
|
|
||||||
#Magnitude of turbulent surface stress
|
#Magnitude of turbulent surface stress
|
||||||
'magss' = {
|
'magss' = {
|
||||||
discipline = 192 ;
|
discipline = 192 ;
|
||||||
|
|
|
@ -190,3 +190,9 @@
|
||||||
parameterCategory = 174 ;
|
parameterCategory = 174 ;
|
||||||
parameterNumber = 8 ;
|
parameterNumber = 8 ;
|
||||||
}
|
}
|
||||||
|
#Direct solar radiation
|
||||||
|
'dsrp' = {
|
||||||
|
discipline = 192 ;
|
||||||
|
parameterCategory = 128 ;
|
||||||
|
parameterNumber = 47 ;
|
||||||
|
}
|
||||||
|
|
|
@ -245,12 +245,6 @@
|
||||||
parameterCategory = 128 ;
|
parameterCategory = 128 ;
|
||||||
parameterNumber = 46 ;
|
parameterNumber = 46 ;
|
||||||
}
|
}
|
||||||
#Direct solar radiation
|
|
||||||
'Direct solar radiation' = {
|
|
||||||
discipline = 192 ;
|
|
||||||
parameterCategory = 128 ;
|
|
||||||
parameterNumber = 47 ;
|
|
||||||
}
|
|
||||||
#Magnitude of turbulent surface stress
|
#Magnitude of turbulent surface stress
|
||||||
'Magnitude of turbulent surface stress' = {
|
'Magnitude of turbulent surface stress' = {
|
||||||
discipline = 192 ;
|
discipline = 192 ;
|
||||||
|
|
|
@ -190,3 +190,9 @@
|
||||||
parameterCategory = 174 ;
|
parameterCategory = 174 ;
|
||||||
parameterNumber = 8 ;
|
parameterNumber = 8 ;
|
||||||
}
|
}
|
||||||
|
#Direct solar radiation
|
||||||
|
'Direct solar radiation' = {
|
||||||
|
discipline = 192 ;
|
||||||
|
parameterCategory = 128 ;
|
||||||
|
parameterNumber = 47 ;
|
||||||
|
}
|
||||||
|
|
|
@ -245,12 +245,6 @@
|
||||||
parameterCategory = 128 ;
|
parameterCategory = 128 ;
|
||||||
parameterNumber = 46 ;
|
parameterNumber = 46 ;
|
||||||
}
|
}
|
||||||
#Direct solar radiation
|
|
||||||
'47' = {
|
|
||||||
discipline = 192 ;
|
|
||||||
parameterCategory = 128 ;
|
|
||||||
parameterNumber = 47 ;
|
|
||||||
}
|
|
||||||
#Magnitude of turbulent surface stress
|
#Magnitude of turbulent surface stress
|
||||||
'48' = {
|
'48' = {
|
||||||
discipline = 192 ;
|
discipline = 192 ;
|
||||||
|
|
|
@ -190,3 +190,9 @@
|
||||||
parameterCategory = 174 ;
|
parameterCategory = 174 ;
|
||||||
parameterNumber = 8 ;
|
parameterNumber = 8 ;
|
||||||
}
|
}
|
||||||
|
#Direct solar radiation
|
||||||
|
'47' = {
|
||||||
|
discipline = 192 ;
|
||||||
|
parameterCategory = 128 ;
|
||||||
|
parameterNumber = 47 ;
|
||||||
|
}
|
||||||
|
|
|
@ -245,12 +245,6 @@
|
||||||
parameterCategory = 128 ;
|
parameterCategory = 128 ;
|
||||||
parameterNumber = 46 ;
|
parameterNumber = 46 ;
|
||||||
}
|
}
|
||||||
#Direct solar radiation
|
|
||||||
'dsrp' = {
|
|
||||||
discipline = 192 ;
|
|
||||||
parameterCategory = 128 ;
|
|
||||||
parameterNumber = 47 ;
|
|
||||||
}
|
|
||||||
#Magnitude of turbulent surface stress
|
#Magnitude of turbulent surface stress
|
||||||
'magss' = {
|
'magss' = {
|
||||||
discipline = 192 ;
|
discipline = 192 ;
|
||||||
|
|
|
@ -190,3 +190,9 @@
|
||||||
parameterCategory = 174 ;
|
parameterCategory = 174 ;
|
||||||
parameterNumber = 8 ;
|
parameterNumber = 8 ;
|
||||||
}
|
}
|
||||||
|
#Direct solar radiation
|
||||||
|
'dsrp' = {
|
||||||
|
discipline = 192 ;
|
||||||
|
parameterCategory = 128 ;
|
||||||
|
parameterNumber = 47 ;
|
||||||
|
}
|
||||||
|
|
|
@ -245,12 +245,6 @@
|
||||||
parameterCategory = 128 ;
|
parameterCategory = 128 ;
|
||||||
parameterNumber = 46 ;
|
parameterNumber = 46 ;
|
||||||
}
|
}
|
||||||
#Direct solar radiation
|
|
||||||
'J m**-2' = {
|
|
||||||
discipline = 192 ;
|
|
||||||
parameterCategory = 128 ;
|
|
||||||
parameterNumber = 47 ;
|
|
||||||
}
|
|
||||||
#Magnitude of turbulent surface stress
|
#Magnitude of turbulent surface stress
|
||||||
'N m**-2 s' = {
|
'N m**-2 s' = {
|
||||||
discipline = 192 ;
|
discipline = 192 ;
|
||||||
|
|
|
@ -190,3 +190,9 @@
|
||||||
parameterCategory = 174 ;
|
parameterCategory = 174 ;
|
||||||
parameterNumber = 8 ;
|
parameterNumber = 8 ;
|
||||||
}
|
}
|
||||||
|
#Direct solar radiation
|
||||||
|
'J m**-2' = {
|
||||||
|
discipline = 192 ;
|
||||||
|
parameterCategory = 128 ;
|
||||||
|
parameterNumber = 47 ;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Concept typeOfLevel for kwbc
|
||||||
|
'atmosphereSingleLayer' = {typeOfFirstFixedSurface=200;}
|
||||||
|
'oceanSingleLayer' = {typeOfFirstFixedSurface=201;}
|
||||||
|
'highestTroposphericFreezing' = {typeOfFirstFixedSurface=204;}
|
||||||
|
'gridScaleCloudBottom' = {typeOfFirstFixedSurface=206;}
|
||||||
|
'gridScaleCloudTop' = {typeOfFirstFixedSurface=207;}
|
||||||
|
'boundaryLayerCloudBottom' = {typeOfFirstFixedSurface=209;}
|
||||||
|
'boundaryLayerCloudTop' = {typeOfFirstFixedSurface=210;}
|
||||||
|
'boundaryLayerCloudLayer' = {typeOfFirstFixedSurface=211;}
|
||||||
|
'lowCloudBottom' = {typeOfFirstFixedSurface=212;}
|
||||||
|
'lowCloudTop' = {typeOfFirstFixedSurface=213;}
|
||||||
|
'lowCloudLayer' = {typeOfFirstFixedSurface=214;}
|
||||||
|
'cloudCeiling' = {typeOfFirstFixedSurface=215;}
|
||||||
|
'planetaryBoundaryLayer' = {typeOfFirstFixedSurface=220;}
|
||||||
|
'layerBetween2Hybrids' = {typeOfFirstFixedSurface=221;}
|
||||||
|
'middleCloudBottom' = {typeOfFirstFixedSurface=222;}
|
||||||
|
'middleCloudTop' = {typeOfFirstFixedSurface=223;}
|
||||||
|
'middleCloudLayer' = {typeOfFirstFixedSurface=224;}
|
||||||
|
'highCloudBottom' = {typeOfFirstFixedSurface=232;}
|
||||||
|
'highCloudTop' = {typeOfFirstFixedSurface=233;}
|
||||||
|
'highCloudLayer' = {typeOfFirstFixedSurface=234;}
|
||||||
|
'oceanIsotherm' = {typeOfFirstFixedSurface=235;}
|
||||||
|
'oceanMixedLayer' = {typeOfFirstFixedSurface=240;}
|
||||||
|
'orderedSequenceData' = {typeOfFirstFixedSurface=241;}
|
||||||
|
'convectiveCloudBottom' = {typeOfFirstFixedSurface=242;}
|
||||||
|
'convectiveCloudTop' = {typeOfFirstFixedSurface=243;}
|
||||||
|
'convectiveCloudLayer' = {typeOfFirstFixedSurface=244;}
|
||||||
|
'lowestLevelWetBulb0' = {typeOfFirstFixedSurface=245;}
|
||||||
|
'equilibrium' = {typeOfFirstFixedSurface=247;}
|
||||||
|
'shallowConvectiveCloudBottom' = {typeOfFirstFixedSurface=248;}
|
||||||
|
'shallowConvectiveCloudTop' = {typeOfFirstFixedSurface=249;}
|
||||||
|
'deepConvectiveCloudBottom' = {typeOfFirstFixedSurface=251;}
|
||||||
|
'deepConvectiveCloudTop' = {typeOfFirstFixedSurface=252;}
|
|
@ -176,6 +176,15 @@
|
||||||
parameterCategory = 3 ;
|
parameterCategory = 3 ;
|
||||||
parameterNumber = 0 ;
|
parameterNumber = 0 ;
|
||||||
}
|
}
|
||||||
|
#Direct solar radiation
|
||||||
|
'Direct solar radiation' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 4 ;
|
||||||
|
parameterNumber = 54 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#10 metre wind gust since previous post-processing
|
#10 metre wind gust since previous post-processing
|
||||||
'10 metre wind gust since previous post-processing' = {
|
'10 metre wind gust since previous post-processing' = {
|
||||||
discipline = 0 ;
|
discipline = 0 ;
|
||||||
|
@ -1088,6 +1097,24 @@
|
||||||
typeOfSecondFixedSurface = 255 ;
|
typeOfSecondFixedSurface = 255 ;
|
||||||
typeOfStatisticalProcessing = 1 ;
|
typeOfStatisticalProcessing = 1 ;
|
||||||
}
|
}
|
||||||
|
#Time integral of surface latent heat evaporation flux
|
||||||
|
'Time integral of surface latent heat evaporation flux' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 30 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
|
#Time integral of surface latent heat sublimation flux
|
||||||
|
'Time integral of surface latent heat sublimation flux' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 31 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#Cross sectional area of flow in channel
|
#Cross sectional area of flow in channel
|
||||||
'Cross sectional area of flow in channel' = {
|
'Cross sectional area of flow in channel' = {
|
||||||
discipline = 1 ;
|
discipline = 1 ;
|
||||||
|
@ -1702,6 +1729,21 @@
|
||||||
parameterCategory = 4 ;
|
parameterCategory = 4 ;
|
||||||
parameterNumber = 19 ;
|
parameterNumber = 19 ;
|
||||||
}
|
}
|
||||||
|
#Volumetric soil ice
|
||||||
|
'Volumetric soil ice' = {
|
||||||
|
discipline = 2 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 38 ;
|
||||||
|
}
|
||||||
|
#Time integral of total solid precipitation flux
|
||||||
|
'Time integral of total solid precipitation flux' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 1 ;
|
||||||
|
parameterNumber = 128 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#Universal thermal climate index
|
#Universal thermal climate index
|
||||||
'Universal thermal climate index' = {
|
'Universal thermal climate index' = {
|
||||||
discipline = 20 ;
|
discipline = 20 ;
|
||||||
|
|
|
@ -176,6 +176,15 @@
|
||||||
parameterCategory = 3 ;
|
parameterCategory = 3 ;
|
||||||
parameterNumber = 0 ;
|
parameterNumber = 0 ;
|
||||||
}
|
}
|
||||||
|
#Direct solar radiation
|
||||||
|
'47' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 4 ;
|
||||||
|
parameterNumber = 54 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#10 metre wind gust since previous post-processing
|
#10 metre wind gust since previous post-processing
|
||||||
'49' = {
|
'49' = {
|
||||||
discipline = 0 ;
|
discipline = 0 ;
|
||||||
|
@ -1088,6 +1097,24 @@
|
||||||
typeOfSecondFixedSurface = 255 ;
|
typeOfSecondFixedSurface = 255 ;
|
||||||
typeOfStatisticalProcessing = 1 ;
|
typeOfStatisticalProcessing = 1 ;
|
||||||
}
|
}
|
||||||
|
#Time integral of surface latent heat evaporation flux
|
||||||
|
'235019' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 30 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
|
#Time integral of surface latent heat sublimation flux
|
||||||
|
'235071' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 31 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#Cross sectional area of flow in channel
|
#Cross sectional area of flow in channel
|
||||||
'240011' = {
|
'240011' = {
|
||||||
discipline = 1 ;
|
discipline = 1 ;
|
||||||
|
@ -1702,6 +1729,21 @@
|
||||||
parameterCategory = 4 ;
|
parameterCategory = 4 ;
|
||||||
parameterNumber = 19 ;
|
parameterNumber = 19 ;
|
||||||
}
|
}
|
||||||
|
#Volumetric soil ice
|
||||||
|
'260644' = {
|
||||||
|
discipline = 2 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 38 ;
|
||||||
|
}
|
||||||
|
#Time integral of total solid precipitation flux
|
||||||
|
'260645' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 1 ;
|
||||||
|
parameterNumber = 128 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#Universal thermal climate index
|
#Universal thermal climate index
|
||||||
'261001' = {
|
'261001' = {
|
||||||
discipline = 20 ;
|
discipline = 20 ;
|
||||||
|
|
|
@ -17,12 +17,12 @@ alias originatingCentre=centre;
|
||||||
unsigned[2] subCentre : dump;
|
unsigned[2] subCentre : dump;
|
||||||
|
|
||||||
_if (subCentre==98 ) {
|
_if (subCentre==98 ) {
|
||||||
alias centreForLocal=subCentre;
|
alias centreForLocal=subCentre;
|
||||||
} else {
|
} else {
|
||||||
alias centreForLocal=centre;
|
alias centreForLocal=centre;
|
||||||
}
|
}
|
||||||
|
|
||||||
codetable[1] tablesVersion 'grib2/tables/1.0.table' = tablesVersionLatest : edition_specific;
|
codetable[1] tablesVersion 'grib2/tables/1.0.table' = tablesVersionLatestOfficial : edition_specific;
|
||||||
alias gribMasterTablesVersionNumber=tablesVersion;
|
alias gribMasterTablesVersionNumber=tablesVersion;
|
||||||
|
|
||||||
transient masterDir="grib2/tables/[tablesVersion]";
|
transient masterDir="grib2/tables/[tablesVersion]";
|
||||||
|
@ -46,24 +46,13 @@ if (localTablesVersion != 0 and localTablesVersion != 255) {
|
||||||
# Significance of Reference Time
|
# Significance of Reference Time
|
||||||
codetable[1] significanceOfReferenceTime ('1.2.table',masterDir,localDir) = 1 : dump;
|
codetable[1] significanceOfReferenceTime ('1.2.table',masterDir,localDir) = 1 : dump;
|
||||||
|
|
||||||
# Year
|
# Year (4 digits)
|
||||||
# (4 digits)
|
unsigned[2] year;
|
||||||
unsigned[2] year ;
|
unsigned[1] month;
|
||||||
|
unsigned[1] day;
|
||||||
# Month
|
unsigned[1] hour;
|
||||||
unsigned[1] month ;
|
unsigned[1] minute;
|
||||||
|
unsigned[1] second;
|
||||||
# Day
|
|
||||||
unsigned[1] day ;
|
|
||||||
|
|
||||||
# Hour
|
|
||||||
unsigned[1] hour ;
|
|
||||||
|
|
||||||
# Minute
|
|
||||||
unsigned[1] minute ;
|
|
||||||
|
|
||||||
# Second
|
|
||||||
unsigned[1] second ;
|
|
||||||
|
|
||||||
meta dataDate g2date(year,month,day) : dump;
|
meta dataDate g2date(year,month,day) : dump;
|
||||||
alias mars.date = dataDate;
|
alias mars.date = dataDate;
|
||||||
|
|
|
@ -41,5 +41,3 @@ if ( addEmptySection2 == 0 ) {
|
||||||
|
|
||||||
section_padding section2Padding : read_only;
|
section_padding section2Padding : read_only;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# START grib2::section
|
|
||||||
# SECTION 3, GRID DEFINITION SECTION
|
# SECTION 3, GRID DEFINITION SECTION
|
||||||
# Length of section in octets
|
|
||||||
|
|
||||||
# For grib2 -> 1
|
# For grib2 -> 1
|
||||||
constant gridDescriptionSectionPresent = 1;
|
constant gridDescriptionSectionPresent = 1;
|
||||||
|
@ -11,7 +9,6 @@ position offsetSection3;
|
||||||
section_length[4] section3Length ;
|
section_length[4] section3Length ;
|
||||||
meta section3Pointer section_pointer(offsetSection3,section3Length,3);
|
meta section3Pointer section_pointer(offsetSection3,section3Length,3);
|
||||||
|
|
||||||
# Number of section
|
|
||||||
unsigned[1] numberOfSection = 3 :read_only;
|
unsigned[1] numberOfSection = 3 :read_only;
|
||||||
|
|
||||||
# Source of grid definition
|
# Source of grid definition
|
||||||
|
|
|
@ -72,7 +72,6 @@ else {
|
||||||
concept_nofail deletePV(unknown) {
|
concept_nofail deletePV(unknown) {
|
||||||
"1" = { PVPresent=0; NV=0; }
|
"1" = { PVPresent=0; NV=0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
meta md5Section4 md5(offsetSection4,section4Length);
|
meta md5Section4 md5(offsetSection4,section4Length);
|
||||||
|
|
|
@ -2,17 +2,13 @@
|
||||||
|
|
||||||
position offsetBSection5;
|
position offsetBSection5;
|
||||||
|
|
||||||
# START grib2::section
|
|
||||||
# SECTION 5, DATA REPRESENTATION SECTION
|
# SECTION 5, DATA REPRESENTATION SECTION
|
||||||
# Length of section in octets
|
|
||||||
|
|
||||||
# (nn)
|
|
||||||
position offsetSection5;
|
position offsetSection5;
|
||||||
section_length[4] section5Length ;
|
section_length[4] section5Length ;
|
||||||
|
|
||||||
meta section5 section_pointer(offsetSection5,section5Length,5);
|
meta section5 section_pointer(offsetSection5,section5Length,5);
|
||||||
|
|
||||||
# Number of section
|
|
||||||
unsigned[1] numberOfSection =5 : read_only;
|
unsigned[1] numberOfSection =5 : read_only;
|
||||||
|
|
||||||
# Number of data points where one or more values are specified in Section 7 when a bit map is present,
|
# Number of data points where one or more values are specified in Section 7 when a bit map is present,
|
||||||
|
@ -21,7 +17,6 @@ unsigned[4] numberOfValues : dump;
|
||||||
alias numberOfCodedValues=numberOfValues;
|
alias numberOfCodedValues=numberOfValues;
|
||||||
alias numberOfEffectiveValues=numberOfValues;
|
alias numberOfEffectiveValues=numberOfValues;
|
||||||
|
|
||||||
# Data Representation Template Number
|
|
||||||
codetable[2] dataRepresentationTemplateNumber ('5.0.table',masterDir,localDir) : edition_specific;
|
codetable[2] dataRepresentationTemplateNumber ('5.0.table',masterDir,localDir) : edition_specific;
|
||||||
|
|
||||||
concept packingType (unknown) {
|
concept packingType (unknown) {
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# START grib2::section
|
|
||||||
# SECTION 6, BIT-MAP SECTION
|
# SECTION 6, BIT-MAP SECTION
|
||||||
# Length of section in octets
|
|
||||||
# (nn)
|
|
||||||
position offsetSection6;
|
position offsetSection6;
|
||||||
position offsetBSection6;
|
position offsetBSection6;
|
||||||
|
|
||||||
|
@ -21,20 +18,16 @@ meta geography.bitmapPresent g2bitmap_present(bitMapIndicator): dump;
|
||||||
transient missingValuesPresent = bitmapPresent : hidden, read_only;
|
transient missingValuesPresent = bitmapPresent : hidden, read_only;
|
||||||
|
|
||||||
# Bitmap...
|
# Bitmap...
|
||||||
if(bitMapIndicator == 0)
|
if (bitMapIndicator == 0) {
|
||||||
{
|
if (dataRepresentationTemplateNumber == 1) {
|
||||||
if(dataRepresentationTemplateNumber == 1)
|
if (matrixBitmapsPresent == 1) {
|
||||||
{
|
|
||||||
if(matrixBitmapsPresent == 1)
|
|
||||||
{
|
|
||||||
meta primaryBitmap g2bitmap( tableReference,
|
meta primaryBitmap g2bitmap( tableReference,
|
||||||
missingValue,
|
missingValue,
|
||||||
offsetBSection6,
|
offsetBSection6,
|
||||||
section6Length,
|
section6Length,
|
||||||
numberOfDataMatrices) : read_only;
|
numberOfDataMatrices) : read_only;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
meta geography.bitmap g2bitmap( tableReference,
|
meta geography.bitmap g2bitmap( tableReference,
|
||||||
missingValue,
|
missingValue,
|
||||||
offsetBSection6,
|
offsetBSection6,
|
||||||
|
@ -42,8 +35,7 @@ if(bitMapIndicator == 0)
|
||||||
numberOfDataPoints) : read_only;
|
numberOfDataPoints) : read_only;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
meta geography.bitmap g2bitmap( tableReference,
|
meta geography.bitmap g2bitmap( tableReference,
|
||||||
missingValue,
|
missingValue,
|
||||||
offsetBSection6,
|
offsetBSection6,
|
||||||
|
@ -52,7 +44,7 @@ if(bitMapIndicator == 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(bitMapIndicator == 255)
|
if (bitMapIndicator == 255)
|
||||||
{
|
{
|
||||||
# No bitmap is used but some complex packing schemes embed the missing values in the data section
|
# No bitmap is used but some complex packing schemes embed the missing values in the data section
|
||||||
if (dataRepresentationTemplateNumber == 2 || dataRepresentationTemplateNumber == 3) {
|
if (dataRepresentationTemplateNumber == 2 || dataRepresentationTemplateNumber == 3) {
|
||||||
|
|
|
@ -1,16 +1,12 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# START grib2::section
|
|
||||||
# SECTION 7, DATA SECTION
|
# SECTION 7, DATA SECTION
|
||||||
# Length of section in octets
|
|
||||||
# (nn)
|
|
||||||
|
|
||||||
position offsetSection7;
|
position offsetSection7;
|
||||||
|
|
||||||
section_length[4] section7Length ;
|
section_length[4] section7Length ;
|
||||||
meta section7 section_pointer(offsetSection7,section7Length,7);
|
meta section7 section_pointer(offsetSection7,section7Length,7);
|
||||||
|
|
||||||
# Number of section
|
|
||||||
unsigned[1] numberOfSection = 7:read_only;
|
unsigned[1] numberOfSection = 7:read_only;
|
||||||
|
|
||||||
# Octets 6-nn : Data in a format described by Data Template 7.x, where x is the Data Representation
|
# Octets 6-nn : Data in a format described by Data Template 7.x, where x is the Data Representation
|
||||||
|
@ -38,4 +34,3 @@ concept productType(unknown) {
|
||||||
position offsetAfterData;
|
position offsetAfterData;
|
||||||
meta md5Section7 md5(offsetSection7,section7Length);
|
meta md5Section7 md5(offsetSection7,section7Length);
|
||||||
alias md5DataSection = md5Section7;
|
alias md5DataSection = md5Section7;
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ alias section2Used=zero;
|
||||||
alias setLocalDefinition=grib2LocalSectionPresent;
|
alias setLocalDefinition=grib2LocalSectionPresent;
|
||||||
transient deleteLocalDefinition=0;
|
transient deleteLocalDefinition=0;
|
||||||
|
|
||||||
if( (sectionNumber == 2 or grib2LocalSectionPresent>0) and deleteLocalDefinition == 0 ){
|
if ( (sectionNumber == 2 or grib2LocalSectionPresent>0) and deleteLocalDefinition == 0 ) {
|
||||||
position sectionPosition;
|
position sectionPosition;
|
||||||
template section_2 "grib2/section.2.def";
|
template section_2 "grib2/section.2.def";
|
||||||
}
|
}
|
||||||
|
@ -22,15 +22,14 @@ alias localUsePresent=section2Used;
|
||||||
|
|
||||||
lookup[1] sectionNumber(4) ;
|
lookup[1] sectionNumber(4) ;
|
||||||
|
|
||||||
if(sectionNumber == 3 or new() ){
|
if (sectionNumber == 3 or new() ){
|
||||||
position sectionPosition;
|
position sectionPosition;
|
||||||
template section_3 "grib2/section.3.def";
|
template section_3 "grib2/section.3.def";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
lookup[1] sectionNumber(4) ;
|
lookup[1] sectionNumber(4) ;
|
||||||
|
|
||||||
if(sectionNumber == 4 or new() ){
|
if (sectionNumber == 4 or new() ) {
|
||||||
position sectionPosition;
|
position sectionPosition;
|
||||||
template section_4 "grib2/section.4.def";
|
template section_4 "grib2/section.4.def";
|
||||||
}
|
}
|
||||||
|
@ -43,24 +42,23 @@ meta md5Headers md5(startOfHeaders,lengthOfHeaders);
|
||||||
|
|
||||||
lookup[1] sectionNumber(4) ;
|
lookup[1] sectionNumber(4) ;
|
||||||
|
|
||||||
if(sectionNumber == 5 or new() ){
|
if (sectionNumber == 5 or new() ) {
|
||||||
position sectionPosition;
|
position sectionPosition;
|
||||||
template section_5 "grib2/section.5.def";
|
template section_5 "grib2/section.5.def";
|
||||||
}
|
}
|
||||||
|
|
||||||
lookup[1] sectionNumber(4) ;
|
lookup[1] sectionNumber(4) ;
|
||||||
|
|
||||||
if(sectionNumber == 6 or new() ){
|
if (sectionNumber == 6 or new() ) {
|
||||||
position sectionPosition;
|
position sectionPosition;
|
||||||
template section_6 "grib2/section.6.def";
|
template section_6 "grib2/section.6.def";
|
||||||
}
|
}
|
||||||
|
|
||||||
lookup[1] sectionNumber(4) ;
|
lookup[1] sectionNumber(4) ;
|
||||||
|
|
||||||
if(sectionNumber == 7 or new() ){
|
if (sectionNumber == 7 or new() ) {
|
||||||
position sectionPosition;
|
position sectionPosition;
|
||||||
template section_7 "grib2/section.7.def";
|
template section_7 "grib2/section.7.def";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#template metas "grib2/meta.def";
|
#template metas "grib2/meta.def";
|
||||||
|
|
|
@ -176,6 +176,15 @@
|
||||||
parameterCategory = 3 ;
|
parameterCategory = 3 ;
|
||||||
parameterNumber = 0 ;
|
parameterNumber = 0 ;
|
||||||
}
|
}
|
||||||
|
#Direct solar radiation
|
||||||
|
'dsrp' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 4 ;
|
||||||
|
parameterNumber = 54 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#10 metre wind gust since previous post-processing
|
#10 metre wind gust since previous post-processing
|
||||||
'10fg' = {
|
'10fg' = {
|
||||||
discipline = 0 ;
|
discipline = 0 ;
|
||||||
|
@ -1088,6 +1097,24 @@
|
||||||
typeOfSecondFixedSurface = 255 ;
|
typeOfSecondFixedSurface = 255 ;
|
||||||
typeOfStatisticalProcessing = 1 ;
|
typeOfStatisticalProcessing = 1 ;
|
||||||
}
|
}
|
||||||
|
#Time integral of surface latent heat evaporation flux
|
||||||
|
'tislhef' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 30 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
|
#Time integral of surface latent heat sublimation flux
|
||||||
|
'tislhsf' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 31 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#Cross sectional area of flow in channel
|
#Cross sectional area of flow in channel
|
||||||
'chcross' = {
|
'chcross' = {
|
||||||
discipline = 1 ;
|
discipline = 1 ;
|
||||||
|
@ -1702,6 +1729,21 @@
|
||||||
parameterCategory = 4 ;
|
parameterCategory = 4 ;
|
||||||
parameterNumber = 19 ;
|
parameterNumber = 19 ;
|
||||||
}
|
}
|
||||||
|
#Volumetric soil ice
|
||||||
|
'vsi' = {
|
||||||
|
discipline = 2 ;
|
||||||
|
parameterCategory = 0 ;
|
||||||
|
parameterNumber = 38 ;
|
||||||
|
}
|
||||||
|
#Time integral of total solid precipitation flux
|
||||||
|
'titspf' = {
|
||||||
|
discipline = 0 ;
|
||||||
|
parameterCategory = 1 ;
|
||||||
|
parameterNumber = 128 ;
|
||||||
|
typeOfFirstFixedSurface = 1 ;
|
||||||
|
typeOfSecondFixedSurface = 255 ;
|
||||||
|
typeOfStatisticalProcessing = 1 ;
|
||||||
|
}
|
||||||
#Universal thermal climate index
|
#Universal thermal climate index
|
||||||
'utci' = {
|
'utci' = {
|
||||||
discipline = 20 ;
|
discipline = 20 ;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
|
0 0 Confidence level (4.151.table)
|
||||||
0 0 Confidence level ('grib2/4.151.table')
|
|
||||||
1 1 Delta time (seconds)
|
1 1 Delta time (seconds)
|
||||||
192 192 Reserved for local use
|
192 192 Reserved for local use
|
||||||
193 193 Reserved for local use
|
193 193 Reserved for local use
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
|
0 0 Confidence level (4.151.table)
|
||||||
0 0 Confidence level ('grib2/4.151.table')
|
|
||||||
1 1 Delta time (seconds)
|
1 1 Delta time (seconds)
|
||||||
192 192 Reserved for local use
|
192 192 Reserved for local use
|
||||||
193 193 Reserved for local use
|
193 193 Reserved for local use
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
# CODE TABLE 4.15, Type of auxiliary information
|
# CODE TABLE 4.15, Type of auxiliary information
|
||||||
|
0 0 Confidence level (4.151.table)
|
||||||
0 0 Confidence level ('grib2/4.151.table')
|
|
||||||
1 1 Delta time (seconds)
|
1 1 Delta time (seconds)
|
||||||
192 192 Reserved for local use
|
192 192 Reserved for local use
|
||||||
193 193 Reserved for local use
|
193 193 Reserved for local use
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
5 5 HF absorption frequency (Hz)
|
5 5 HF absorption frequency (Hz)
|
||||||
6 6 HF absorption (dB)
|
6 6 HF absorption (dB)
|
||||||
7 7 Spread F (m)
|
7 7 Spread F (m)
|
||||||
8 8 h’ (m)
|
8 8 h'F (m)
|
||||||
9 9 Critical frequency (Hz)
|
9 9 Critical frequency (Hz)
|
||||||
10 10 Maximal usable frequency (MUF) (Hz)
|
10 10 Maximal usable frequency (MUF) (Hz)
|
||||||
11 11 Peak height (hm) (m)
|
11 11 Peak height (hm) (m)
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
5 5 HF absorption frequency (Hz)
|
5 5 HF absorption frequency (Hz)
|
||||||
6 6 HF absorption (dB)
|
6 6 HF absorption (dB)
|
||||||
7 7 Spread F (m)
|
7 7 Spread F (m)
|
||||||
8 8 h’ (m)
|
8 8 h'F (m)
|
||||||
9 9 Critical frequency (Hz)
|
9 9 Critical frequency (Hz)
|
||||||
10 10 Maximal usable frequency (MUF) (Hz)
|
10 10 Maximal usable frequency (MUF) (Hz)
|
||||||
11 11 Peak height (hm) (m)
|
11 11 Peak height (hm) (m)
|
||||||
|
|
|
@ -68,8 +68,10 @@
|
||||||
83 83 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink
|
83 83 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink
|
||||||
84 84 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink
|
84 84 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol with source or sink
|
||||||
85 85 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol
|
85 85 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol
|
||||||
88 88 Analysis or Forecast at a horizontal level or in a horizontal layer at a local time
|
86 86 Quantile forecasts at a horizontal level or in a horizontal layer at a point in time
|
||||||
# 86-90 Reserved
|
87 87 Quantile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
||||||
|
88 88 Analysis or forecast at a horizontal level or in a horizontal layer at a specified local time
|
||||||
|
# 89-90 Reserved
|
||||||
91 91 Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
91 91 Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
||||||
# 92-253 Reserved
|
# 92-253 Reserved
|
||||||
254 254 CCITT IA5 character string
|
254 254 CCITT IA5 character string
|
||||||
|
|
|
@ -126,7 +126,7 @@
|
||||||
124 124 Presence of showers (Code table 4.222)
|
124 124 Presence of showers (Code table 4.222)
|
||||||
125 125 Presence of blowing snow (Code table 4.222)
|
125 125 Presence of blowing snow (Code table 4.222)
|
||||||
126 126 Presence of blizzard (Code table 4.222)
|
126 126 Presence of blizzard (Code table 4.222)
|
||||||
127 127 Ice pellets (non water equivalent) precipitation rate (m/s)
|
127 127 Ice pellets (non-water equivalent) precipitation rate (m/s)
|
||||||
128 128 Total solid precipitation rate (kg m-2 s-1)
|
128 128 Total solid precipitation rate (kg m-2 s-1)
|
||||||
129 129 Effective radius of cloud water (m)
|
129 129 Effective radius of cloud water (m)
|
||||||
130 130 Effective radius of rain (m)
|
130 130 Effective radius of rain (m)
|
||||||
|
@ -143,8 +143,9 @@
|
||||||
141 141 Effective aspect ratio of hail (-)
|
141 141 Effective aspect ratio of hail (-)
|
||||||
142 142 Effective aspect ratio of subgrid ice clouds (-)
|
142 142 Effective aspect ratio of subgrid ice clouds (-)
|
||||||
143 143 Potential evaporation rate (kg m–2 s–1)
|
143 143 Potential evaporation rate (kg m–2 s–1)
|
||||||
144 144 specific rain water content (convective) (kg kg-1)
|
144 144 Specific rain water content (convective) (kg kg-1)
|
||||||
145 145 specific snow water content (convective) (kg kg-1)
|
145 145 Specific snow water content (convective) (kg kg-1)
|
||||||
# 146-191 Reserved
|
146 146 Cloud ice precipitation rate (kg m-2 s-1)
|
||||||
|
# 147-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -13,3 +13,7 @@
|
||||||
11 11 Attenuation coefficient of water with respect to solar radiation (/m)
|
11 11 Attenuation coefficient of water with respect to solar radiation (/m)
|
||||||
12 12 Salinity (kg/kg)
|
12 12 Salinity (kg/kg)
|
||||||
13 13 Cross-sectional area of flow in channel (m2)
|
13 13 Cross-sectional area of flow in channel (m2)
|
||||||
|
14 14 Snow temperature (K)
|
||||||
|
# 15-191 Reserved
|
||||||
|
# 192-254 Reserved for local use
|
||||||
|
255 255 Missing
|
||||||
|
|
|
@ -64,6 +64,13 @@
|
||||||
62 62 Wave frequency width (-)
|
62 62 Wave frequency width (-)
|
||||||
63 63 Frequency width of wind waves (-)
|
63 63 Frequency width of wind waves (-)
|
||||||
64 64 Frequency width of total swell (-)
|
64 64 Frequency width of total swell (-)
|
||||||
# 65-191 Reserved
|
65 65 Peak wave period of first swell partition (s)
|
||||||
|
66 66 Peak wave period of second swell partition (s)
|
||||||
|
67 67 Peak wave period of third swell partition (s)
|
||||||
|
68 68 Peak wave direction of first swell partition (degree true)
|
||||||
|
69 69 Peak wave direction of second swell partition (degree true)
|
||||||
|
70 70 Peak wave direction of third swell partition (degree true)
|
||||||
|
71 71 Peak direction of wind waves (degree true)
|
||||||
|
# 72-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
1 1 Meridional overturning stream function (m3/s)
|
1 1 Meridional overturning stream function (m3/s)
|
||||||
2 2 Reserved
|
2 2 Reserved
|
||||||
3 3 Days since last observation (d)
|
3 3 Days since last observation (d)
|
||||||
# 4-191 Reserved
|
4 4 Barotropic stream function (m3 s-1)
|
||||||
|
# 5-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
10 10 Zonal vector component of vertically integrated ice internal pressure (Pa m)
|
10 10 Zonal vector component of vertically integrated ice internal pressure (Pa m)
|
||||||
11 11 Meridional vector component of vertically integrated ice internal pressure (Pa m)
|
11 11 Meridional vector component of vertically integrated ice internal pressure (Pa m)
|
||||||
12 12 Compressive ice strength (N/m)
|
12 12 Compressive ice strength (N/m)
|
||||||
# 13-191 Reserved
|
13 13 Snow temperature (over sea-ice) (K)
|
||||||
|
# 14-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -3,6 +3,14 @@
|
||||||
1 1 Deviation of sea level from mean (m)
|
1 1 Deviation of sea level from mean (m)
|
||||||
2 2 Heat exchange coefficient (-)
|
2 2 Heat exchange coefficient (-)
|
||||||
3 3 Practical salinity (Numeric)
|
3 3 Practical salinity (Numeric)
|
||||||
# 4-191 Reserved
|
4 4 Downward heat flux (W m-2)
|
||||||
|
5 5 Eastward surface stress (N m-2)
|
||||||
|
6 6 Northward surface stress (N m-2)
|
||||||
|
7 7 x-component surface stress (N m-2)
|
||||||
|
8 8 y-component surface stress (N m-2)
|
||||||
|
9 9 Thermosteric change in sea surface height (m)
|
||||||
|
10 10 Halosteric change in sea surface height (m)
|
||||||
|
11 11 Steric change in sea surface height (m)
|
||||||
|
# 12-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -19,6 +19,12 @@
|
||||||
19 19 Water potential density (rho theta) (kg m-3)
|
19 19 Water potential density (rho theta) (kg m-3)
|
||||||
20 20 Water potential density anomaly (sigma theta) (kg m-3)
|
20 20 Water potential density anomaly (sigma theta) (kg m-3)
|
||||||
21 21 Practical salinity (Numeric)
|
21 21 Practical salinity (Numeric)
|
||||||
# 22-191 Reserved
|
22 22 Water column-integrated heat content (J m-2)
|
||||||
|
23 23 Eastward water velocity (m s-1)
|
||||||
|
24 24 Northward water velocity (m s-1)
|
||||||
|
25 25 x-component water velocity (m s-1)
|
||||||
|
26 26 y-component water velocity (m s-1)
|
||||||
|
27 27 Upward water velocity (m s-1)
|
||||||
|
# 28-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
37 37 Tile percentage (%)
|
37 37 Tile percentage (%)
|
||||||
38 38 Soil volumetric ice content (water equivalent) (m3 m-3)
|
38 38 Soil volumetric ice content (water equivalent) (m3 m-3)
|
||||||
39 39 Evapotranspiration rate (kg m-2 s-1)
|
39 39 Evapotranspiration rate (kg m-2 s-1)
|
||||||
# 40-191 Reserved
|
40 40 Potential evapotranspiration rate (kg m-2 s-1)
|
||||||
|
# 41-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
26 26 Soil heat flux (W m-2)
|
26 26 Soil heat flux (W m-2)
|
||||||
27 27 Soil depth (m)
|
27 27 Soil depth (m)
|
||||||
28 28 Snow temperature (K)
|
28 28 Snow temperature (K)
|
||||||
# 29-191 Reserved
|
29 29 Ice temperature (K)
|
||||||
|
# 30-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
13 13 Drought factor (as defined by the Australian forest service ) (Numeric)
|
13 13 Drought factor (as defined by the Australian forest service ) (Numeric)
|
||||||
14 14 Rate of spread (as defined by the Australian forest service ) (m/s)
|
14 14 Rate of spread (as defined by the Australian forest service ) (m/s)
|
||||||
15 15 Fire danger index (as defined by the Australian forest service ) (Numeric)
|
15 15 Fire danger index (as defined by the Australian forest service ) (Numeric)
|
||||||
16 16 Spread component (as defined by the U.S Forest Service National Fire-Danger Rating System) (Numeric)
|
16 16 Spread component (as defined by the U.S Forest Service National Fire Danger Rating System) (Numeric)
|
||||||
17 17 Burning index (as defined by the U.S Forest Service National Fire-Danger Rating System) (Numeric)
|
17 17 Burning index (as defined by the U.S Forest Service National Fire Danger Rating System) (Numeric)
|
||||||
18 18 Ignition component (as defined by the U.S Forest Service National Fire-Danger Rating System) (%)
|
18 18 Ignition component (as defined by the U.S Forest Service National Fire Danger Rating System) (%)
|
||||||
19 19 Energy release component (as defined by the U.S Forest Service National Fire-Danger Rating System) (Joule/m2)
|
19 19 Energy release component (as defined by the U.S Forest Service National Fire Danger Rating System) (Joule/m2)
|
||||||
# 20-191 Reserved
|
# 20-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
5 5 HF absorption frequency (Hz)
|
5 5 HF absorption frequency (Hz)
|
||||||
6 6 HF absorption (dB)
|
6 6 HF absorption (dB)
|
||||||
7 7 Spread F (m)
|
7 7 Spread F (m)
|
||||||
8 8 h’ (m)
|
8 8 h'F (m)
|
||||||
9 9 Critical frequency (Hz)
|
9 9 Critical frequency (Hz)
|
||||||
10 10 Maximal usable frequency (MUF) (Hz)
|
10 10 Maximal usable frequency (MUF) (Hz)
|
||||||
11 11 Peak height (hm) (m)
|
11 11 Peak height (hm) (m)
|
||||||
|
|
|
@ -101,7 +101,12 @@
|
||||||
10052 10052 Ethyl hydroperoxide CH3CH2OOH
|
10052 10052 Ethyl hydroperoxide CH3CH2OOH
|
||||||
10053 10053 3-hydroxypropyl dioxidanyl radical HOCH2CH2CH2OO
|
10053 10053 3-hydroxypropyl dioxidanyl radical HOCH2CH2CH2OO
|
||||||
10054 10054 3-hydroxypropyl hydroperoxide HOCH2CH2CH2OOH
|
10054 10054 3-hydroxypropyl hydroperoxide HOCH2CH2CH2OOH
|
||||||
# 10055-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides, ...)
|
10055 10055 methyl-peroxy-nitrate (nitroperoxy-methane) CH_3OONO_2
|
||||||
|
10056 10056 2-lambda^1-Oxidanyloxy-2-methylbut-3-en-1-ol (4-Hydroxy-3-methyl-1-butene-3-ylperoxy radical) HOCH_2C(CH_3)(OO)CHCH_2
|
||||||
|
10057 10057 2-lambda^1-Oxidanyloxy-3-methylbut-3-en-1-ol (2-Hydroxy-1-isopropenylethylperoxy radical) HOCH_2CH(OO)C(CH_3)CH_2
|
||||||
|
10058 10058 (Z)-4-Hydroperoxy-2-methyl-2-butenal CH2(OOH)CHC(CH_3)CHO
|
||||||
|
10059 10059 (Z)-4-Hydroperoxy-3-methyl-2-butenal CH2(OOH)C(CH_3)CHCHO
|
||||||
|
# 10060-10499 Reserved for other simple organic molecules e.g. higher aldehydes alcohols
|
||||||
10500 10500 Dimethyl sulphide CH3SCH3 (DMS)
|
10500 10500 Dimethyl sulphide CH3SCH3 (DMS)
|
||||||
10501 10501 DMSO (dimethyl sulfoxide) (CH3)2SO
|
10501 10501 DMSO (dimethyl sulfoxide) (CH3)2SO
|
||||||
# 10502-20000 Reserved
|
# 10502-20000 Reserved
|
||||||
|
@ -451,7 +456,12 @@
|
||||||
60025 60025 Hydroxy dicarbonyls unsaturated RC(O)CHOHC(O)R
|
60025 60025 Hydroxy dicarbonyls unsaturated RC(O)CHOHC(O)R
|
||||||
60026 60026 Hydroxy ketones RC(OH)C(O)R
|
60026 60026 Hydroxy ketones RC(OH)C(O)R
|
||||||
60027 60027 Oxides Ox
|
60027 60027 Oxides Ox
|
||||||
# 60028-61999 Reserved
|
60028 60028 Peroxyacyl nitrates RC(O)OONO_2
|
||||||
|
60029 60029 Aromatic peroxide radical (Aryl dioxydanyl radicals) ArOO
|
||||||
|
60030 60030 Biogenic Secondary Organic Compound
|
||||||
|
60031 60031 Anthropogenic Secondary Organic Compound
|
||||||
|
60032 60032 all hydroxy-peroxides products of the reaction of hydroxy-isoprene adducts with O_2 ISOPOOH
|
||||||
|
# 60033-61999 Reserved
|
||||||
62000 62000 Total aerosol
|
62000 62000 Total aerosol
|
||||||
62001 62001 Dust dry
|
62001 62001 Dust dry
|
||||||
62002 62002 Water in ambient
|
62002 62002 Water in ambient
|
||||||
|
@ -482,7 +492,11 @@
|
||||||
# 62027 Reserved
|
# 62027 Reserved
|
||||||
62028 62028 Total aerosol hydrophilic
|
62028 62028 Total aerosol hydrophilic
|
||||||
62029 62029 Total aerosol hydrophobic
|
62029 62029 Total aerosol hydrophobic
|
||||||
# 62030-62099 Reserved
|
62030 62030 Primary particulate inorganic matter dry
|
||||||
|
62031 62031 Secondary particulate Inorganic matter dry
|
||||||
|
62032 62032 Biogenic Secondary Organic aerosol
|
||||||
|
62033 62033 Anthropogenic Secondary Organic aerosol
|
||||||
|
# 62034-62099 Reserved
|
||||||
62100 62100 Alnus (alder) pollen
|
62100 62100 Alnus (alder) pollen
|
||||||
62101 62101 Betula (birch) pollen
|
62101 62101 Betula (birch) pollen
|
||||||
62102 62102 Castanea (chestnut) pollen
|
62102 62102 Castanea (chestnut) pollen
|
||||||
|
@ -498,10 +512,11 @@
|
||||||
62112 62112 Taxus (yew) pollen
|
62112 62112 Taxus (yew) pollen
|
||||||
62113 62113 Tilia (lime, linden) pollen
|
62113 62113 Tilia (lime, linden) pollen
|
||||||
62114 62114 Ulmus (elm) pollen
|
62114 62114 Ulmus (elm) pollen
|
||||||
# 62115-62199 Reserved
|
62115 62115 Olea (olive) pollen
|
||||||
|
# 62116-62199 Reserved
|
||||||
62200 62200 Ambrosia (ragweed, burr-ragweed) pollen
|
62200 62200 Ambrosia (ragweed, burr-ragweed) pollen
|
||||||
62201 62201 Artemisia (sagebrush, wormwood, mugwort) pollen
|
62201 62201 Artemisia (sagebrush, wormwood, mugwort) pollen
|
||||||
62202 62202 Brassica (rape, broccoli, Brussels sprouts, cabbage, cauliflower, collards, kale,kohlrabi, mustard, rutabaga) pollen
|
62202 62202 Brassica (rape, broccoli, Brussels sprouts, cabbage, cauliflower, collards, kale, kohlrabi, mustard, rutabaga) pollen
|
||||||
62203 62203 Plantago (plantain) pollen
|
62203 62203 Plantago (plantain) pollen
|
||||||
62204 62204 Rumex (dock, sorrel) pollen
|
62204 62204 Rumex (dock, sorrel) pollen
|
||||||
62205 62205 Urtica (nettle) pollen
|
62205 62205 Urtica (nettle) pollen
|
||||||
|
|
|
@ -101,7 +101,12 @@
|
||||||
10052 10052 Ethyl hydroperoxide CH3CH2OOH
|
10052 10052 Ethyl hydroperoxide CH3CH2OOH
|
||||||
10053 10053 3-hydroxypropyl dioxidanyl radical HOCH2CH2CH2OO
|
10053 10053 3-hydroxypropyl dioxidanyl radical HOCH2CH2CH2OO
|
||||||
10054 10054 3-hydroxypropyl hydroperoxide HOCH2CH2CH2OOH
|
10054 10054 3-hydroxypropyl hydroperoxide HOCH2CH2CH2OOH
|
||||||
# 10055-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides, ...)
|
10055 10055 methyl-peroxy-nitrate (nitroperoxy-methane) CH_3OONO_2
|
||||||
|
10056 10056 2-lambda^1-Oxidanyloxy-2-methylbut-3-en-1-ol (4-Hydroxy-3-methyl-1-butene-3-ylperoxy radical) HOCH_2C(CH_3)(OO)CHCH_2
|
||||||
|
10057 10057 2-lambda^1-Oxidanyloxy-3-methylbut-3-en-1-ol (2-Hydroxy-1-isopropenylethylperoxy radical) HOCH_2CH(OO)C(CH_3)CH_2
|
||||||
|
10058 10058 (Z)-4-Hydroperoxy-2-methyl-2-butenal CH2(OOH)CHC(CH_3)CHO
|
||||||
|
10059 10059 (Z)-4-Hydroperoxy-3-methyl-2-butenal CH2(OOH)C(CH_3)CHCHO
|
||||||
|
# 10060-10499 Reserved for other simple organic molecules e.g. higher aldehydes alcohols
|
||||||
10500 10500 Dimethyl sulphide CH3SCH3 (DMS)
|
10500 10500 Dimethyl sulphide CH3SCH3 (DMS)
|
||||||
10501 10501 DMSO (dimethyl sulfoxide) (CH3)2SO
|
10501 10501 DMSO (dimethyl sulfoxide) (CH3)2SO
|
||||||
# 10502-20000 Reserved
|
# 10502-20000 Reserved
|
||||||
|
@ -451,7 +456,12 @@
|
||||||
60025 60025 Hydroxy dicarbonyls unsaturated RC(O)CHOHC(O)R
|
60025 60025 Hydroxy dicarbonyls unsaturated RC(O)CHOHC(O)R
|
||||||
60026 60026 Hydroxy ketones RC(OH)C(O)R
|
60026 60026 Hydroxy ketones RC(OH)C(O)R
|
||||||
60027 60027 Oxides Ox
|
60027 60027 Oxides Ox
|
||||||
# 60028-61999 Reserved
|
60028 60028 Peroxyacyl nitrates RC(O)OONO_2
|
||||||
|
60029 60029 Aromatic peroxide radical (Aryl dioxydanyl radicals) ArOO
|
||||||
|
60030 60030 Biogenic Secondary Organic Compound
|
||||||
|
60031 60031 Anthropogenic Secondary Organic Compound
|
||||||
|
60032 60032 all hydroxy-peroxides products of the reaction of hydroxy-isoprene adducts with O_2 ISOPOOH
|
||||||
|
# 60033-61999 Reserved
|
||||||
62000 62000 Total aerosol
|
62000 62000 Total aerosol
|
||||||
62001 62001 Dust dry
|
62001 62001 Dust dry
|
||||||
62002 62002 Water in ambient
|
62002 62002 Water in ambient
|
||||||
|
@ -482,7 +492,11 @@
|
||||||
# 62027 Reserved
|
# 62027 Reserved
|
||||||
62028 62028 Total aerosol hydrophilic
|
62028 62028 Total aerosol hydrophilic
|
||||||
62029 62029 Total aerosol hydrophobic
|
62029 62029 Total aerosol hydrophobic
|
||||||
# 62030-62099 Reserved
|
62030 62030 Primary particulate inorganic matter dry
|
||||||
|
62031 62031 Secondary particulate Inorganic matter dry
|
||||||
|
62032 62032 Biogenic Secondary Organic aerosol
|
||||||
|
62033 62033 Anthropogenic Secondary Organic aerosol
|
||||||
|
# 62034-62099 Reserved
|
||||||
62100 62100 Alnus (alder) pollen
|
62100 62100 Alnus (alder) pollen
|
||||||
62101 62101 Betula (birch) pollen
|
62101 62101 Betula (birch) pollen
|
||||||
62102 62102 Castanea (chestnut) pollen
|
62102 62102 Castanea (chestnut) pollen
|
||||||
|
@ -498,10 +512,11 @@
|
||||||
62112 62112 Taxus (yew) pollen
|
62112 62112 Taxus (yew) pollen
|
||||||
62113 62113 Tilia (lime, linden) pollen
|
62113 62113 Tilia (lime, linden) pollen
|
||||||
62114 62114 Ulmus (elm) pollen
|
62114 62114 Ulmus (elm) pollen
|
||||||
# 62115-62199 Reserved
|
62115 62115 Olea (olive) pollen
|
||||||
|
# 62116-62199 Reserved
|
||||||
62200 62200 Ambrosia (ragweed, burr-ragweed) pollen
|
62200 62200 Ambrosia (ragweed, burr-ragweed) pollen
|
||||||
62201 62201 Artemisia (sagebrush, wormwood, mugwort) pollen
|
62201 62201 Artemisia (sagebrush, wormwood, mugwort) pollen
|
||||||
62202 62202 Brassica (rape, broccoli, Brussels sprouts, cabbage, cauliflower, collards, kale,kohlrabi, mustard, rutabaga) pollen
|
62202 62202 Brassica (rape, broccoli, Brussels sprouts, cabbage, cauliflower, collards, kale, kohlrabi, mustard, rutabaga) pollen
|
||||||
62203 62203 Plantago (plantain) pollen
|
62203 62203 Plantago (plantain) pollen
|
||||||
62204 62204 Rumex (dock, sorrel) pollen
|
62204 62204 Rumex (dock, sorrel) pollen
|
||||||
62205 62205 Urtica (nettle) pollen
|
62205 62205 Urtica (nettle) pollen
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
0 0 Nearest analysis time or forecast time to specified local time
|
# Code table 4.248 - Method used to derive data values for a given local time
|
||||||
|
0 0 Nearest forecast or analysis time to specified local time
|
||||||
1 1 Interpolated to be valid at the specified local time
|
1 1 Interpolated to be valid at the specified local time
|
||||||
# 2-191 Reserved
|
# 2-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
|
|
|
@ -18,6 +18,9 @@
|
||||||
16 16 Physical retrieval
|
16 16 Physical retrieval
|
||||||
17 17 Regression analysis
|
17 17 Regression analysis
|
||||||
18 18 Difference between two forecasts
|
18 18 Difference between two forecasts
|
||||||
# 19-191 Reserved
|
19 19 First guess
|
||||||
|
20 20 Analysis increment
|
||||||
|
21 21 Initialization increment for analysis
|
||||||
|
# 22-191 Reserved
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
# 120-149 Reserved
|
# 120-149 Reserved
|
||||||
150 150 Generalized vertical height coordinate
|
150 150 Generalized vertical height coordinate
|
||||||
151 sol Soil level (Numeric)
|
151 sol Soil level (Numeric)
|
||||||
152 sol Sea ice level (Numeric)
|
152 sol Sea-ice level (Numeric)
|
||||||
# 153-159 Reserved
|
# 153-159 Reserved
|
||||||
160 160 Depth below sea level (m)
|
160 160 Depth below sea level (m)
|
||||||
161 161 Depth below water surface (m)
|
161 161 Depth below water surface (m)
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
# CODE TABLE 4.15, Type of auxiliary information
|
# CODE TABLE 4.15, Type of auxiliary information
|
||||||
|
0 0 Confidence level (4.151.table)
|
||||||
0 0 Confidence level ('grib2/4.151.table')
|
|
||||||
1 1 Delta time (seconds)
|
1 1 Delta time (seconds)
|
||||||
192 192 Reserved for local use
|
192 192 Reserved for local use
|
||||||
193 193 Reserved for local use
|
193 193 Reserved for local use
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
# CODE TABLE 4.15, Type of auxiliary information
|
# CODE TABLE 4.15, Type of auxiliary information
|
||||||
|
|
||||||
0 0 Confidence level ('grib2/4.151.table')
|
0 0 Confidence level ('grib2/4.151.table')
|
||||||
1 1 Delta time (seconds)
|
1 1 Delta time (seconds)
|
||||||
192 192 Reserved for local use
|
192 192 Reserved for local use
|
||||||
|
|
|
@ -71,19 +71,42 @@
|
||||||
# 192-254 Reserved for local use
|
# 192-254 Reserved for local use
|
||||||
# See ECC-469
|
# See ECC-469
|
||||||
200 200 Entire atmosphere (considered as a single layer)
|
200 200 Entire atmosphere (considered as a single layer)
|
||||||
|
201 201 Entire ocean (considered as a single layer)
|
||||||
204 204 Highest tropospheric freezing level
|
204 204 Highest tropospheric freezing level
|
||||||
|
206 206 Grid scale cloud bottom level
|
||||||
|
207 207 Grid scale cloud top level
|
||||||
|
209 209 Boundary layer cloud bottom level
|
||||||
|
210 210 Boundary layer cloud top level
|
||||||
211 211 Boundary layer cloud layer
|
211 211 Boundary layer cloud layer
|
||||||
212 212 Low cloud bottom level
|
212 212 Low cloud bottom level
|
||||||
213 213 Low cloud top level
|
213 213 Low cloud top level
|
||||||
214 214 Low cloud layer
|
214 214 Low cloud layer
|
||||||
|
215 215 Cloud ceiling
|
||||||
220 220 Planetary boundary layer
|
220 220 Planetary boundary layer
|
||||||
|
221 221 Layer between two hybrid levels
|
||||||
222 222 Middle cloud bottom level
|
222 222 Middle cloud bottom level
|
||||||
223 223 Middle cloud top level
|
223 223 Middle cloud top level
|
||||||
224 224 Middle cloud layer
|
224 224 Middle cloud layer
|
||||||
232 232 High cloud bottom level
|
232 232 High cloud bottom level
|
||||||
233 233 High cloud top level
|
233 233 High cloud top level
|
||||||
234 234 High cloud layer
|
234 234 High cloud layer
|
||||||
|
235 235 Ocean isotherm level (1/10 deg C)
|
||||||
|
236 236 Layer between two depths below ocean surface
|
||||||
|
237 237 Bottom of ocean mixed layer
|
||||||
|
238 238 Bottom of ocean isothermal layer
|
||||||
|
239 239 Layer ocean surface and 26C ocean isothermal level
|
||||||
|
240 240 Ocean mixed layer
|
||||||
|
241 241 Ordered sequence of data
|
||||||
242 242 Convective cloud bottom level
|
242 242 Convective cloud bottom level
|
||||||
243 243 Convective cloud top level
|
243 243 Convective cloud top level
|
||||||
244 244 Convective cloud layer
|
244 244 Convective cloud layer
|
||||||
|
245 245 Lowest level of the wet bulb zero
|
||||||
|
246 246 Maximum equivalent potential temperature level
|
||||||
|
247 247 Equilibrium level
|
||||||
|
248 248 Shallow convective cloud bottom level
|
||||||
|
249 249 Shallow convective cloud top level
|
||||||
|
251 251 Deep convective cloud bottom level
|
||||||
|
252 252 Deep convective cloud top level
|
||||||
|
253 253 Lowest bottom level of supercooled liquid water layer
|
||||||
|
254 254 Highest top level of supercooled liquid water layer
|
||||||
255 255 Missing
|
255 255 Missing
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
# TEMPLATE 4.0, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time
|
# TEMPLATE 4.0, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def";
|
include "grib2/template.4.parameter.def"
|
||||||
include "grib2/template.4.point_in_time.def";
|
include "grib2/template.4.generating_process.def"
|
||||||
include "grib2/template.4.horizontal.def";
|
include "grib2/template.4.forecast_time.def"
|
||||||
|
include "grib2/template.4.point_in_time.def"
|
||||||
|
include "grib2/template.4.horizontal.def"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
# TEMPLATE 4.1, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time
|
# TEMPLATE 4.1, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
include "grib2/template.4.point_in_time.def";
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
|
include "grib2/template.4.point_in_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.eps.def"
|
include "grib2/template.4.eps.def"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
# TEMPLATE 4.10, Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
# TEMPLATE 4.10, Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.percentile.def"
|
include "grib2/template.4.percentile.def"
|
||||||
include "grib2/template.4.statistical.def"
|
include "grib2/template.4.statistical.def"
|
||||||
|
|
|
@ -3,4 +3,6 @@
|
||||||
# TEMPLATE 4.1000, Cross section of analysis and forecast at a point in time
|
# TEMPLATE 4.1000, Cross section of analysis and forecast at a point in time
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
include "grib2/template.4.point_in_time.def";
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
|
include "grib2/template.4.point_in_time.def"
|
||||||
|
|
|
@ -3,4 +3,6 @@
|
||||||
# TEMPLATE 4.1001, Cross section of averaged or otherwise statistically processed analysis or forecast over a range of time
|
# TEMPLATE 4.1001, Cross section of averaged or otherwise statistically processed analysis or forecast over a range of time
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.statistical.def"
|
include "grib2/template.4.statistical.def"
|
||||||
|
|
|
@ -3,8 +3,9 @@
|
||||||
# TEMPLATE 4.1002, Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude
|
# TEMPLATE 4.1002, Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
|
|
||||||
# Horizontal dimension processed
|
|
||||||
codetable[1] horizontalDimensionProcessed ('4.220.table',masterDir,localDir) : dump;
|
codetable[1] horizontalDimensionProcessed ('4.220.table',masterDir,localDir) : dump;
|
||||||
|
|
||||||
# Treatment of missing data (e.g. below ground)
|
# Treatment of missing data (e.g. below ground)
|
||||||
|
@ -14,10 +15,7 @@ codetable[1] treatmentOfMissingData ('4.221.table',masterDir,localDir) : dump;
|
||||||
codetable[1] typeOfStatisticalProcessing ('4.10.table',masterDir,localDir) : dump;
|
codetable[1] typeOfStatisticalProcessing ('4.10.table',masterDir,localDir) : dump;
|
||||||
#alias typeOfStatisticalProcessing=stepType;
|
#alias typeOfStatisticalProcessing=stepType;
|
||||||
|
|
||||||
# Start of range
|
|
||||||
unsigned[4] startOfRange : dump;
|
unsigned[4] startOfRange : dump;
|
||||||
|
|
||||||
# End of range
|
|
||||||
unsigned[4] endOfRange : dump;
|
unsigned[4] endOfRange : dump;
|
||||||
|
|
||||||
# Number of values
|
# Number of values
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
# TEMPLATE 4.11, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
# TEMPLATE 4.11, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.eps.def"
|
include "grib2/template.4.eps.def"
|
||||||
include "grib2/template.4.statistical.def"
|
include "grib2/template.4.statistical.def"
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# TEMPLATE 4.1100, Hovmöller-type grid with no averaging or other statistical processing
|
# TEMPLATE 4.1100, Hovmoller-type grid with no averaging or other statistical processing
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# TEMPLATE 4.1101, Hovmöller-type grid with averaging or other statistical processing
|
# TEMPLATE 4.1101, Hovmoller-type grid with averaging or other statistical processing
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.statistical.def"
|
include "grib2/template.4.statistical.def"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
# TEMPLATE 4.12, Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
# TEMPLATE 4.12, Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.derived.def"
|
include "grib2/template.4.derived.def"
|
||||||
include "grib2/template.4.statistical.def"
|
include "grib2/template.4.statistical.def"
|
||||||
|
|
|
@ -3,12 +3,10 @@
|
||||||
# TEMPLATE 4.13, Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
# TEMPLATE 4.13, Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.derived.def"
|
include "grib2/template.4.derived.def"
|
||||||
include "grib2/template.4.rectangular_cluster.def"
|
include "grib2/template.4.rectangular_cluster.def"
|
||||||
include "grib2/template.4.statistical.def"
|
include "grib2/template.4.statistical.def"
|
||||||
|
include "grib2/template.4.eps_cluster.def"
|
||||||
ensembleForecastNumbersList list(numberOfForecastsInTheCluster) {
|
|
||||||
unsigned[1] ensembleForecastNumbers : dump;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,10 @@
|
||||||
# TEMPLATE 4.14, Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
# TEMPLATE 4.14, Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.derived.def"
|
include "grib2/template.4.derived.def"
|
||||||
include "grib2/template.4.circular_cluster.def"
|
include "grib2/template.4.circular_cluster.def"
|
||||||
include "grib2/template.4.statistical.def"
|
include "grib2/template.4.statistical.def"
|
||||||
|
include "grib2/template.4.eps_cluster.def"
|
||||||
ensembleForecastNumbersList list(numberOfForecastsInTheCluster) {
|
|
||||||
unsigned[1] ensembleForecastNumbers : dump;
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
# TEMPLATE 4.15, Average, accumulation, extreme values, or other statistically-processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time
|
# TEMPLATE 4.15, Average, accumulation, extreme values, or other statistically-processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def";
|
include "grib2/template.4.parameter.def"
|
||||||
include "grib2/template.4.point_in_time.def";
|
include "grib2/template.4.generating_process.def"
|
||||||
include "grib2/template.4.horizontal.def";
|
include "grib2/template.4.forecast_time.def"
|
||||||
|
include "grib2/template.4.point_in_time.def"
|
||||||
|
include "grib2/template.4.horizontal.def"
|
||||||
|
|
||||||
codetable[1] statisticalProcess 'grib2/tables/[tablesVersion]/4.10.table';
|
codetable[1] statisticalProcess 'grib2/tables/[tablesVersion]/4.10.table';
|
||||||
codetable[1] spatialProcessing 'grib2/tables/[tablesVersion]/4.15.table';
|
codetable[1] spatialProcessing 'grib2/tables/[tablesVersion]/4.15.table';
|
||||||
unsigned[1] numberOfPointsUsed;
|
unsigned[1] numberOfPointsUsed;
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
|
|
||||||
# TEMPLATE 4.2, Derived forecast based on all ensemble members at a horizontal level or in a horizontal layer at a point in time
|
# TEMPLATE 4.2, Derived forecast based on all ensemble members at a horizontal level or in a horizontal layer at a point in time
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def";
|
include "grib2/template.4.parameter.def"
|
||||||
include "grib2/template.4.point_in_time.def";
|
include "grib2/template.4.generating_process.def"
|
||||||
include "grib2/template.4.horizontal.def";
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.derived.def";
|
include "grib2/template.4.point_in_time.def"
|
||||||
|
include "grib2/template.4.horizontal.def"
|
||||||
|
include "grib2/template.4.derived.def"
|
||||||
|
|
|
@ -3,11 +3,10 @@
|
||||||
# TEMPLATE 4.3, Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time
|
# TEMPLATE 4.3, Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
include "grib2/template.4.point_in_time.def";
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
|
include "grib2/template.4.point_in_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.derived.def"
|
include "grib2/template.4.derived.def"
|
||||||
include "grib2/template.4.rectangular_cluster.def"
|
include "grib2/template.4.rectangular_cluster.def"
|
||||||
|
include "grib2/template.4.eps_cluster.def"
|
||||||
ensembleForecastNumbersList list(numberOfForecastsInTheCluster) {
|
|
||||||
unsigned[1] ensembleForecastNumbers : dump;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,27 +1,14 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# For grib2 to grib1 conversion
|
|
||||||
constant dataRepresentationType = 90;
|
|
||||||
|
|
||||||
# TEMPLATE 4.30, Satellite Product
|
# TEMPLATE 4.30, Satellite Product
|
||||||
|
|
||||||
# Note: This template is deprecated. Template 4.31 should be used instead.
|
# Note: This template is deprecated. Template 4.31 should be used instead.
|
||||||
|
|
||||||
codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump;
|
include "grib2/template.4.parameter.def"
|
||||||
codetable[1] parameterNumber ('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir) : dump;
|
|
||||||
meta parameterUnits codetable_units(parameterNumber) : dump;
|
|
||||||
meta parameterName codetable_title(parameterNumber) : dump;
|
|
||||||
codetable[1] typeOfGeneratingProcess 'grib2/tables/[tablesVersion]/4.3.table' : dump;
|
|
||||||
unsigned[1] observationGeneratingProcessIdentifier : dump;
|
|
||||||
unsigned[1] NB : dump;
|
|
||||||
alias numberOfContributingSpectralBands=NB;
|
|
||||||
|
|
||||||
if (new() || section4Length>14) {
|
codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
|
||||||
listOfContributingSpectralBands list(numberOfContributingSpectralBands){
|
|
||||||
unsigned[2] satelliteSeries;
|
# Observation generating process identifier (defined by originating centre)
|
||||||
unsigned[2] satelliteNumber;
|
unsigned[1] observationGeneratingProcessIdentifier : dump;
|
||||||
unsigned[1] instrumentType;
|
alias generatingProcessIdentifier=observationGeneratingProcessIdentifier;
|
||||||
unsigned[1] scaleFactorOfCentralWaveNumber = missing() : can_be_missing ;
|
|
||||||
unsigned[4] scaledValueOfCentralWaveNumber = missing() : can_be_missing ;
|
include "grib2/template.4.satellite_30.def"
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# For grib2 to grib1 conversion
|
|
||||||
constant dataRepresentationType = 90;
|
|
||||||
|
|
||||||
# TEMPLATE 4.31, Satellite Product
|
# TEMPLATE 4.31, Satellite Product
|
||||||
codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump;
|
|
||||||
codetable[1] parameterNumber ('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir) : dump;
|
include "grib2/template.4.parameter.def"
|
||||||
meta parameterUnits codetable_units(parameterNumber) : dump;
|
|
||||||
meta parameterName codetable_title(parameterNumber) : dump;
|
|
||||||
|
|
||||||
codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
|
codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
|
||||||
|
|
||||||
|
@ -15,13 +10,4 @@ codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
|
||||||
unsigned[1] observationGeneratingProcessIdentifier : dump;
|
unsigned[1] observationGeneratingProcessIdentifier : dump;
|
||||||
alias generatingProcessIdentifier=observationGeneratingProcessIdentifier;
|
alias generatingProcessIdentifier=observationGeneratingProcessIdentifier;
|
||||||
|
|
||||||
unsigned[1] NB : dump;
|
include "grib2/template.4.satellite.def"
|
||||||
alias numberOfContributingSpectralBands=NB;
|
|
||||||
|
|
||||||
listOfContributingSpectralBands list(numberOfContributingSpectralBands){
|
|
||||||
unsigned[2] satelliteSeries : dump;
|
|
||||||
unsigned[2] satelliteNumber : dump;
|
|
||||||
unsigned[2] instrumentType : dump;
|
|
||||||
unsigned[1] scaleFactorOfCentralWaveNumber = missing() : dump,can_be_missing ;
|
|
||||||
unsigned[4] scaledValueOfCentralWaveNumber = missing() : dump,can_be_missing ;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,18 +1,14 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# For grib2 to grib1 conversion
|
|
||||||
constant dataRepresentationType = 90;
|
|
||||||
|
|
||||||
# TEMPLATE 4.311, Satellite Product Auxiliary Information
|
# TEMPLATE 4.311, Satellite Product Auxiliary Information
|
||||||
codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump;
|
|
||||||
codetable[1] parameterNumber ('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir) : dump;
|
include "grib2/template.4.parameter.def"
|
||||||
meta parameterUnits codetable_units(parameterNumber) : dump;
|
|
||||||
meta parameterName codetable_title(parameterNumber) : dump;
|
|
||||||
|
|
||||||
codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
|
codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
|
||||||
|
|
||||||
# Observation generating process identifier (defined by originating centre)
|
# Observation generating process identifier (defined by originating centre)
|
||||||
unsigned[1] observationGeneratingProcessIdentifier : dump;
|
unsigned[1] observationGeneratingProcessIdentifier : dump;
|
||||||
|
alias generatingProcessIdentifier=observationGeneratingProcessIdentifier;
|
||||||
|
|
||||||
unsigned[1] NB : dump;
|
unsigned[1] NB : dump;
|
||||||
alias numberOfContributingSpectralBands=NB;
|
alias numberOfContributingSpectralBands=NB;
|
||||||
|
|
|
@ -1,25 +1,9 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# For grib2 to grib1 conversion
|
|
||||||
constant dataRepresentationType = 90;
|
|
||||||
|
|
||||||
# TEMPLATE 4.32, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
|
# TEMPLATE 4.32, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
include "grib2/template.4.point_in_time.def";
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
# Required for interpolation and MARS. The level type is used to decide whether to apply the Land Sea Mask
|
include "grib2/template.4.point_in_time.def"
|
||||||
constant typeOfLevel="surface";
|
include "grib2/template.4.satellite.def"
|
||||||
constant levelType="surface";
|
|
||||||
constant level=0;
|
|
||||||
|
|
||||||
unsigned[1] NB : dump;
|
|
||||||
alias numberOfContributingSpectralBands=NB;
|
|
||||||
|
|
||||||
listOfContributingSpectralBands list(numberOfContributingSpectralBands){
|
|
||||||
unsigned[2] satelliteSeries : dump;
|
|
||||||
unsigned[2] satelliteNumber : dump;
|
|
||||||
unsigned[2] instrumentType : dump;
|
|
||||||
unsigned[1] scaleFactorOfCentralWaveNumber = missing() : dump,can_be_missing ;
|
|
||||||
unsigned[4] scaledValueOfCentralWaveNumber = missing() : dump,can_be_missing ;
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
# TEMPLATE 4.33, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
|
# TEMPLATE 4.33, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
|
||||||
|
|
||||||
include "grib2/template.4.32.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
|
include "grib2/template.4.point_in_time.def"
|
||||||
|
include "grib2/template.4.satellite.def"
|
||||||
include "grib2/template.4.eps.def"
|
include "grib2/template.4.eps.def"
|
||||||
|
|
||||||
alias instrument = instrumentType;
|
|
||||||
alias ident = satelliteNumber;
|
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
# TEMPLATE 4.34, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data
|
# TEMPLATE 4.34, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data
|
||||||
|
|
||||||
include "grib2/template.4.32.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
|
include "grib2/template.4.point_in_time.def"
|
||||||
|
include "grib2/template.4.satellite.def"
|
||||||
include "grib2/template.4.eps.def"
|
include "grib2/template.4.eps.def"
|
||||||
include "grib2/template.4.statistical.def"
|
include "grib2/template.4.statistical.def"
|
||||||
|
|
||||||
alias instrument = instrumentType;
|
|
||||||
alias ident = satelliteNumber;
|
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
# (C) Copyright 2005- ECMWF.
|
# (C) Copyright 2005- ECMWF.
|
||||||
|
|
||||||
# For grib2 to grib1 conversion
|
|
||||||
constant dataRepresentationType = 90;
|
|
||||||
|
|
||||||
# TEMPLATE 4.35, satellite product with or without associated quality values
|
# TEMPLATE 4.35, satellite product with or without associated quality values
|
||||||
|
|
||||||
codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump;
|
include "grib2/template.4.parameter.def"
|
||||||
codetable[1] parameterNumber ('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir) : dump;
|
|
||||||
meta parameterUnits codetable_units(parameterNumber) : dump;
|
|
||||||
meta parameterName codetable_title(parameterNumber) : dump;
|
|
||||||
|
|
||||||
codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
|
codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
|
||||||
|
|
||||||
|
@ -18,13 +12,4 @@ alias generatingProcessIdentifier=observationGeneratingProcessIdentifier;
|
||||||
|
|
||||||
codetable[1] qualityValueAssociatedWithParameter('4.16.table',masterDir,localDir) : dump;
|
codetable[1] qualityValueAssociatedWithParameter('4.16.table',masterDir,localDir) : dump;
|
||||||
|
|
||||||
unsigned[1] NB : dump;
|
include "grib2/template.4.satellite.def"
|
||||||
alias numberOfContributingSpectralBands=NB;
|
|
||||||
|
|
||||||
listOfContributingSpectralBands list(numberOfContributingSpectralBands){
|
|
||||||
unsigned[2] satelliteSeries : dump;
|
|
||||||
unsigned[2] satelliteNumber : dump;
|
|
||||||
unsigned[2] instrumentType : dump;
|
|
||||||
unsigned[1] scaleFactorOfCentralWaveNumber = missing() : dump,can_be_missing ;
|
|
||||||
unsigned[4] scaledValueOfCentralWaveNumber = missing() : dump,can_be_missing ;
|
|
||||||
}
|
|
||||||
|
|
|
@ -3,11 +3,10 @@
|
||||||
# TEMPLATE 4.4, Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time
|
# TEMPLATE 4.4, Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time
|
||||||
|
|
||||||
include "grib2/template.4.parameter.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.point_in_time.def"
|
include "grib2/template.4.point_in_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.derived.def"
|
include "grib2/template.4.derived.def"
|
||||||
include "grib2/template.4.circular_cluster.def"
|
include "grib2/template.4.circular_cluster.def"
|
||||||
|
include "grib2/template.4.eps_cluster.def"
|
||||||
ensembleForecastNumbersList list(numberOfForecastsInTheCluster) {
|
|
||||||
unsigned[1] ensembleForecastNumbers : dump;
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
# TEMPLATE 4.40, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents
|
# TEMPLATE 4.40, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents
|
||||||
|
|
||||||
include "grib2/template.4.parameter_chemical.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.chemical.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.point_in_time.def"
|
include "grib2/template.4.point_in_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
|
|
|
@ -2,7 +2,10 @@
|
||||||
|
|
||||||
# TEMPLATE 4.41, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents
|
# TEMPLATE 4.41, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents
|
||||||
|
|
||||||
include "grib2/template.4.parameter_chemical.def"
|
include "grib2/template.4.parameter.def"
|
||||||
|
include "grib2/template.4.chemical.def"
|
||||||
|
include "grib2/template.4.generating_process.def"
|
||||||
|
include "grib2/template.4.forecast_time.def"
|
||||||
include "grib2/template.4.point_in_time.def"
|
include "grib2/template.4.point_in_time.def"
|
||||||
include "grib2/template.4.horizontal.def"
|
include "grib2/template.4.horizontal.def"
|
||||||
include "grib2/template.4.eps.def"
|
include "grib2/template.4.eps.def"
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue