Merge branch 'develop' into feature/FireInMars

This commit is contained in:
Sebastien Villaume 2022-02-21 11:10:18 +00:00
commit 47d0b580c6
57 changed files with 6606 additions and 772 deletions

View File

@ -74,6 +74,7 @@ build_script:
-D ENABLE_FORTRAN=0 ^
-D ENABLE_NETCDF=1 ^
-D ENABLE_JPG=1 ^
-D ENABLE_AEC=0 ^
-D IEEE_LE=1 ^
-D ENABLE_MEMFS=1 ^
-D ENABLE_EXTRA_TESTS=ON ^

View File

@ -27,5 +27,7 @@ jobs:
codecov_upload: true
build_package_inputs: |
self_coverage: true
dependencies: ecmwf/ecbuild
dependencies: |
ecmwf/ecbuild
MathisRosenhauer/libaec@master
dependency_branch: develop

View File

@ -115,9 +115,12 @@ ecbuild_add_option( FEATURE NETCDF
NO_TPL )
find_package( AEC )
if(NOT DEFINED ENABLE_AEC AND NOT AEC_FOUND)
ecbuild_critical("AEC (Adaptive Entropy Coding) support is highly recommended from ecCodes >= 2.25.0\nTo force the build without it, use -DENABLE_AEC=OFF")
endif()
ecbuild_add_option( FEATURE AEC
DESCRIPTION "Support for Adaptive Entropy Coding"
DEFAULT OFF
DEFAULT ON
CONDITION AEC_FOUND )
ecbuild_find_python( VERSION 2.6 NO_LIBS )

View File

@ -16,5 +16,6 @@ module unload libemos
module unload metview
module load cmake/3.16.5
module load aec
module switch gnu clang

View File

@ -15,3 +15,5 @@ module unload libemos
module unload metview
module load cmake/3.16.5
module load aec

View File

@ -16,5 +16,6 @@ module unload netcdf4
module list
module load cmake/3.16.5
module load aec
module switch gnu intel/17.0.3

View File

@ -18,14 +18,18 @@
#
# AEC_DIR - prefix path of the AEC installation
# AEC_PATH - prefix path of the AEC installation
# LIBAEC_DIR
# libaec_DIR
# LIBAEC_PATH
# libaec_PATH
find_path( AEC_INCLUDE_DIR szlib.h
PATHS ${AEC_DIR} ${AEC_PATH} ENV AEC_DIR ENV AEC_PATH
PATHS ${AEC_DIR} ${AEC_PATH} ${LIBAEC_DIR} ${libaec_DIR} ${LIBAEC_PATH} ${libaec_PATH} ENV AEC_DIR ENV AEC_PATH ENV LIBAEC_DIR ENV libaec_DIR ENV LIBAEC_PATH ENV libaec_PATH
PATH_SUFFIXES include include/aec NO_DEFAULT_PATH )
find_path( AEC_INCLUDE_DIR szlib.h PATH_SUFFIXES include include/aec )
find_library( AEC_LIBRARY NAMES aec
PATHS ${AEC_DIR} ${AEC_PATH} ENV AEC_DIR ENV AEC_PATH
PATHS ${AEC_DIR} ${AEC_PATH} ${LIBAEC_DIR} ${libaec_DIR} ${LIBAEC_PATH} ${libaec_PATH} ENV AEC_DIR ENV AEC_PATH ENV LIBAEC_DIR ENV libaec_DIR ENV LIBAEC_PATH ENV libaec_PATH
PATH_SUFFIXES lib lib64 lib/aec lib64/aec NO_DEFAULT_PATH )
find_library( AEC_LIBRARY NAMES aec PATH_SUFFIXES lib lib64 lib/aec lib64/aec )

View File

@ -9,9 +9,11 @@ add_subdirectory(gts)
file(READ "grib_data_files.txt" files_to_download)
string(REGEX REPLACE "\n" ";" files_to_download "${files_to_download}")
if( HAVE_AEC )
list(APPEND files_to_download ccsds.grib2)
endif()
# Download the CCSDS file even if HAVE_AEC feature is disabled.
# This is for testing (See ECC-1352)
list(APPEND files_to_download ccsds.grib2)
if( ENABLE_EXTRA_TESTS )
# Download all data files

View File

