mirror of https://github.com/ecmwf/eccodes.git
Merge branch 'develop' into feature/FireInMars
This commit is contained in:
commit
47d0b580c6
|
@ -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 ^
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 )
|
||||
|
|
|
@ -16,5 +16,6 @@ module unload libemos
|
|||
module unload metview
|
||||
|
||||
module load cmake/3.16.5
|
||||
module load aec
|
||||
|
||||
module switch gnu clang
|
||||
|
|
|
@ -15,3 +15,5 @@ module unload libemos
|
|||
module unload metview
|
||||
|
||||
module load cmake/3.16.5
|
||||
module load aec
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 )
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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!)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
@ -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
|
||||
|
|
|
@ -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;
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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 ;
|
||||
}
|
||||
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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 ;
|
||||
}
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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
|
@ -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 (-)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
192 192 Snow thickness over sea ice (m)
|
|
@ -0,0 +1 @@
|
|||
173 173 Top surface of snow, over ice, on sea, lake or river
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
@ -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;
|
|
@ -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;
|
|
@ -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
|
||||
|
|
Binary file not shown.
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
# ----------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue