Merge develop

This commit is contained in:
Shahram Najm 2021-03-03 16:43:39 +00:00
commit 45fab8f12a
490 changed files with 8252 additions and 8174 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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\

View File

@ -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+$/);
}

View File

@ -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;

View File

@ -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) ;

View File

@ -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) ;

View File

@ -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);

View File

@ -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;}

View File

@ -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);

View File

@ -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;

View File

@ -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 ;

View File

@ -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; }

View File

@ -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 ;

View File

@ -190,3 +190,9 @@
parameterCategory = 174 ; parameterCategory = 174 ;
parameterNumber = 8 ; parameterNumber = 8 ;
} }
#Direct solar radiation
'dsrp' = {
discipline = 192 ;
parameterCategory = 128 ;
parameterNumber = 47 ;
}

View File

@ -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 ;

View File

@ -190,3 +190,9 @@
parameterCategory = 174 ; parameterCategory = 174 ;
parameterNumber = 8 ; parameterNumber = 8 ;
} }
#Direct solar radiation
'Direct solar radiation' = {
discipline = 192 ;
parameterCategory = 128 ;
parameterNumber = 47 ;
}

View File

@ -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 ;

View File

@ -190,3 +190,9 @@
parameterCategory = 174 ; parameterCategory = 174 ;
parameterNumber = 8 ; parameterNumber = 8 ;
} }
#Direct solar radiation
'47' = {
discipline = 192 ;
parameterCategory = 128 ;
parameterNumber = 47 ;
}

View File

@ -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 ;

View File

@ -190,3 +190,9 @@
parameterCategory = 174 ; parameterCategory = 174 ;
parameterNumber = 8 ; parameterNumber = 8 ;
} }
#Direct solar radiation
'dsrp' = {
discipline = 192 ;
parameterCategory = 128 ;
parameterNumber = 47 ;
}

View File

@ -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 ;

View File

@ -190,3 +190,9 @@
parameterCategory = 174 ; parameterCategory = 174 ;
parameterNumber = 8 ; parameterNumber = 8 ;
} }
#Direct solar radiation
'J m**-2' = {
discipline = 192 ;
parameterCategory = 128 ;
parameterNumber = 47 ;
}

View File

@ -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;}

View File

@ -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 ;

View File

@ -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 ;

View File

@ -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;

View File

@ -41,5 +41,3 @@ if ( addEmptySection2 == 0 ) {
section_padding section2Padding : read_only; section_padding section2Padding : read_only;

View File

@ -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

View File

@ -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);

View File

@ -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) {

View File

@ -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) {

View File

@ -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;

View File

@ -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";

View File

@ -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 ;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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 m2 s1) 143 143 Potential evaporation rate (kg m2 s1)
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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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"

View File

@ -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;
}

View File

@ -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"
}
}

View File

@ -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 ;
}

View File

@ -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;

View File

@ -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 ;
}

View File

@ -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;

View File

@ -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;

View File

@ -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 ;
}

View File

@ -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;
}

View File

@ -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"

View File

@ -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