@ -25,7 +25,7 @@ use Time::localtime;
use Getopt::Long;
my $SANITY_CHECK = 0;
my $WRITE_TO_FILES = 1;
my $WRITE_TO_FILES = 0;
my $WRITE_TO_PARAMDB = 0; # Be careful. Fill in $contactId before proceeding
# Process arguments. Must be at least one file
@ -113,7 +113,7 @@ if ($SANITY_CHECK) {
next;
}
$lcount++;
($paramId, $shortName) = split(/\t/);
($paramId, $shortName, $name, $units) = split(/\t/);
die "Error: shortName=$shortName is duplicated (line ", $lcount+1, ")\n" if (exists $map_sn{$shortName});
$map_sn{$shortName}++; # increment count in shortName map
@ -125,6 +125,10 @@ if ($SANITY_CHECK) {
my $x = $dbh->selectrow_array("select * from param.param where id = ?",undef,$paramId);
die "Error: paramId=$x exists in the database (line ", $lcount+1, ")\n" if (defined $x);
# Will die if it fails
get_db_units_code($units);
$x = $dbh->selectrow_array("select shortName from param.param where shortName = ?",undef,$shortName);
die "Error: shortName=$x exists in the database (line ", $lcount+1, ")\n" if (defined $x);
}
@ -174,6 +178,11 @@ while (<>) {
$scaleFactorWL2 = undef if ($scaleFactorWL2 =~ /missing/);
$scaledValueWL2 = undef if ($scaledValueWL2 =~ /missing/);
$scaledValue1 = undef if ($scaledValue1 =~ /missing/);
$scaleFactor1 = undef if ($scaleFactor1 =~ /missing/);
$scaledValue2 = undef if ($scaledValue2 =~ /missing/);
$scaleFactor2 = undef if ($scaleFactor2 =~ /missing/);
if ($WRITE_TO_FILES) {
write_out_file(\*OUT_PARAMID, $name, $paramId);
write_out_file(\*OUT_SHORTNAME, $name, $shortName);
@ -206,7 +215,7 @@ while (<>) {
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 (centre=$centre) ...\n";
print "Inserting paramId $paramId (centre=" . centre_as_str($centre) . ") ...\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) or die $dbh->errstr;
@ -220,10 +229,20 @@ while (<>) {
$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 "");
# Either missing or has a value
if (! defined $scaledValue1 || $scaledValue1 ne "") {
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,9, $scaledValue1,0);
}
if (! defined $scaleFactor1 || $scaleFactor1 ne "") {
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,7, $scaleFactor1,0);
}
if (! defined $scaledValue2 || $scaledValue2 ne "") {
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,14,$scaledValue2,0);
}
if (! defined $scaleFactor2 || $scaleFactor2 ne "") {
$dbh->do("insert into grib values (?,?,?,?,?,?)",undef, $paramId,$edition,$centre,15,$scaleFactor2,0);
}
$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 "");
@ -268,6 +287,12 @@ if ($WRITE_TO_PARAMDB) {
}
# -------------------------------------------------------------------
sub centre_as_str {
my $cc = shift;
return "WMO" if ($cc eq $centre_wmo);
return "ECMWF" if ($cc eq $centre_ecmwf);
return "Unknown";
}
sub get_db_units_code {
my $u = shift;
my $unit_id = $dbh->selectrow_array("select id from units where name = ?",undef,$u);
@ -290,6 +315,12 @@ sub write_out_file {
# Optional keys
print $outfile " typeOfFirstFixedSurface = $type1 ;\n" if ($type1 ne "");
print $outfile " typeOfSecondFixedSurface = $type2 ;\n" if ($type2 ne "");
$scaledValue1 = "missing()" if (! defined $scaledValue1);
$scaledValue2 = "missing()" if (! defined $scaledValue2);
$scaleFactor1 = "missing()" if (! defined $scaleFactor1);
$scaleFactor2 = "missing()" if (! defined $scaleFactor2);
print $outfile " scaledValueOfFirstFixedSurface = $scaledValue1 ;\n" if ($scaledValue1 ne "");
print $outfile " scaleFactorOfFirstFixedSurface = $scaleFactor1 ;\n" if ($scaleFactor1 ne "");
print $outfile " scaledValueOfSecondFixedSurface = $scaledValue2 ;\n" if ($scaledValue2 ne "");
@ -357,6 +388,8 @@ sub usage {
print <<USAGE;
Usage: $0 [-s] [-f] [-p] file.tsv
Input has to be a tab-separated values (TSV) file
-s Perform sanity checks and exit
-f Write out def files (paramId.def, name.def etc)
-p Write to Parameter Database (Be careful!)

View File

@ -75,8 +75,8 @@ if(matrixOfValues == 0)
decimalScaleFactor,
optimizeScaleFactor,
halfByte,
packingType,
grid_ieee
packingType
#grid_ieee
) : read_only;
alias data.packedValues = codedValues;
meta values data_apply_bitmap(codedValues,bitmap,missingValue,binaryScaleFactor) : dump;

View File

@ -73,26 +73,6 @@
parameterCategory = 1 ;
parameterNumber = 11 ;
}
#Sea surface practical salinity
'sea_surface_salinity' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 3 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
}
#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3
'ocean_mixed_layer_thickness_defined_by_sigma_theta' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 169 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 1 ;
scaleFactorOfFirstFixedSurface = 2 ;
}
#Particulate matter d <= 1 um
'mass_concentration_of_pm1_ambient_aerosol_particles_in_air' = {
discipline = 0 ;
@ -148,6 +128,54 @@
constituentType = 11 ;
is_chemical = 1 ;
}
#Sea surface salinity
'sea_surface_salinity' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 3 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Depth of 20 C isotherm
'depth_of_isosurface_of_sea_water_potential_temperature' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 20 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 29315 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Ocean mixed layer depth defined by sigma theta 0.01 kg m-3
'ocean_mixed_layer_thickness_defined_by_sigma_theta' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 169 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 1 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Sea surface height
'sea_surface_height_above_geoid' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Eastward sea water velocity
'eastward_sea_water_velocity' = {
discipline = 10 ;
@ -162,36 +190,6 @@
parameterNumber = 3 ;
typeOfFirstFixedSurface = 160 ;
}
#Sea surface height
'sea_surface_height_above_geoid' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
}
#Depth of 20C isotherm
'depth_of_isosurface_of_sea_water_potential_temperature' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 20 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 29315 ;
scaleFactorOfFirstFixedSurface = 2 ;
}
#Sea-ice thickness
'sea_ice_thickness' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
}
#Nitrogen dioxide mass mixing ratio
'mass_fraction_of_nitrogen_dioxide_in_air' = {
discipline = 0 ;

File diff suppressed because it is too large Load Diff

View File

@ -21,6 +21,7 @@
39 39 4DVar model errors for long window 4Dvar system
41 41 The Flood Awareness System
42 42 Lead Centre for Wave Forecast Verification
60 60 Ocean data analysis date and analysis time
192 192 Multiple ECMWF local definitions
300 300 Multi-dimensional parameters
500 500 Observation diagnostics

View File

@ -0,0 +1,21 @@
# (C) Copyright 2005- ECMWF.
# Local definition 60 - Ocean data analysis date and analysis time
unsigned[2] yearOfAnalysis = 0 : dump;
unsigned[1] monthOfAnalysis = 0 : dump;
unsigned[1] dayOfAnalysis = 0 : dump;
unsigned[1] hourOfAnalysis = 0 : dump;
unsigned[1] minuteOfAnalysis = 0 : dump;
constant secondsOfAnalysis = 0;
meta dateOfAnalysis g2date(yearOfAnalysis,monthOfAnalysis,dayOfAnalysis) : dump;
meta timeOfAnalysis time(hourOfAnalysis,minuteOfAnalysis,secondsOfAnalysis) : dump;
#alias mars.refdate = dateOfAnalysis;
#alias mars.reftime = timeOfAnalysis;
#alias mars.date = dateOfAnalysis;
#alias mars.time = timeOfAnalysis;
#alias mars.offdate = dataDate;
#alias mars.offtime = dataTime;

View File

@ -13860,6 +13860,33 @@
parameterCategory = 0 ;
parameterNumber = 200 ;
}
#Snow thickness over sea ice
'sisnthick' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Time-mean snow thickness over sea ice
'avg_sisnthick' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Stream function gradient
'strfgrd' = {
discipline = 192 ;

View File

@ -13860,6 +13860,33 @@
parameterCategory = 0 ;
parameterNumber = 200 ;
}
#Snow thickness over sea ice
'Snow thickness over sea ice' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Time-mean snow thickness over sea ice
'Time-mean snow thickness over sea ice' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Stream function gradient
'Stream function gradient' = {
discipline = 192 ;

View File

@ -13860,6 +13860,33 @@
parameterCategory = 0 ;
parameterNumber = 200 ;
}
#Snow thickness over sea ice
'262002' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Time-mean snow thickness over sea ice
'263002' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Stream function gradient
'129001' = {
discipline = 192 ;

View File

@ -13860,6 +13860,33 @@
parameterCategory = 0 ;
parameterNumber = 200 ;
}
#Snow thickness over sea ice
'sisnthick' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Time-mean snow thickness over sea ice
'avg_sisnthick' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Stream function gradient
'strfgrd' = {
discipline = 192 ;

View File

@ -13860,6 +13860,33 @@
parameterCategory = 0 ;
parameterNumber = 200 ;
}
#Snow thickness over sea ice
'm' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Time-mean snow thickness over sea ice
'm' = {
localTablesVersion = 1 ;
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 173 ;
typeOfSecondFixedSurface = 175 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Stream function gradient
'm**2 s**-1' = {
discipline = 192 ;

View File

@ -4,4 +4,69 @@
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 0 ;
}
#Sea surface practical salinity
'sea_surface_salinity' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 3 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3
'ocean_mixed_layer_thickness_defined_by_sigma_theta' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 169 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 1 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface height
'sea_surface_height_above_geoid' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Depth of 20C isotherm
'depth_of_isosurface_of_sea_water_potential_temperature' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 20 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 29315 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Sea-ice thickness
'sea_ice_thickness' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}

View File

@ -0,0 +1,108 @@
# Automatically generated by ./create_def.pl, do not edit
#Sea ice area fraction
'ci' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 0 ;
}
#2 metre dewpoint temperature
'd2m' = {
discipline = 0 ;
parameterCategory = 0 ;
parameterNumber = 6 ;
typeOfFirstFixedSurface = 103 ;
scaledValueOfFirstFixedSurface = 2 ;
scaleFactorOfFirstFixedSurface = 0 ;
}
#Mean sea water potential temperature in the upper 300 m
'mswpt300m' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 18 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface height
'zos' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Depth of 20C isotherm
't20d' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 20 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 29315 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Average salinity in the upper 300m
'sav300' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 21 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface practical salinity
'sos' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 3 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3
'mlotst010' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 169 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 1 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Sea-ice thickness
'sithick' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}

View File

@ -13,4 +13,95 @@
typeOfFirstFixedSurface = 103 ;
scaledValueOfFirstFixedSurface = 2 ;
scaleFactorOfFirstFixedSurface = 0 ;
}
#Mean sea water potential temperature in the upper 300 m
'Mean sea water potential temperature in the upper 300 m' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 18 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface practical salinity
'Sea surface practical salinity' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 3 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3
'Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 169 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 1 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface height
'Sea surface height' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Depth of 20C isotherm
'Depth of 20C isotherm' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 20 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 29315 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Average salinity in the upper 300m
'Average salinity in the upper 300m' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 21 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea-ice thickness
'Sea-ice thickness' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}

View File

@ -13,4 +13,95 @@
typeOfFirstFixedSurface = 103 ;
scaledValueOfFirstFixedSurface = 2 ;
scaleFactorOfFirstFixedSurface = 0 ;
}
#Mean sea water potential temperature in the upper 300 m
'151126' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 18 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface practical salinity
'151219' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 3 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3
'151225' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 169 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 1 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface height
'151145' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Depth of 20C isotherm
'151163' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 20 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 29315 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Average salinity in the upper 300m
'151175' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 21 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea-ice thickness
'174098' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}

View File

@ -13,4 +13,95 @@
typeOfFirstFixedSurface = 103 ;
scaledValueOfFirstFixedSurface = 2 ;
scaleFactorOfFirstFixedSurface = 0 ;
}
#Mean sea water potential temperature in the upper 300 m
'mswpt300m' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 18 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface practical salinity
'sos' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 3 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3
'mlotst010' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 169 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 1 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface height
'zos' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Depth of 20C isotherm
't20d' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 20 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 29315 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Average salinity in the upper 300m
'sav300' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 21 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea-ice thickness
'sithick' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}

View File

@ -13,4 +13,95 @@
typeOfFirstFixedSurface = 103 ;
scaledValueOfFirstFixedSurface = 2 ;
scaleFactorOfFirstFixedSurface = 0 ;
}
#Mean sea water potential temperature in the upper 300 m
'K' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 18 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface practical salinity
'psu' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 3 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Ocean mixed layer thickness defined by sigma theta 0.01 kg/m3
'm' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 169 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 1 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Sea surface height
'm' = {
discipline = 10 ;
parameterCategory = 3 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Depth of 20C isotherm
'm' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 14 ;
typeOfFirstFixedSurface = 20 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 29315 ;
scaleFactorOfFirstFixedSurface = 2 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}
#Average salinity in the upper 300m
'psu' = {
discipline = 10 ;
parameterCategory = 4 ;
parameterNumber = 21 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 160 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 300 ;
scaleFactorOfSecondFixedSurface = 0 ;
typeOfStatisticalProcessing = 0 ;
}
#Sea-ice thickness
'm' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
typeOfStatisticalProcessing = 0 ;
}

View File

@ -0,0 +1,11 @@
# Automatically generated by ./create_def.pl, do not edit
#Sea-ice thickness
'sea_ice_thickness' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
}

View File

@ -125,3 +125,37 @@
typeOfStatisticalProcessing = 1 ;
lengthOfTimeRange = 24 ;
}
#Sea ice surface temperature
'sist' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 8 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Snow on ice total depth
'sitd' = {
discipline = 0 ;
parameterCategory = 1 ;
parameterNumber = 11 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Sea-ice thickness
'sithick' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
}

View File

@ -124,4 +124,38 @@
indicatorOfUnitForTimeRange = 1 ;
typeOfStatisticalProcessing = 1 ;
lengthOfTimeRange = 24 ;
}
#Sea ice surface temperature
'Sea ice surface temperature' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 8 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Snow on ice total depth
'Snow on ice total depth' = {
discipline = 0 ;
parameterCategory = 1 ;
parameterNumber = 11 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Sea-ice thickness
'Sea-ice thickness' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
}

View File

@ -124,4 +124,38 @@
indicatorOfUnitForTimeRange = 1 ;
typeOfStatisticalProcessing = 1 ;
lengthOfTimeRange = 24 ;
}
#Sea ice surface temperature
'260649' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 8 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Snow on ice total depth
'260650' = {
discipline = 0 ;
parameterCategory = 1 ;
parameterNumber = 11 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Sea-ice thickness
'174098' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
}

View File

@ -124,4 +124,38 @@
indicatorOfUnitForTimeRange = 1 ;
typeOfStatisticalProcessing = 1 ;
lengthOfTimeRange = 24 ;
}
#Sea ice surface temperature
'sist' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 8 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Snow on ice total depth
'sitd' = {
discipline = 0 ;
parameterCategory = 1 ;
parameterNumber = 11 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Sea-ice thickness
'sithick' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
}

View File

@ -124,4 +124,38 @@
indicatorOfUnitForTimeRange = 1 ;
typeOfStatisticalProcessing = 1 ;
lengthOfTimeRange = 24 ;
}
#Sea ice surface temperature
'K' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 8 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Snow on ice total depth
'm' = {
discipline = 0 ;
parameterCategory = 1 ;
parameterNumber = 11 ;
typeOfFirstFixedSurface = 174 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = missing() ;
scaleFactorOfFirstFixedSurface = missing() ;
scaledValueOfSecondFixedSurface = missing() ;
scaleFactorOfSecondFixedSurface = missing() ;
}
#Sea-ice thickness
'm' = {
discipline = 10 ;
parameterCategory = 2 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 160 ;
typeOfSecondFixedSurface = 255 ;
scaledValueOfFirstFixedSurface = 0 ;
scaleFactorOfFirstFixedSurface = 0 ;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -48,7 +48,7 @@
150 150 Generalized vertical height coordinate
151 sol Soil level (Numeric)
# 152-159 Reserved
160 160 Depth below sea level (m)
160 o2d Depth below sea level (m)
161 161 Depth below water surface (m)
162 sfc Lake or river bottom (-)
163 163 Bottom of sediment layer (-)

View File

@ -0,0 +1 @@
192 192 Snow thickness over sea ice (m)

View File

@ -0,0 +1 @@
173 173 Top surface of snow, over ice, on sea, lake or river

View File

@ -77,7 +77,7 @@ if (extraDim) {
# ECC-1333: levtype should be read-only in GRIB2
concept mars.levtype(unknown,"marsLevtypeConcept.def",conceptsDir2,conceptsDir1):no_copy;
# GRIB-372: levelist alias does not pertain to surface parameters
if (levtype is "sfc") {
if (levtype is "sfc" || levtype is "o2d") {
unalias mars.levelist;
}
}

View File

@ -60,6 +60,8 @@
'mixedLayerDepthByDensity' = {typeOfFirstFixedSurface=169; typeOfSecondFixedSurface=255;}
'mixedLayerDepthByTemperature' = {typeOfFirstFixedSurface=170; typeOfSecondFixedSurface=255;}
'mixedLayerDepthByDiffusivity' = {typeOfFirstFixedSurface=171; typeOfSecondFixedSurface=255;}
'snowTopOverIceOnWater' = {typeOfFirstFixedSurface=173; typeOfSecondFixedSurface=255;}
'snowLayerOverIceOnWater' = {typeOfFirstFixedSurface=173; typeOfSecondFixedSurface=175;}
'iceTopOnWater' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=255;}
'iceLayerOnWater' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=176;}
'iceTopUnderSnowOnWater' = {typeOfFirstFixedSurface=175; typeOfSecondFixedSurface=255;}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
# aliasing MARS date and Time to the date and time defined in section 1,
alias mars.date = dataDate;
alias mars.time = dataTime;
# dateOfAnalysis and timeOfAnalysis still exist in this stream but is not used in MARS
unalias mars.step;
alias mars.step = stepRange;

View File

@ -0,0 +1,12 @@
# aliasing MARS date and Time to the date and time defined in local section,
# corresponding to the end of the Ocean NRT data assimilation
alias mars.date = dateOfAnalysis;
alias mars.time = timeOfAnalysis;
# aliasing the new offset date and time to the date and time
# coming fron the section 1, i.e. reference date and time
alias mars.offsetdate = dataDate;
alias mars.offsettime = dataTime;
unalias mars.step;
alias mars.step = stepRange;

View File

@ -110,6 +110,8 @@
1250 ewla Ensemble Wave Long window data assimilation
1251 wamd Wave monthly means of daily means
1252 gfas Global fire assimilation system
1253 ocda Ocean data assimilation
1254 olda Ocean Long window data assimilation
2231 cnrm Meteo France climate centre
2232 mpic Max Plank Institute
2233 ukmo UKMO climate centre

BIN
samples/ccsds_grib2.tmpl Normal file

Binary file not shown.

View File

@ -325,6 +325,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len)
case 28: /* COSMO local area EPS */
case 38: /* 4D variational increments for long window 4Dvar system */
case 39: /* 4DVar model errors for long window 4Dvar system */
case 60: /* Ocean data analysis */
case 192: /* Multiple ECMWF local definitions */
if (isInstant) {
productDefinitionTemplateNumberNew = 0;

View File

@ -150,21 +150,23 @@ static int unpack_string(grib_accessor* a, char* v, size_t* len)
{
double val = 0;
size_t l = 1;
char repres[1024];
char repres[1024] = {0,};
int err = 0;
grib_unpack_double(a, &val, &l);
err = grib_unpack_double(a, &val, &l);
if (err)
return err;
sprintf(repres, "%.0f", val);
l = strlen(repres) + 1;
if (l > *len) {
grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s",
grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_offset: unpack_string: Buffer too small for %s",
a->name);
*len = l;
return GRIB_BUFFER_TOO_SMALL;
}
grib_context_log(a->context, GRIB_LOG_DEBUG, "grib_accessor_long: Casting double %s to string", a->name);
grib_context_log(a->context, GRIB_LOG_DEBUG, "grib_accessor_offset: Casting double %s to string", a->name);
*len = l;

View File

@ -38,6 +38,7 @@ extern "C" {
#define GRIB_INLINE
#endif
/* See ECC-670 */
#if IS_BIG_ENDIAN
#if GRIB_MEM_ALIGN
#define FAST_BIG_ENDIAN 1

View File

@ -10,22 +10,28 @@
. ./include.sh
label="grib_ccsds_test"
REDIRECT=/dev/null
# Disable if autotools being used
src_config=${src_dir}/config.h
if [ -f ${src_config} ]; then
exit 0
fi
BLACKLIST="totalLength,section5Length,section7Length,dataRepresentationTemplateNumber"
infile=${data_dir}/ccsds.grib2
outfile1=$infile.tmp_ccsds.1
outfile2=$infile.tmp_ccsds.2
outfile1=temp.$label.1
outfile2=temp.$label.2
rm -f $outfile1 $outfile2
# Use the sample file with CCSDS packing
# ---------------------------------------
sample_ccsds=$ECCODES_SAMPLES_PATH/ccsds_grib2.tmpl
${tools_dir}/grib_filter -o $outfile1 - $sample_ccsds << EOF
set values = { 55.0161, 99.7008 };
write;
EOF
grib_check_key_equals $outfile1 packingType grid_ccsds
stats=`${tools_dir}/grib_get -M -F%.4f -p min,max $outfile1`
[ "$stats" = "55.0161 99.7008" ]
# ECC-1263
# ---------
grib2_sample=$ECCODES_SAMPLES_PATH/gg_sfc_grib2.tmpl
@ -94,6 +100,16 @@ grib_check_key_equals $outfile1 packingType grid_ccsds
${tools_dir}/grib_set -r -s packingType=grid_simple $infile $outfile2
${tools_dir}/grib_compare -c data:n $outfile1 $outfile2
# ECC-1352: Additional tests for bitsPerValue
# --------------------------------------------
infile=${data_dir}/sample.grib2
${tools_dir}/grib_set -r -s setBitsPerValue=16,packingType=grid_ccsds $infile $outfile1
${tools_dir}/grib_set -r -s setBitsPerValue=24,packingType=grid_ccsds $infile $outfile2
grib_check_key_equals $outfile1 packingType grid_ccsds
grib_check_key_equals $outfile2 packingType grid_ccsds
${tools_dir}/grib_compare -b $BLACKLIST $infile $outfile1
${tools_dir}/grib_compare -c data:n $outfile1 $outfile2
# Clean up
rm -f $outfile1 $outfile2

View File

@ -5,7 +5,9 @@
. ./include.sh
#set -x
label="grib_change_packing_test"
temp=temp.$label.grib
rm -f $temp
grib1=${data_dir}/reduced_latlon_surface_constant.grib1
grib2=${data_dir}/reduced_latlon_surface_constant.grib2
@ -25,8 +27,6 @@ if [ $HAVE_JPEG -eq 1 ]; then
packing2="grid_jpeg "$packing2
fi
temp=temp.change_packing.grib
rm -f $temp
# --- test changing the packing
# arg 1 : input grib file
@ -97,4 +97,19 @@ stats=`${tools_dir}/grib_get -F%.1f -p average,standardDeviation $temp`
[ "$stats" = "195.1 12.0" ]
rm -f $temp
# ECC-1352: Check CCSDS
# ----------------------------
temp_err=temp.$label.err
if [ $HAVE_AEC -eq 0 ]; then
# Check we get an error if we try to decode this packing
[ -f "${data_dir}/ccsds.grib2" ]
set +e
${tools_dir}/grib_get -p min,max ${data_dir}/ccsds.grib2 2>$temp_err
status=$?
set -e
[ $status -ne 0 ]
grep -q "CCSDS support not enabled. Please rebuild with -DENABLE_AEC=ON" $temp_err
fi
rm -f $temp $temp_err

View File

@ -59,10 +59,14 @@ static int scale_factor_missing(const char* value)
*/
static int grib_check_param_concepts(const char* key, const char* filename)
{
int isLocal = 0;
grib_concept_value* concept_value = grib_parse_concept_file(NULL, filename);
if (!concept_value)
return GRIB_IO_PROBLEM;
if (strstr(filename, "/localConcepts/")) {
isLocal = 1;
}
while (concept_value) {
grib_concept_condition* concept_condition = concept_value->conditions;
/* Convention:
@ -98,6 +102,11 @@ static int grib_check_param_concepts(const char* key, const char* filename)
key, concept_value->name, expression->cclass->name);
Assert(0);
}
if (!isLocal && strcmp(condition_name, "localTablesVersion") == 0) {
fprintf(stderr, "%s %s: Cannot have localTablesVersion key in WMO file %s!\n",
key, concept_value->name, filename);
return GRIB_INVALID_KEY_VALUE;
}
if (strcmp(condition_name, "typeOfFirstFixedSurface") == 0) {
type1Missing = type_of_surface_missing(condition_name, condition_value);
}

View File

@ -36,16 +36,32 @@ ${tools_dir}/grib_compare -r temp.$label.213 temp.$label.321
rm -f temp.$label.1 temp.$label.2 temp.$label.3 temp.$label.213 temp.$label.321
# ----------------------------------------
# ----------------------------------------------
# GRIB-797: test last argument being a directory
# ----------------------------------------
temp_dir=tempdir.grib_compare
# ----------------------------------------------
temp_dir=tempdir.$label
rm -rf $temp_dir
mkdir $temp_dir
cp $infile $temp_dir
${tools_dir}/grib_compare $infile $temp_dir
rm -rf $temp_dir
# ----------------------------------------
# ECC-1350: First arg is a directory
# ----------------------------------------
temp_dir=tempdir.$label
temp_err=temp.$label.err
rm -rf $temp_dir
mkdir $temp_dir
set +e
${tools_dir}/grib_compare $temp_dir $temp_dir 2>$temp_err
status=$?
set -e
[ $status -eq 1 ]
grep -q "ERROR:.*Is a directory" $temp_err
rm -rf $temp_dir
# ----------------------------------------
# ECC-245: blacklist and 2nd order packing
# ----------------------------------------

View File

@ -12,8 +12,10 @@
set -u
label="grib_ecc-1319-test"
temp=temp.$label.grib
temp=temp.$label.grib
temp1=temp1.$label.grib
temp2=temp2.$label.grib
sample_grib2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
typeOfLevels="
@ -65,12 +67,13 @@ done
# Also check specific cases
# --------------------------
# Sea ice surface temperature
${tools_dir}/grib_set -s paramId=260649 $sample_grib2 $temp
grib_check_key_equals $temp levtype o2d
# Snow on ice total depth
${tools_dir}/grib_set -s paramId=260650 $sample_grib2 $temp
grib_check_key_equals $temp levtype o2d
# 260649 = Sea ice surface temperature (UERRA)
${tools_dir}/grib_set -s productionStatusOfProcessedData=8 $sample_grib2 $temp1
${tools_dir}/grib_set -s paramId=260649 $temp1 $temp2
grib_check_key_equals $temp2 levtype sfc
# 260650 = Snow on ice total depth (UERRA)
${tools_dir}/grib_set -s paramId=260650 $temp1 $temp2
grib_check_key_equals $temp2 levtype sfc
# Lake ice surface temperature
${tools_dir}/grib_set -s paramId=228013 $sample_grib2 $temp
@ -81,4 +84,4 @@ grib_check_key_equals $temp levtype sfc
rm -f $temp
rm -f $temp $temp1 $temp2

View File

@ -15,11 +15,20 @@ sample_g1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl
temp=temp.$label.grib
${tools_dir}/grib_set -s marsType=fc,marsStream=wamo $sample_g1 $temp
grib_check_key_equals $temp "mars.date,monthlyVerificationDate" "20060301 20060301"
${tools_dir}/grib_dump $temp
# Date as string with month names
# --------------------------------
# Year missing
${tools_dir}/grib_set -s yearOfCentury=255 $sample_g1 $temp
grib_check_key_equals $temp "dataDate:s" "mar-16"
# Year and day missing
${tools_dir}/grib_set -s yearOfCentury=255,day=255 $sample_g1 $temp
grib_check_key_equals $temp "dataDate:s" "mar"
# Clean up
rm -f $temp

View File

@ -24,6 +24,7 @@ temp_jpeg2=${label}".jpeg2.tmp"
temp_png1=${label}".png1.tmp"
temp_png2=${label}".png2.tmp"
temp_ieee1=${label}".ieee1.tmp"
temp_ieee2=${label}".ieee2.tmp"
# Simple Packing
# ----------------
@ -72,12 +73,20 @@ if [ $HAVE_JPEG -eq 1 ]; then
${tools_dir}/grib_compare $temp_jpeg1 $temp_jpeg2
${tools_dir}/grib_compare -c data:n $temp_simple1 $temp_jpeg1
${tools_dir}/grib_ls -n statistics $temp_jpeg1
fi
# IEEE
# ------------
# tests/grib_packing_order grid_ieee values_before_packing_type x2 # Does not work
#tests/grib_packing_order grid_ieee values_before_packing_type x2 # Does not work
$EXEC ${test_dir}/grib_packing_order grid_ieee packing_type_before_values $temp_ieee1
$EXEC ${test_dir}/grib_packing_order grid_ieee values_before_packing_type $temp_ieee2
${tools_dir}/grib_ls -n statistics $temp_ieee1 $temp_ieee2
# TODO
# ${tools_dir}/grib_compare $temp_ieee1 $temp_ieee2
# No point comparing with grid_simple as grid_ieee will be closer to the actual values
# and less lossy
@ -87,4 +96,4 @@ rm -f $temp_second1 $temp_second2
rm -f $temp_png1 $temp_png2
rm -f $temp_ccsds1 $temp_ccsds2
rm -f $temp_jpeg1 $temp_jpeg2
rm -f $temp_ieee1
rm -f $temp_ieee1 $temp_ieee2

View File

@ -26,9 +26,6 @@ levtype=`${tools_dir}/grib_get -p levtype $outfile`
centre=`${tools_dir}/grib_get -p centre $outfile`
[ $centre = "cnmc" ]
#levtype=`${tools_dir}/grib_get -p levtype:l $outfile`
#[ $levtype -eq 100 ]
centre=`${tools_dir}/grib_get -p centre:l $outfile`
[ $centre -eq 80 ]
@ -106,5 +103,15 @@ status=$?
set -e
[ $status -ne 0 ]
# offsetValuesBy
# ------------------
input=${data_dir}/reduced_latlon_surface.grib2
${tools_dir}/grib_set -s offsetValuesBy=0.5 $input $temp
max=`${tools_dir}/grib_get -F%.3f -p max $input`
[ "$max" = "12.597" ]
max=`${tools_dir}/grib_get -F%.3f -p max $temp`
[ "$max" = "13.097" ]
rm -f $outfile $temp

View File

@ -10,25 +10,58 @@
. ./include.sh
label="grib_tigge_check_test"
REDIRECT=/dev/null
TEMP=temp.$label.tigge
dir="${data_dir}/tigge/"
# check tigge global
for file in ${dir}tigge_*.grib
do
# Parameter 168: at 2m and 1.5m above ground
# -------------------------------------------
sample_g2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
${tools_dir}/grib_filter -o $TEMP - $sample_g2 << EOF
set centre = "ammc";
set productionStatusOfProcessedData=4; # TIGGE
set discipline=0;
set parameterCategory=0;
set parameterNumber=6;
set typeOfFirstFixedSurface=103;
set scaledValueOfFirstFixedSurface=15;
set scaleFactorOfFirstFixedSurface=1;
write;
EOF
grib_check_key_equals $TEMP paramId,shortName '168 2d'
${tools_dir}/grib_filter -o $TEMP - $sample_g2 << EOF
set centre = "ammc";
set productionStatusOfProcessedData=4; # TIGGE
set discipline=0;
set parameterCategory=0;
set parameterNumber=6;
set typeOfFirstFixedSurface=103;
set scaledValueOfFirstFixedSurface=2;
set scaleFactorOfFirstFixedSurface=0;
write;
EOF
grib_check_key_equals $TEMP paramId,shortName '168 2d'
# Check tigge global
# ------------------
for file in ${dir}tigge_*.grib; do
${tigge_dir}/tigge_check ${file} 2> $REDIRECT > $REDIRECT
done
# check tigge-lam
for file in ${dir}tiggelam_*.grib
do
# Check tigge-lam
# ------------------
for file in ${dir}tiggelam_*.grib; do
${tigge_dir}/tigge_check -l ${file} 2> $REDIRECT > $REDIRECT
done
# Test non-TIGGE files too. We now expect tigge_check to fail!
# All the GRIB files in the samples are non-TIGGE
# -------------------------------------------------------------
for file in ${ECCODES_SAMPLES_PATH}/regular_*.tmpl; do
set +e
${tigge_dir}/tigge_check ${file} 2> $REDIRECT > $REDIRECT
@ -40,13 +73,15 @@ for file in ${ECCODES_SAMPLES_PATH}/regular_*.tmpl; do
fi
done
# GRIB-531
TEMP=temp.$$.tigge
# ---------
${tools_dir}/grib_get -nparameter ${data_dir}/tigge_pf_ecmwf.grib2 > $TEMP
diff ${data_dir}/tigge_pf_ecmwf.grib2.ref $TEMP
# GRIB-205. Changing productionStatusOfProcessedData should not change
# anything else
# GRIB-205. Changing productionStatusOfProcessedData
# should not change anything else
# ---------------------------------------------------
input=${dir}/tigge_ecmf_sfc_sd.grib
${tools_dir}/grib_set -s productionStatusOfProcessedData=5 $input $TEMP
${tools_dir}/grib_compare -bproductionStatusOfProcessedData $input $TEMP

View File

@ -252,6 +252,9 @@ int grib_tool_init(grib_runtime_options* options)
context->blocklist = blocklist;
}
/* Check 1st file is not a directory */
exit_if_input_is_directory(tool_name, options->infile_extra->name);
if (grib_options_on("r")) {
char* filename[1];
filename[0] = options->infile_extra->name; /* First file */