mirror of https://github.com/ecmwf/eccodes.git
Merge release/2.25.0 to master
This commit is contained in:
commit
6efa9fc528
|
@ -2,7 +2,7 @@
|
|||
# general configuration #
|
||||
#---------------------------------#
|
||||
|
||||
version: 2.24.3-{build}-{branch}
|
||||
version: 2.25.0-{build}-{branch}
|
||||
|
||||
branches:
|
||||
only:
|
||||
|
@ -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
|
||||
|
|
|
@ -21,27 +21,29 @@ cmake_minimum_required( VERSION 3.12 FATAL_ERROR )
|
|||
find_package( ecbuild 3.4 REQUIRED HINTS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../ecbuild)
|
||||
|
||||
# Initialise project
|
||||
project( eccodes VERSION 2.24.3 LANGUAGES C )
|
||||
project( eccodes VERSION 2.25.0 LANGUAGES C )
|
||||
|
||||
###############################################################################
|
||||
# system checks needed for eccodes_config.h and some options like MEMFS
|
||||
|
||||
check_type_size( int ECCODES_SIZEOF_INT )
|
||||
check_type_size( long ECCODES_SIZEOF_LONG )
|
||||
check_type_size( size_t ECCODES_SIZEOF_SIZE_T )
|
||||
check_type_size( int ECCODES_SIZEOF_INT )
|
||||
check_type_size( long ECCODES_SIZEOF_LONG )
|
||||
check_type_size( size_t ECCODES_SIZEOF_SIZE_T )
|
||||
|
||||
check_include_files( assert.h ECCODES_HAVE_ASSERT_H )
|
||||
check_include_files( string.h ECCODES_HAVE_STRING_H )
|
||||
check_include_files( sys/types.h ECCODES_HAVE_SYS_TYPES_H )
|
||||
check_include_files( sys/stat.h ECCODES_HAVE_SYS_STAT_H )
|
||||
check_include_files( fcntl.h ECCODES_HAVE_FCNTL_H )
|
||||
check_include_files( unistd.h ECCODES_HAVE_UNISTD_H )
|
||||
check_include_files( assert.h ECCODES_HAVE_ASSERT_H )
|
||||
check_include_files( string.h ECCODES_HAVE_STRING_H )
|
||||
check_include_files( sys/types.h ECCODES_HAVE_SYS_TYPES_H )
|
||||
check_include_files( sys/stat.h ECCODES_HAVE_SYS_STAT_H )
|
||||
check_include_files( fcntl.h ECCODES_HAVE_FCNTL_H )
|
||||
check_include_files( unistd.h ECCODES_HAVE_UNISTD_H )
|
||||
|
||||
check_symbol_exists( fseeko "stdio.h" ECCODES_HAVE_FSEEKO )
|
||||
check_symbol_exists( posix_memalign "stdlib.h" ECCODES_HAVE_POSIX_MEMALIGN )
|
||||
check_symbol_exists( fmemopen "stdio.h" ECCODES_HAVE_FMEMOPEN )
|
||||
check_symbol_exists( funopen "stdio.h" ECCODES_HAVE_FUNOPEN )
|
||||
check_symbol_exists( realpath "stdlib.h" ECCODES_HAVE_REALPATH )
|
||||
check_symbol_exists( fseeko "stdio.h" ECCODES_HAVE_FSEEKO )
|
||||
check_symbol_exists( posix_memalign "stdlib.h" ECCODES_HAVE_POSIX_MEMALIGN )
|
||||
check_symbol_exists( fmemopen "stdio.h" ECCODES_HAVE_FMEMOPEN )
|
||||
check_symbol_exists( funopen "stdio.h" ECCODES_HAVE_FUNOPEN )
|
||||
check_symbol_exists( realpath "stdlib.h" ECCODES_HAVE_REALPATH )
|
||||
check_symbol_exists( fsync "unistd.h" ECCODES_HAVE_FSYNC)
|
||||
check_symbol_exists( fdatasync "unistd.h" ECCODES_HAVE_FDATASYNC)
|
||||
|
||||
check_c_source_compiles(
|
||||
" typedef int foo_t;
|
||||
|
@ -113,9 +115,15 @@ ecbuild_add_option( FEATURE NETCDF
|
|||
NO_TPL )
|
||||
|
||||
find_package( AEC )
|
||||
if(NOT DEFINED ENABLE_AEC AND NOT AEC_FOUND)
|
||||
ecbuild_critical("AEC library was not found.\n"
|
||||
"AEC (Adaptive Entropy Coding) provides the WMO GRIB CCSDS compression and decompression of data. "
|
||||
"This 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 )
|
||||
|
@ -183,7 +191,7 @@ ecbuild_add_option( FEATURE MEMORY_MANAGEMENT DESCRIPTION "Enable memory manag
|
|||
ecbuild_add_option( FEATURE ALIGN_MEMORY DESCRIPTION "Enable memory alignment" DEFAULT OFF ADVANCED )
|
||||
ecbuild_add_option( FEATURE TIMER DESCRIPTION "Enable timer" DEFAULT OFF ADVANCED )
|
||||
ecbuild_add_option( FEATURE ECCODES_THREADS DESCRIPTION "Enable POSIX threads" DEFAULT OFF ADVANCED )
|
||||
ecbuild_add_option( FEATURE ECCODES_OMP_THREADS DESCRIPTION "Enable OMP threads" DEFAULT OFF ADVANCED )
|
||||
ecbuild_add_option( FEATURE ECCODES_OMP_THREADS DESCRIPTION "Enable OpenMP threads" DEFAULT OFF ADVANCED )
|
||||
ecbuild_add_option( FEATURE EXTRA_TESTS DESCRIPTION "Enable extended regression testing" DEFAULT OFF ADVANCED )
|
||||
|
||||
###############################################################################
|
||||
|
@ -285,11 +293,11 @@ endif()
|
|||
|
||||
# Cannot have both options
|
||||
if( HAVE_ECCODES_THREADS AND HAVE_ECCODES_OMP_THREADS )
|
||||
ecbuild_critical("Cannot enable both POSIX threads and OMP! Please specify just one option")
|
||||
ecbuild_critical("Cannot enable both POSIX threads and OpenMP! Please specify just one option")
|
||||
endif()
|
||||
|
||||
ecbuild_info(" GRIB_PTHREADS=${GRIB_PTHREADS}")
|
||||
ecbuild_info(" GRIB_OMP_THREADS=${GRIB_OMP_THREADS}")
|
||||
ecbuild_info(" POSIX THREADS = ${GRIB_PTHREADS}")
|
||||
ecbuild_info(" OpenMP THREADS= ${GRIB_OMP_THREADS}")
|
||||
|
||||
set( GRIB_MEM_ALIGN 0 )
|
||||
if( ENABLE_ALIGN_MEMORY )
|
||||
|
@ -306,6 +314,11 @@ if( IEEE_LE )
|
|||
set( IEEE_BE 0 )
|
||||
endif()
|
||||
|
||||
set( ECCODES_ON_LINUX_32BIT 0 )
|
||||
if( EC_OS_NAME MATCHES "linux" AND EC_OS_BITS EQUAL "32" )
|
||||
set( ECCODES_ON_LINUX_32BIT 1 )
|
||||
endif()
|
||||
|
||||
set( ECCODES_ON_WINDOWS 0 )
|
||||
if( EC_OS_NAME MATCHES "windows" )
|
||||
# Symbols need to be explicitly exported on Windows so we can link to dlls.
|
||||
|
|
2
NOTICE
2
NOTICE
|
@ -3,7 +3,7 @@ ECMWF ecCodes
|
|||
|
||||
This product includes software developed at ECMWF (http://www.ecmwf.int).
|
||||
|
||||
Parts of the definitions provided by WMO (http://www.wmo.int/pages/index_en.html)
|
||||
Parts of the definitions provided by WMO (https://public.wmo.int/en)
|
||||
|
||||
Microsoft Visual Studio support provided with the help of
|
||||
Finnish Meteorological Institute (FMI).
|
||||
|
|
|
@ -22,12 +22,12 @@ It is designed to provide the user with a simple set of functions to access data
|
|||
several formats with a key/value approach.
|
||||
|
||||
Documentation can be found here:
|
||||
https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home
|
||||
https://confluence.ecmwf.int/display/ECC/ecCodes+Home
|
||||
|
||||
INSTALLATION
|
||||
------------
|
||||
|
||||
1. Download ecCodes from https://software.ecmwf.int/wiki/display/ECC/Releases
|
||||
1. Download ecCodes from https://confluence.ecmwf.int/display/ECC/Releases
|
||||
|
||||
2. Unpack distribution:
|
||||
```
|
||||
|
@ -65,7 +65,7 @@ To add the Python3 bindings, use pip3 install from PyPI as follows:
|
|||
|
||||
|
||||
For more details, please see:
|
||||
https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation
|
||||
https://confluence.ecmwf.int/display/ECC/ecCodes+installation
|
||||
|
||||
If you encounter any problems please send an e-mail with your problem to:
|
||||
|
||||
|
|
|
@ -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
|
||||
find_path( AEC_INCLUDE_DIR libaec.h
|
||||
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_path( AEC_INCLUDE_DIR libaec.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
|
||||
|
@ -35,7 +37,6 @@ list(APPEND other_files
|
|||
multi_step.txt
|
||||
no_bitmap.diff
|
||||
read_any.ok
|
||||
scan_x_regular_gg_5_7_good.dump
|
||||
scan_x_regular_ll_5_4_good.dump
|
||||
scan_x_regular_ll_5_7_good.dump
|
||||
scan_x_regular_ll_8_4_good.dump
|
||||
|
|
|
@ -5,12 +5,12 @@ GRIB {
|
|||
# European Centre for Medium-Range Weather Forecasts (common/c-1.table)
|
||||
centre = 98;
|
||||
generatingProcessIdentifier = 130;
|
||||
# Temperature (K) (grib1/2.98.128.table)
|
||||
# Temperature (K) (grib1/2.98.128.table)
|
||||
indicatorOfParameter = 130;
|
||||
# Hybrid level level number (2 octets) (grib1/local/ecmf/3.table , grib1/3.table)
|
||||
# Hybrid level level number (2 octets) (grib1/local/ecmf/3.table , grib1/3.table)
|
||||
indicatorOfTypeOfLevel = 109;
|
||||
level = 1;
|
||||
# Forecast product valid at reference time + P1 (P1>0) (grib1/local/ecmf/5.table , grib1/5.table)
|
||||
# Forecast product valid at reference time + P1 (P1>0) (grib1/local/ecmf/5.table , grib1/5.table)
|
||||
timeRangeIndicator = 0;
|
||||
# Unknown code table entry (grib1/0.ecmf.table)
|
||||
subCentre = 0;
|
||||
|
|
|
@ -5,12 +5,12 @@ GRIB {
|
|||
# European Centre for Medium-Range Weather Forecasts (common/c-1.table)
|
||||
centre = 98;
|
||||
generatingProcessIdentifier = 130;
|
||||
# Temperature (K) (grib1/2.98.128.table)
|
||||
# Temperature (K) (grib1/2.98.128.table)
|
||||
indicatorOfParameter = 130;
|
||||
# Hybrid level level number (2 octets) (grib1/local/ecmf/3.table , grib1/3.table)
|
||||
# Hybrid level level number (2 octets) (grib1/local/ecmf/3.table , grib1/3.table)
|
||||
indicatorOfTypeOfLevel = 109;
|
||||
level = 1;
|
||||
# Forecast product valid at reference time + P1 (P1>0) (grib1/local/ecmf/5.table , grib1/5.table)
|
||||
# Forecast product valid at reference time + P1 (P1>0) (grib1/local/ecmf/5.table , grib1/5.table)
|
||||
timeRangeIndicator = 0;
|
||||
# Unknown code table entry (grib1/0.ecmf.table)
|
||||
subCentre = 0;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
ecmf 165 10u m s**-1 10 metre U wind component
|
||||
ecmf 166 10v m s**-1 10 metre V wind component
|
||||
ecmf 59 cape J kg**-1 Convective available potential energy
|
||||
ecmf 156 gh gpm Geopotential Height
|
||||
ecmf 156 gh gpm Geopotential height
|
||||
ecmf 151 msl Pa Mean sea level pressure
|
||||
ecmf 179 ttr J m**-2 Top net thermal radiation
|
||||
ecmf 3 pt K Potential temperature
|
||||
|
@ -9,8 +9,8 @@ ecmf 60 pv K m**2 kg**-1 s**-1 Potential vorticity
|
|||
ecmf 235 skt K Skin temperature
|
||||
ecmf 228141 sd kg m**-2 Snow depth water equivalent
|
||||
ecmf 228144 sf kg m**-2 Snow Fall water equivalent
|
||||
ecmf 228039 sm kg m**-3 Soil Moisture
|
||||
ecmf 228139 st K Soil Temperature
|
||||
ecmf 228039 sm kg m**-3 Soil moisture
|
||||
ecmf 228139 st K Soil temperature
|
||||
ecmf 133 q kg kg**-1 Specific humidity
|
||||
ecmf 189 sund s Sunshine duration
|
||||
ecmf 168 2d K 2 metre dewpoint temperature
|
||||
|
|
|
@ -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!)
|
||||
|
|
|
@ -11,18 +11,17 @@ position startOfHeaders;
|
|||
ascii[4] identifier;
|
||||
|
||||
alias ls.identifier=identifier;
|
||||
transient missingValue = 9999;
|
||||
transient missingValue = 9999;
|
||||
constant ieeeFloats = 0: edition_specific;
|
||||
constant zero=0:hidden;
|
||||
|
||||
template section1 "budg/section.1.def";
|
||||
template mars_labeling "budg/mars_labeling.def";
|
||||
template section4 "budg/section.4.def";
|
||||
ascii[4] endMark;
|
||||
position totalLength;
|
||||
|
||||
template section1 "budg/section.1.def";
|
||||
template mars_labeling "budg/mars_labeling.def";
|
||||
template section4 "budg/section.4.def";
|
||||
ascii[4] endMark;
|
||||
position totalLength;
|
||||
|
||||
# This needs to be there for the MARS server, so the totalLength is processed correctly
|
||||
position endOfHeadersMarker;
|
||||
position endOfHeadersMarker;
|
||||
meta lengthOfHeaders evaluate( endOfHeadersMarker-startOfHeaders);
|
||||
meta md5Headers md5(startOfHeaders,lengthOfHeaders);
|
||||
|
|
|
@ -20,8 +20,6 @@ codetable[1] indicatorOfTypeOfLevel 'grib1/3.table';
|
|||
codetable[2] heightPressureEtcOfLevels 'grib1/3.table';
|
||||
alias ls.levelType=indicatorOfTypeOfLevel;
|
||||
|
||||
# Year of century
|
||||
# NOTE 6 NOT FOUND
|
||||
unsigned[1] yearOfCentury ;
|
||||
|
||||
unsigned[1] month ;
|
||||
|
@ -39,14 +37,12 @@ meta julianDay julian_day(dataDate,hour,minute,second) : edition_specific;
|
|||
# Indicator of unit of time range
|
||||
codetable[1] indicatorOfUnitOfTimeRange 'grib1/4.table';
|
||||
|
||||
# P1 - Period of time
|
||||
# (number of time units)
|
||||
# P1 - Period of time (number of time units)
|
||||
unsigned[1] periodOfTime ;
|
||||
|
||||
alias P1 = periodOfTime ;
|
||||
|
||||
# P2 - Period of time
|
||||
# (number of time units)
|
||||
# P2 - Period of time (number of time units)
|
||||
unsigned[1] periodOfTimeIntervals ;
|
||||
|
||||
alias P2 = periodOfTimeIntervals ;
|
||||
|
|
|
@ -44,7 +44,7 @@ if (numberOfChars >= 12) {
|
|||
|
||||
alias expver=experimentVersionNumber;
|
||||
alias marsExpver=experimentVersionNumber;
|
||||
|
||||
|
||||
constant numberOfRemaininChars = numberOfChars - 12;
|
||||
|
||||
charValues list(numberOfRemaininChars) {
|
||||
|
|
|
@ -26,10 +26,10 @@ if (masterTablesVersionNumber == 19) {
|
|||
}
|
||||
constant rootTablesDir="bufr/tables" : hidden;
|
||||
|
||||
meta clearTables bufr_clear_tables() = 0 : hidden,no_copy;
|
||||
#meta clearTables bufr_clear_tables() = 0 : hidden,no_copy;
|
||||
|
||||
when (changed(tablesMasterDir)) { set clearTables=1;}
|
||||
when (changed(tablesLocalDir)) { set clearTables=1;}
|
||||
#when (changed(tablesMasterDir)) { set clearTables=1;}
|
||||
#when (changed(tablesLocalDir)) { set clearTables=1;}
|
||||
|
||||
# we should implement some table version dependency
|
||||
#constant templatesMasterDir="bufr/templates/[masterTableNumber]/[masterTablesVersionNumber]";
|
||||
|
|
|
@ -62,5 +62,3 @@
|
|||
"Siral" = { unexpandedDescriptors = 312071 ; }
|
||||
"IasiL1c" = { unexpandedDescriptors = 340007 ; }
|
||||
"SaralAltika" = { unexpandedDescriptors = 340011 ; }
|
||||
|
||||
|
||||
|
|
|
@ -9,9 +9,10 @@ use DBI;
|
|||
my $basedir = dirname($0);
|
||||
|
||||
my $db="param";
|
||||
my $host="grib-param-db-test.ecmwf.int";
|
||||
my $user="ecmwf_ro";
|
||||
my $pass="ecmwf_ro";
|
||||
my $host = $ENV{'PARAM_DB_HOST'} || 'unknown';
|
||||
my $user = $ENV{'PARAM_DB_USER'} || 'unknown';
|
||||
my $pass = $ENV{'PARAM_DB_PASS'} || 'unknown';
|
||||
|
||||
my $filename; my $filebase; my $out; my $conceptDir;
|
||||
my $query; my $q; my $qh;
|
||||
|
||||
|
@ -56,7 +57,7 @@ EOF
|
|||
mkpath($filebase);
|
||||
|
||||
print TAR "grib$edition$conceptDir/$key.def\n";
|
||||
system("cp -f $filebase/$key.def $filebase/$key.def.orig");
|
||||
#system("cp -f $filebase/$key.def $filebase/$key.def.orig");
|
||||
open($out,"> $filebase/$key.def")
|
||||
or die "unable to open $filebase/$key.def";
|
||||
print $out "# Automatically generated by $0, do not edit\n";
|
||||
|
@ -99,11 +100,11 @@ sub create_def {
|
|||
if ($key =~ /units/) { $field="units.name"; }
|
||||
|
||||
my $query= <<"EOF";
|
||||
select $field,force128,edition,
|
||||
centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName
|
||||
from param,grib,attribute,centre,units where param.hide_def=0 and param.id=grib.param_id
|
||||
and attribute.id=grib.attribute_id and centre.id=grib.centre and units.id=param.units_id
|
||||
order by edition,centre,param.o,param.id,grib.param_version,attribute.o;
|
||||
select $field,force128,edition,
|
||||
centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName
|
||||
from param,grib,attribute,centre,units where param.hide_def=0 and param.id=grib.param_id
|
||||
and attribute.id=grib.attribute_id and centre.id=grib.centre and units.id=param.units_id
|
||||
order by edition,centre,param.o,param.id,grib.param_version,attribute.o;
|
||||
EOF
|
||||
|
||||
my $qh=$dbh->prepare($query);
|
||||
|
@ -135,8 +136,7 @@ EOF
|
|||
# or die ("unable to copy $filebase/$key.def");
|
||||
|
||||
print TAR "grib$edition$conceptDir/$key.def\n";
|
||||
system("cp -f $filebase/$key.def $filebase/$key.def.orig");
|
||||
#system("p4 edit $filebase/$key.def");
|
||||
#system("cp -f $filebase/$key.def $filebase/$key.def.orig");
|
||||
open($out,"> $filebase/$key.def")
|
||||
or die "unable to open $filebase/$key.def";
|
||||
print $out "# Automatically generated by $0, do not edit\n";
|
||||
|
@ -170,19 +170,19 @@ EOF
|
|||
}
|
||||
|
||||
sub create_paramId_def {
|
||||
my $p; my %seen;
|
||||
my $p; my %seen;
|
||||
|
||||
my $query="select edition,centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName
|
||||
from param,grib,attribute,centre where param.hide_def=0 and param.id=grib.param_id
|
||||
and attribute.id=grib.attribute_id and centre.id=grib.centre
|
||||
order by edition,centre,param.o,param.id,attribute.o";
|
||||
my $query="select edition,centre.abbreviation,param_id,attribute.name,attribute_value,param.name,param.shortName
|
||||
from param,grib,attribute,centre where param.hide_def=0 and param.id=grib.param_id
|
||||
and attribute.id=grib.attribute_id and centre.id=grib.centre
|
||||
order by edition,centre,param.o,param.id,attribute.o";
|
||||
|
||||
my $qh=$dbh->prepare($query);
|
||||
$qh->execute();
|
||||
my $qh=$dbh->prepare($query);
|
||||
$qh->execute();
|
||||
|
||||
while (my ($edition,$centre,$paramId,$attribute,$value,$name,$shortName)=$qh->fetchrow_array )
|
||||
{
|
||||
if ($centre eq "all" ) { $conceptDir=""; }
|
||||
while (my ($edition,$centre,$paramId,$attribute,$value,$name,$shortName)=$qh->fetchrow_array )
|
||||
{
|
||||
if ($centre eq "all" ) { $conceptDir=""; }
|
||||
else { $conceptDir="/localConcepts/$centre"; }
|
||||
|
||||
if ($filebase ne "$basedir/grib$edition$conceptDir") {
|
||||
|
@ -191,27 +191,26 @@ sub create_paramId_def {
|
|||
close $out;
|
||||
}
|
||||
$filebase="$basedir/grib$edition$conceptDir";
|
||||
mkpath($filebase);
|
||||
mkpath($filebase);
|
||||
|
||||
copy("$filebase/paramId.def","$filebase/paramId.def.bkp")
|
||||
or die ("unable to copy $filebase/paramId.def");
|
||||
system("p4 edit $filebase/paramId.def");
|
||||
or die ("unable to copy $filebase/paramId.def");
|
||||
open($out,"> $filebase/paramId.def")
|
||||
or die "unable to open $filebase/paramId.def";
|
||||
print $out "# Automatically generated by $0, do not edit\n";
|
||||
$p=();
|
||||
}
|
||||
if ($p ne $paramId || exists($seen{$attribute}) ) {
|
||||
if ($p) { print $out "\t}\n"; }
|
||||
print $out "#$name\n" ;
|
||||
print $out "\'".$paramId."\' = {\n" ;
|
||||
$p=$paramId;
|
||||
%seen=();
|
||||
}
|
||||
$seen{$attribute}=1;
|
||||
print "$edition,$centre,$shortName,$paramId,$name,$attribute,$value\n";
|
||||
print $out "\t $attribute = $value ;\n" ;
|
||||
}
|
||||
if ($p ne $paramId || exists($seen{$attribute}) ) {
|
||||
if ($p) { print $out "\t}\n"; }
|
||||
print $out "#$name\n" ;
|
||||
print $out "\'".$paramId."\' = {\n" ;
|
||||
$p=$paramId;
|
||||
%seen=();
|
||||
}
|
||||
$seen{$attribute}=1;
|
||||
print "$edition,$centre,$shortName,$paramId,$name,$attribute,$value\n";
|
||||
print $out "\t $attribute = $value ;\n" ;
|
||||
}
|
||||
if ($filebase) {
|
||||
print $out "}\n";
|
||||
close $out;
|
||||
|
@ -219,14 +218,14 @@ sub create_paramId_def {
|
|||
}
|
||||
|
||||
sub create_def_old {
|
||||
my ($key,$query)=@_;
|
||||
my ($key,$query)=@_;
|
||||
|
||||
my $qh=$dbh->prepare($query);
|
||||
$qh->execute();
|
||||
my $qh=$dbh->prepare($query);
|
||||
$qh->execute();
|
||||
|
||||
while (my ($edition,$centre,$paramId,$value)=$qh->fetchrow_array )
|
||||
{
|
||||
if ($centre eq "all" ) { $conceptDir=""; }
|
||||
while (my ($edition,$centre,$paramId,$value)=$qh->fetchrow_array )
|
||||
{
|
||||
if ($centre eq "all" ) { $conceptDir=""; }
|
||||
else { $conceptDir="/localConcepts/$centre"; }
|
||||
|
||||
if ($filebase ne "$basedir/grib$edition$conceptDir") {
|
||||
|
@ -234,17 +233,16 @@ sub create_def_old {
|
|||
close $out;
|
||||
}
|
||||
$filebase="$basedir/grib$edition$conceptDir";
|
||||
mkpath($filebase);
|
||||
mkpath($filebase);
|
||||
|
||||
copy("$filebase/$key.def","$filebase/$key.def.bkp")
|
||||
or die ("unable to copy $filebase/$key.def");
|
||||
system("p4 edit $filebase/$key.def");
|
||||
or die ("unable to copy $filebase/$key.def");
|
||||
open($out,"> $filebase/$key.def")
|
||||
or die "unable to open $filebase/$key.def";
|
||||
print $out "# Automatically generated by $0, do not edit\n";
|
||||
}
|
||||
print $out "\'$value\' \t= { paramId=$paramId; }\n";
|
||||
}
|
||||
print $out "\'$value\' \t= { paramId=$paramId; }\n";
|
||||
}
|
||||
if ($filebase) {
|
||||
close $out;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,27 @@
|
|||
:
|
||||
set -eu
|
||||
|
||||
# Usage:
|
||||
# create_legacy_def.sh $paramId
|
||||
#
|
||||
# This script will insert the local ECMWF GRIB2 representation
|
||||
# for that paramId into the files:
|
||||
# definitions/grib2/localConcepts/ecmf/paramId.legacy.def
|
||||
# definitions/grib2/localConcepts/ecmf/shortName.legacy.def
|
||||
# etc
|
||||
# This is normally run for those GRIB2 parameters which had
|
||||
# a local ECMWF representation which later acquired a standard
|
||||
# WMO one. We want to be able to match the old encoding to the
|
||||
# paramId but when we write out a field, we want to use the new
|
||||
# standard WMO encoding.
|
||||
#
|
||||
# Assumptions:
|
||||
# The ecCodes tools grib_set and grib_get are available
|
||||
# The legacy encoding has discipline = 192
|
||||
# The parameterCategory = $paramId / 1000
|
||||
# The parameterNumber = $paramId - parameterCategory*1000
|
||||
#
|
||||
|
||||
pid=$1
|
||||
|
||||
sample2=samples/GRIB2.tmpl
|
||||
|
@ -46,5 +67,5 @@ output_def "$name" "$units" $dis $cat $num >> $defs/units.legacy.def
|
|||
output_def "$name" "$cfVarName" $dis $cat $num >> $defs/cfVarName.legacy.def
|
||||
output_def "$name" "$cfName" $dis $cat $num >> $defs/cfName.legacy.def
|
||||
|
||||
echo "Files updated"
|
||||
echo "Files updated. Check directory $defs"
|
||||
rm -f $temp
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
##
|
||||
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
## author: Sebastien Villaume
|
||||
## created: 6 Oct 2011
|
||||
## modified: 13 May 2013
|
||||
##
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
##
|
||||
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
## author: Sebastien Villaume
|
||||
## created: 6 Oct 2011
|
||||
## modified: 13 May 2013
|
||||
##
|
||||
|
|
|
@ -20,7 +20,7 @@ constant epsStatisticsContinous=12 : hidden;
|
|||
|
||||
meta headersOnly headers_only();
|
||||
|
||||
#template section_0 "grib1/section.0.def" ;
|
||||
#template section_0 "grib1/section.0.def";
|
||||
|
||||
meta gts_header gts_header() : no_copy,hidden,read_only;
|
||||
meta gts_TTAAii gts_header(20,6) : no_copy,hidden,read_only;
|
||||
|
@ -30,24 +30,24 @@ meta gts_ddhh00 gts_header(32,6) : no_copy,hidden,read_only;
|
|||
ascii[4] identifier = "GRIB" : read_only,hidden;
|
||||
|
||||
constant offsetSection0=0;
|
||||
constant section0Length=8 ;
|
||||
constant section0Length=8;
|
||||
meta section0Pointer section_pointer(offsetSection0,section0Length,0);
|
||||
|
||||
# Due to a trick done by GRIBEX to support large GRIBs, we need a special treatment
|
||||
# of the message length and of the section4 length, so instead of
|
||||
# section_length[3] totalLength ;
|
||||
# section_length[3] totalLength;
|
||||
# we get:
|
||||
g1_message_length[3] totalLength(section4Length) ;
|
||||
g1_message_length[3] totalLength(section4Length);
|
||||
position startOfHeaders;
|
||||
unsigned[1] editionNumber = 1 : edition_specific,dump;
|
||||
|
||||
template section_1 "grib1/section.1.def" ;
|
||||
template section_1 "grib1/section.1.def";
|
||||
|
||||
alias ls.edition = editionNumber;
|
||||
|
||||
# Note flagbit numbers 7 to 0, while wmo is 1 to 8
|
||||
flagbit gridDescriptionSectionPresent(section1Flags,7) = 1;
|
||||
meta GDSPresent gds_is_present(gridDescriptionSectionPresent,gridDefinition,bitmapPresent,values): dump ;
|
||||
meta GDSPresent gds_is_present(gridDescriptionSectionPresent,gridDefinition,bitmapPresent,values): dump;
|
||||
#alias GDSPresent = gridDescriptionSectionPresent;
|
||||
|
||||
flagbit bitmapPresent(section1Flags,6) :dump;
|
||||
|
@ -57,7 +57,7 @@ alias missingValuesPresent=bitmapPresent : read_only;
|
|||
transient angleSubdivisions=1000; # milli degrees
|
||||
|
||||
if(gridDescriptionSectionPresent){
|
||||
template section_2 "grib1/section.2.def" ;
|
||||
template section_2 "grib1/section.2.def";
|
||||
} else {
|
||||
template predefined_grid "grib1/predefined_grid.def";
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'geopotential_height' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -166,7 +166,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'geopotential_height' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -282,7 +282,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'geopotential_height' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -668,12 +668,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'sm' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
@ -790,7 +790,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -1349,12 +1349,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'sm' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
@ -1471,7 +1471,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -2030,12 +2030,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'sm' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
|
|
@ -49,7 +49,7 @@ if(bitmapPresent) {
|
|||
|
||||
): read_only;
|
||||
alias data.packedValues = codedValues;
|
||||
|
||||
|
||||
if (boustrophedonicOrdering)
|
||||
{
|
||||
if (GRIBEX_boustrophedonic)
|
||||
|
|
|
@ -49,7 +49,7 @@ if(bitmapPresent) {
|
|||
|
||||
): read_only;
|
||||
alias data.packedValues = codedValues;
|
||||
|
||||
|
||||
if (boustrophedonicOrdering)
|
||||
{
|
||||
if (GRIBEX_boustrophedonic)
|
||||
|
|
|
@ -58,11 +58,10 @@ if(matrixOfValues == 0)
|
|||
position offsetBeforeData;
|
||||
|
||||
if(bitmapPresent) {
|
||||
|
||||
# For grib1 -> grib2
|
||||
constant bitMapIndicator = 0;
|
||||
|
||||
meta codedValues data_g1simple_packing (
|
||||
meta codedValues data_g1simple_packing(
|
||||
section4Length,
|
||||
offsetBeforeData,
|
||||
offsetSection4,
|
||||
|
@ -76,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;
|
||||
|
@ -113,27 +112,25 @@ if(matrixOfValues == 0)
|
|||
constant bitMapIndicator = 0;
|
||||
|
||||
# From GRIBEX:
|
||||
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
# ! !
|
||||
# ! This is the WMO definition, but it is entirely !
|
||||
# ! inadequate when secondary bit maps are present !
|
||||
# ! eg 3x3 global grid with a matrix of values !
|
||||
# ! 12x26 at each point. This gives a bit map with !
|
||||
# ! a length of 285480 octets which cannot be given!
|
||||
# ! in 16 bits. !
|
||||
# ! !
|
||||
# ! ECMWF uses the following definition for its !
|
||||
# ! wave model data. !
|
||||
# ! N - Number of secondary bit maps !
|
||||
# ! (ie the number of points which are 'not !
|
||||
# ! missing'). !
|
||||
# ! This definition will accommodate a 1x1 !
|
||||
# ! degree global grid. !
|
||||
# ! !
|
||||
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
#
|
||||
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
# ! !
|
||||
# ! This is the WMO definition, but it is entirely !
|
||||
# ! inadequate when secondary bit maps are present !
|
||||
# ! eg 3x3 global grid with a matrix of values !
|
||||
# ! 12x26 at each point. This gives a bit map with !
|
||||
# ! a length of 285480 octets which cannot be given!
|
||||
# ! in 16 bits. !
|
||||
# ! !
|
||||
# ! ECMWF uses the following definition for its !
|
||||
# ! wave model data. !
|
||||
# ! N - Number of secondary bit maps !
|
||||
# ! (ie the number of points which are 'not !
|
||||
# ! missing'). !
|
||||
# ! This definition will accommodate a 1x1 !
|
||||
# ! degree global grid. !
|
||||
# ! !
|
||||
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
#
|
||||
|
||||
constant datumSize = NC*NR;
|
||||
transient secondaryBitmapsCount = octetAtWichPackedDataBegins*datumSize; #
|
||||
transient secondaryBitmapsSize = secondaryBitmapsCount/8;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
|
||||
# moved here to allow different bitsPerValue in second order packing
|
||||
unsigned[1] bitsPerValue : dump ;
|
||||
unsigned[1] bitsPerValue : dump;
|
||||
alias numberOfBitsContainingEachPackedValue = bitsPerValue;
|
||||
|
||||
# For grib1 -> grib2
|
||||
|
@ -11,15 +11,15 @@ alias numberOfBitsContainingEachPackedValue = bitsPerValue;
|
|||
constant PUnset = -32767;
|
||||
|
||||
unsigned[2] N : read_only,dump;
|
||||
signed[2] P = PUnset ;
|
||||
signed[2] P = PUnset;
|
||||
|
||||
unsigned[1] JS=0 : dump;
|
||||
unsigned[1] KS=0 : dump;
|
||||
unsigned[1] MS=0 : dump;
|
||||
|
||||
alias subSetJ=JS ;
|
||||
alias subSetK=KS ;
|
||||
alias subSetM=MS ;
|
||||
alias subSetJ=JS;
|
||||
alias subSetK=KS;
|
||||
alias subSetM=MS;
|
||||
|
||||
constant GRIBEXShBugPresent = 1;
|
||||
if (gribex_mode_on()) {
|
||||
|
@ -33,9 +33,9 @@ constant PUnset = -32767;
|
|||
|
||||
if (localUsePresent) {
|
||||
if (changed(localDefinitionNumber)) {
|
||||
transient TS = 0 ;
|
||||
transient TS = 0;
|
||||
meta TScalc spectral_truncation(JS,KS,MS,TS) : read_only,hidden;
|
||||
meta Nassigned octect_number(N,4*TScalc) : hidden ;
|
||||
meta Nassigned octect_number(N,4*TScalc) : hidden;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ constant PUnset = -32767;
|
|||
|
||||
halfByte,
|
||||
N,packingType,spectral_ieee,precision
|
||||
) : dump ;
|
||||
) : dump;
|
||||
|
||||
meta data.packedValues data_sh_packed(
|
||||
section4Length,
|
||||
|
@ -93,7 +93,7 @@ constant PUnset = -32767;
|
|||
subSetJ,
|
||||
subSetK,
|
||||
subSetM,
|
||||
|
||||
|
||||
pentagonalResolutionParameterJ,
|
||||
pentagonalResolutionParameterK,
|
||||
pentagonalResolutionParameterM
|
||||
|
@ -122,7 +122,7 @@ constant PUnset = -32767;
|
|||
subSetJ,
|
||||
subSetK,
|
||||
subSetM,
|
||||
|
||||
|
||||
pentagonalResolutionParameterJ,
|
||||
pentagonalResolutionParameterK,
|
||||
pentagonalResolutionParameterM
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
|
||||
# moved here to allow different bitsPerValue in second order packing
|
||||
unsigned[1] bitsPerValue : dump ;
|
||||
unsigned[1] bitsPerValue : dump;
|
||||
alias numberOfBitsContainingEachPackedValue = bitsPerValue;
|
||||
|
||||
# For grib1 -> grib2
|
||||
|
@ -11,15 +11,15 @@ alias numberOfBitsContainingEachPackedValue = bitsPerValue;
|
|||
constant PUnset = -32767;
|
||||
|
||||
unsigned[2] N : read_only,dump;
|
||||
signed[2] P = PUnset ;
|
||||
signed[2] P = PUnset;
|
||||
|
||||
unsigned[1] JS=0 : dump;
|
||||
unsigned[1] KS=0 : dump;
|
||||
unsigned[1] MS=0 : dump;
|
||||
|
||||
alias subSetJ=JS ;
|
||||
alias subSetK=KS ;
|
||||
alias subSetM=MS ;
|
||||
alias subSetJ=JS;
|
||||
alias subSetK=KS;
|
||||
alias subSetM=MS;
|
||||
|
||||
constant GRIBEXShBugPresent = 1;
|
||||
transient computeLaplacianOperator=0;
|
||||
|
@ -29,9 +29,9 @@ constant PUnset = -32767;
|
|||
|
||||
if (localUsePresent) {
|
||||
if (changed(localDefinitionNumber)) {
|
||||
transient TS = 0 ;
|
||||
transient TS = 0;
|
||||
meta TScalc spectral_truncation(JS,KS,MS,TS) : read_only,hidden;
|
||||
meta Nassigned octect_number(N,4*TScalc) : hidden ;
|
||||
meta Nassigned octect_number(N,4*TScalc) : hidden;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ constant PUnset = -32767;
|
|||
|
||||
halfByte,
|
||||
N,packingType,spectral_ieee,precision
|
||||
) : dump ;
|
||||
) : dump;
|
||||
|
||||
meta data.packedValues data_sh_packed(
|
||||
section4Length,
|
||||
|
@ -89,7 +89,7 @@ constant PUnset = -32767;
|
|||
subSetJ,
|
||||
subSetK,
|
||||
subSetM,
|
||||
|
||||
|
||||
pentagonalResolutionParameterJ,
|
||||
pentagonalResolutionParameterK,
|
||||
pentagonalResolutionParameterM
|
||||
|
@ -118,7 +118,7 @@ constant PUnset = -32767;
|
|||
subSetJ,
|
||||
subSetK,
|
||||
subSetM,
|
||||
|
||||
|
||||
pentagonalResolutionParameterJ,
|
||||
pentagonalResolutionParameterK,
|
||||
pentagonalResolutionParameterM
|
||||
|
|
|
@ -40,9 +40,10 @@ include "grib1/scanning_mode.def";
|
|||
unsigned[3] orientationOfTheGrid : edition_specific ;
|
||||
meta geography.orientationOfTheGridInDegrees scale(orientationOfTheGrid,oneConstant,grib1divider,truncateDegrees) : dump;
|
||||
|
||||
unsigned[3] NrInRadiusOfEarth : edition_specific,can_be_missing,no_copy;
|
||||
alias altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius = NrInRadiusOfEarth;
|
||||
meta NrInRadiusOfEarthScaled scale(NrInRadiusOfEarth,oneConstant,oneMillionConstant,truncateDegrees) : dump;
|
||||
unsigned[3] Nr : edition_specific,can_be_missing,no_copy;
|
||||
alias altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius = Nr;
|
||||
meta geography.NrInRadiusOfEarth scale(Nr,oneConstant,oneMillionConstant,truncateDegrees) : dump;
|
||||
alias NrInRadiusOfEarthScaled=NrInRadiusOfEarth;
|
||||
|
||||
unsigned[2] Xo : dump;
|
||||
alias xCoordinateOfOriginOfSectorImage=Xo;
|
||||
|
|
|
@ -66,9 +66,6 @@ if(missing(Ni)){
|
|||
latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees,
|
||||
N,pl,Nj);
|
||||
nearest reduced(values,radius,Nj,pl);
|
||||
box reduced_gaussian(latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees,
|
||||
latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees,
|
||||
N,pl);
|
||||
|
||||
#meta sumPlArray sum(pl);
|
||||
#meta dataGlobal evaluate( sumPlArray == (numberOfValues+numberOfMissing) );
|
||||
|
@ -78,9 +75,6 @@ if(missing(Ni)){
|
|||
latitudeFirstInDegrees, latitudeLastInDegrees,
|
||||
N,jScansPositively);
|
||||
nearest regular(values,radius,Ni,Nj);
|
||||
# box regular_gaussian(latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees,
|
||||
# latitudeOfLastGridPointInDegrees,longitudeOfLastGridPointInDegrees,
|
||||
# DiInDegrees,Ni,N,iScansNegatively,jScansPositively);
|
||||
}
|
||||
|
||||
meta latLonValues latlonvalues(values);
|
||||
|
|
|
@ -139,58 +139,52 @@
|
|||
|
||||
template mars_labeling "grib1/mars_labeling.def";
|
||||
|
||||
unsigned[1] perturbationNumber : dump ;
|
||||
unsigned[1] perturbationNumber : dump;
|
||||
alias number = perturbationNumber;
|
||||
|
||||
unsigned[1] numberOfForecastsInEnsemble : dump;
|
||||
|
||||
#
|
||||
# EXPERIMENT
|
||||
#
|
||||
ascii[4] '************_EXPERIMENT_************' ;
|
||||
ascii[8] 'Experiment_Identifier' ;
|
||||
ascii[8] 'Sub-Experiment_Identifier' ;
|
||||
ascii[4] '************_EXPERIMENT_************';
|
||||
ascii[8] 'Experiment_Identifier';
|
||||
ascii[8] 'Sub-Experiment_Identifier';
|
||||
|
||||
#
|
||||
# PRODUCT
|
||||
#
|
||||
ascii[4] '************_PRODUCT_***************' ;
|
||||
unsigned[1] Original_CodeTable_2_Version_Number : dump ;
|
||||
ascii[4] '************_PRODUCT_***************';
|
||||
unsigned[1] Original_CodeTable_2_Version_Number : dump;
|
||||
unsigned[1] Original_Parameter_Iden_CodeTable2 : dump;
|
||||
ascii[8] 'Original_Parameter_Identifier' ;
|
||||
ascii[8] 'Product_Identifier' ;
|
||||
ascii[8] 'Original_Parameter_Identifier';
|
||||
ascii[8] 'Product_Identifier';
|
||||
|
||||
# Thresholds and Distributions
|
||||
unsigned[2] Threshold_Or_Distribution_0_no_1_yes : dump ;
|
||||
ascii[4] 'Threshold_Or_Distribution_Units' ;
|
||||
unsigned[4] At_least__Or_Distribut_Proportion_Of : dump ;
|
||||
unsigned[4] Less_Than_Or_To_Overall_Distribution : dump ;
|
||||
unsigned[2] Threshold_Or_Distribution_0_no_1_yes : dump;
|
||||
ascii[4] 'Threshold_Or_Distribution_Units';
|
||||
unsigned[4] At_least__Or_Distribut_Proportion_Of : dump;
|
||||
unsigned[4] Less_Than_Or_To_Overall_Distribution : dump;
|
||||
|
||||
pad padding_loc244_1(40);
|
||||
|
||||
ascii[4] '************_ENSEMBLE_**************' ;
|
||||
unsigned[2] Number_Combination_Ensembles_1_none : dump ;
|
||||
unsigned[1] Show_Combination_Ensem_E2_0_no_1_yes : dump ;
|
||||
unsigned[1] Show_Combination_Ensem_E3_0_no_1_yes : dump ;
|
||||
unsigned[1] Show_Combination_Ensem_E4_0_no_1_yes : dump ;
|
||||
ascii[4] '************_ENSEMBLE_**************';
|
||||
unsigned[2] Number_Combination_Ensembles_1_none : dump;
|
||||
unsigned[1] Show_Combination_Ensem_E2_0_no_1_yes : dump;
|
||||
unsigned[1] Show_Combination_Ensem_E3_0_no_1_yes : dump;
|
||||
unsigned[1] Show_Combination_Ensem_E4_0_no_1_yes : dump;
|
||||
|
||||
pad padding_loc244_2(7);
|
||||
|
||||
unsigned[2] Total_Number_Members_Used : dump;
|
||||
unsigned[2] Total_Number_Members_Possible : dump ;
|
||||
unsigned[2] Total_Number_Members_Missing : dump ;
|
||||
unsigned[2] Ensemble_Combination_Number : dump ;
|
||||
ascii[8] 'Ensemble_Identifier' ;
|
||||
unsigned[2] Local_Number_Members_Used : dump ;
|
||||
unsigned[2] Local_Number_Members_Possible : dump ;
|
||||
unsigned[2] Local_Number_Members_Missing : dump ;
|
||||
unsigned[2] Total_Number_Members_Possible : dump;
|
||||
unsigned[2] Total_Number_Members_Missing : dump;
|
||||
unsigned[2] Ensemble_Combination_Number : dump;
|
||||
ascii[8] 'Ensemble_Identifier';
|
||||
unsigned[2] Local_Number_Members_Used : dump;
|
||||
unsigned[2] Local_Number_Members_Possible : dump;
|
||||
unsigned[2] Local_Number_Members_Missing : dump;
|
||||
|
||||
listMembersUsed list(Local_Number_Members_Used){
|
||||
ascii[4] 'Used_Model_LBC' ;
|
||||
ascii[4] 'Used_Model_LBC';
|
||||
}
|
||||
|
||||
listMembersMissing list(Local_Number_Members_Missing){
|
||||
ascii[4] 'Missing_Model_LBC' ;
|
||||
ascii[4] 'Missing_Model_LBC';
|
||||
}
|
||||
|
||||
#
|
||||
|
@ -198,29 +192,29 @@ listMembersMissing list(Local_Number_Members_Missing){
|
|||
#
|
||||
|
||||
if (Show_Combination_Ensem_E2_0_no_1_yes == 1){
|
||||
unsigned[2] Ensemble_Combinat_Number_0_none_E2 : dump ;
|
||||
ascii[8] 'Ensemble_Identifier_E2' ;
|
||||
unsigned[2] Local_Number_Members_Used_E2 : dump ;
|
||||
unsigned[2] Local_Number_Members_Possible_E2 : dump ;
|
||||
unsigned[2] Local_Number_Members_Missing_E2 : dump ;
|
||||
unsigned[2] Ensemble_Combinat_Number_0_none_E2 : dump;
|
||||
ascii[8] 'Ensemble_Identifier_E2';
|
||||
unsigned[2] Local_Number_Members_Used_E2 : dump;
|
||||
unsigned[2] Local_Number_Members_Possible_E2 : dump;
|
||||
unsigned[2] Local_Number_Members_Missing_E2 : dump;
|
||||
unsigned[3] Date_E2 : dump;
|
||||
unsigned[1] Hour_E2 : dump;
|
||||
unsigned[1] Minute_E2 : dump;
|
||||
unsigned[2] Time_Range_One_E2 : dump ;
|
||||
unsigned[2] Time_Range_One_E2 : dump;
|
||||
unsigned[2] Time_Range_Two_E2 : dump;
|
||||
|
||||
listMembersUsed2 list(Local_Number_Members_Used_E2){
|
||||
ascii[4] 'Used_Model_LBC_E2' ;
|
||||
ascii[4] 'Used_Model_LBC_E2';
|
||||
}
|
||||
|
||||
listMembersMissing2 list(Local_Number_Members_Missing_E2){
|
||||
ascii[4] 'Missing_Model_LBC_E2' ;
|
||||
ascii[4] 'Missing_Model_LBC_E2';
|
||||
}
|
||||
}
|
||||
|
||||
if (Show_Combination_Ensem_E3_0_no_1_yes == 1){
|
||||
unsigned[2] Ensemble_Combinat_Number_0_none_E3 : dump ;
|
||||
ascii[8] 'Ensemble_Identifier_E3' ;
|
||||
unsigned[2] Ensemble_Combinat_Number_0_none_E3 : dump;
|
||||
ascii[8] 'Ensemble_Identifier_E3';
|
||||
unsigned[2] Local_Number_Members_Used_E3 : dump;
|
||||
unsigned[2] Local_Number_Members_Possible_E3 : dump;
|
||||
unsigned[2] Local_Number_Members_Missing_E3 : dump;
|
||||
|
@ -231,39 +225,39 @@ if (Show_Combination_Ensem_E3_0_no_1_yes == 1){
|
|||
unsigned[2] Time_Range_Two_E3 : dump;
|
||||
|
||||
listMembersUsed3 list(Local_Number_Members_Used_E3){
|
||||
ascii[4] 'Used_Model_LBC_E3' ;
|
||||
ascii[4] 'Used_Model_LBC_E3';
|
||||
}
|
||||
|
||||
listMembersMissing3 list(Local_Number_Members_Missing_E3){
|
||||
ascii[4] 'Missing_Model_LBC_E3' ;
|
||||
ascii[4] 'Missing_Model_LBC_E3';
|
||||
}
|
||||
}
|
||||
|
||||
if (Show_Combination_Ensem_E4_0_no_1_yes == 1){
|
||||
unsigned[2] Ensemble_Combinat_Number_0_none_E4 : dump ;
|
||||
ascii[8] 'Ensemble_Identifier_E4' ;
|
||||
unsigned[2] Ensemble_Combinat_Number_0_none_E4 : dump;
|
||||
ascii[8] 'Ensemble_Identifier_E4';
|
||||
unsigned[2] Local_Number_Members_Used_E4 : dump;
|
||||
unsigned[2] Local_Number_Members_Possible_E4 : dump;
|
||||
unsigned[2] Local_Number_Members_Missing_E4 : dump;
|
||||
unsigned[3] Date_E4 : dump;
|
||||
unsigned[1] Hour_E4 : dump;
|
||||
unsigned[1] Minute_E4 : dump;
|
||||
unsigned[2] Time_Range_One_E4 : dump ;
|
||||
unsigned[2] Time_Range_One_E4 : dump;
|
||||
unsigned[2] Time_Range_Two_E4 : dump;
|
||||
|
||||
listMembersUsed4 list(Local_Number_Members_Used_E4){
|
||||
ascii[4] 'Used_Model_LBC_E4' ;
|
||||
ascii[4] 'Used_Model_LBC_E4';
|
||||
}
|
||||
|
||||
listMembersMissing4 list(Local_Number_Members_Missing_E4){
|
||||
ascii[4] 'Missing_Model_LBC_E4' ;
|
||||
ascii[4] 'Missing_Model_LBC_E4';
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# EXTRA INFORMATION like 191
|
||||
#
|
||||
ascii[4] '*********_EXTRA_DATA_***************' ;
|
||||
ascii[4] '*********_EXTRA_DATA_***************';
|
||||
unsigned[2] Extra_Data_FreeFormat_0_none : dump;
|
||||
position offsetFreeFormData;
|
||||
unsigned[1] freeFormData[Extra_Data_FreeFormat_0_none] : dump;
|
||||
|
|
|
@ -14,15 +14,15 @@ label "CMC local definition (Canada)";
|
|||
# spatialSmoothingOfProduct 45
|
||||
# isotopeIdentificationNumber 46-47 2
|
||||
|
||||
unsigned[1] applicationIdentifier : dump ;
|
||||
unsigned[1] applicationIdentifier : dump;
|
||||
|
||||
unsigned[1] type : dump;
|
||||
|
||||
unsigned[1] identificationNumber : dump;
|
||||
|
||||
unsigned[1] productIdentifier : dump ;
|
||||
unsigned[1] productIdentifier : dump;
|
||||
|
||||
unsigned[1] spatialSmoothingOfProduct : dump ;
|
||||
unsigned[1] spatialSmoothingOfProduct : dump;
|
||||
|
||||
# See GRIB-557
|
||||
unsigned[2] isotopeIdentificationNumber : dump ;
|
||||
unsigned[2] isotopeIdentificationNumber : dump;
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#model 52 I1 44 -
|
||||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 6 Oct 2011
|
||||
# modified: 13 May 2013
|
||||
#
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 6 Oct 2011
|
||||
# modified: 20 Feb 2014
|
||||
#
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#PartDef 74 PAD n/a 7
|
||||
################################################################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 6 Oct 2011
|
||||
# modified: 20 Feb 2014
|
||||
#
|
||||
|
|
|
@ -112,7 +112,7 @@ if(localFlag == 3)
|
|||
alias system = systemNumber;
|
||||
alias method = methodNumber;
|
||||
alias refdate = referenceDate;
|
||||
|
||||
|
||||
alias mars._leg_number = legNumber;
|
||||
}
|
||||
|
||||
|
@ -143,7 +143,7 @@ if(localFlag == 4)
|
|||
alias baseTimeOfThisLeg = legBaseTime;
|
||||
unsigned[1] legNumber : dump;
|
||||
unsigned[1] oceanAtmosphereCoupling : dump;
|
||||
|
||||
|
||||
# Hours
|
||||
unsigned[2] offsetToEndOf4DvarWindow : dump;
|
||||
alias anoffset=offsetToEndOf4DvarWindow;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
# Coupled atmospheric, wave and ocean means (with hindcast support)
|
||||
|
||||
constant GRIBEXSection1Problem = 84 - section1Length ;
|
||||
constant GRIBEXSection1Problem = 84 - section1Length;
|
||||
|
||||
#used in local definition 13
|
||||
transient localFlag=2 : hidden;
|
||||
|
@ -18,8 +18,8 @@ unsigned[2] perturbationNumber : dump;
|
|||
unsigned[2] systemNumber : dump;
|
||||
unsigned[2] methodNumber : dump;
|
||||
unsigned[4] verifyingMonth : dump;
|
||||
unsigned[1] averagingPeriod : dump ;
|
||||
unsigned[2] forecastMonth : dump ;
|
||||
unsigned[1] averagingPeriod : dump;
|
||||
unsigned[2] forecastMonth : dump;
|
||||
unsigned[4] referenceDate : dump;
|
||||
unsigned[4] climateDateFrom : dump;
|
||||
unsigned[4] climateDateTo : dump;
|
||||
|
@ -30,15 +30,15 @@ unsigned[2] upperThresholdValue : dump;
|
|||
|
||||
alias local.systemNumber=systemNumber;
|
||||
alias local.methodNumber=methodNumber;
|
||||
alias local.verifyingMonth=verifyingMonth ;
|
||||
alias local.averagingPeriod=averagingPeriod ;
|
||||
alias local.forecastMonth=forecastMonth ;
|
||||
alias local.referenceDate=referenceDate ;
|
||||
alias local.climateDateFrom=climateDateFrom ;
|
||||
alias local.climateDateTo=climateDateTo ;
|
||||
alias local.unitsDecimalScaleFactor=unitsDecimalScaleFactor ;
|
||||
alias local.thresholdIndicator=thresholdIndicator ;
|
||||
alias local.lowerThresholdValue=lowerThresholdValue ;
|
||||
alias local.verifyingMonth=verifyingMonth;
|
||||
alias local.averagingPeriod=averagingPeriod;
|
||||
alias local.forecastMonth=forecastMonth;
|
||||
alias local.referenceDate=referenceDate;
|
||||
alias local.climateDateFrom=climateDateFrom;
|
||||
alias local.climateDateTo=climateDateTo;
|
||||
alias local.unitsDecimalScaleFactor=unitsDecimalScaleFactor;
|
||||
alias local.thresholdIndicator=thresholdIndicator;
|
||||
alias local.lowerThresholdValue=lowerThresholdValue;
|
||||
alias local.upperThresholdValue=upperThresholdValue;
|
||||
|
||||
# TODO: BR Note: this is not where we expect it!!
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
# MARS labelling or ensemble forecast data (with hindcast support)
|
||||
|
||||
constant GRIBEXSection1Problem = 69 - section1Length ;
|
||||
constant GRIBEXSection1Problem = 69 - section1Length;
|
||||
|
||||
#used in local definition 13
|
||||
transient localFlag=2 : hidden;
|
||||
|
@ -20,14 +20,14 @@ if (stepType is "instant" ) {
|
|||
constant wrongPadding=1 : hidden;
|
||||
|
||||
unsigned[1] number : dump;
|
||||
unsigned[1] numberOfForecastsInEnsemble : dump ;
|
||||
unsigned[1] numberOfForecastsInEnsemble : dump;
|
||||
alias totalNumber=numberOfForecastsInEnsemble;
|
||||
unsigned[4] referenceDate : dump ;
|
||||
unsigned[4] referenceDate : dump;
|
||||
unsigned[4] climateDateFrom : dump;
|
||||
unsigned[4] climateDateTo : dump ;
|
||||
unsigned[4] climateDateTo : dump;
|
||||
pad padding_loc26_1(6);
|
||||
alias perturbationNumber=number;
|
||||
|
||||
alias local.referenceDate= referenceDate ;
|
||||
alias local.climateDateFrom= climateDateFrom ;
|
||||
alias local.climateDateTo= climateDateTo ;
|
||||
alias local.referenceDate= referenceDate;
|
||||
alias local.climateDateFrom= climateDateFrom;
|
||||
alias local.climateDateTo= climateDateTo;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
# Forecasting Systems with Variable Resolution (Obsolete)
|
||||
|
||||
constant GRIBEXSection1Problem = 107 - section1Length ;
|
||||
constant GRIBEXSection1Problem = 107 - section1Length;
|
||||
|
||||
#1->2
|
||||
transient grib2LocalSectionNumber=30;
|
||||
|
@ -9,21 +9,21 @@ transient grib2LocalSectionNumber=30;
|
|||
template mars_labeling "grib1/mars_labeling.def";
|
||||
constant wrongPadding=1 : hidden;
|
||||
|
||||
unsigned[1] perturbationNumber : dump ;
|
||||
unsigned[1] numberOfForecastsInEnsemble : dump ;
|
||||
unsigned[1] perturbationNumber : dump;
|
||||
unsigned[1] numberOfForecastsInEnsemble : dump;
|
||||
alias totalNumber=numberOfForecastsInEnsemble;
|
||||
alias number = perturbationNumber;
|
||||
|
||||
unsigned[1] oceanAtmosphereCoupling : dump ;
|
||||
unsigned[1] oceanAtmosphereCoupling : dump;
|
||||
|
||||
pad padding_loc27_1(3);
|
||||
|
||||
unsigned[4] legBaseDate : dump ;
|
||||
unsigned[2] legBaseTime : dump ;
|
||||
unsigned[1] legNumber : dump ;
|
||||
unsigned[4] referenceDate : dump ;
|
||||
unsigned[4] climateDateFrom : dump ;
|
||||
unsigned[4] climateDateTo : dump ;
|
||||
unsigned[4] legBaseDate : dump;
|
||||
unsigned[2] legBaseTime : dump;
|
||||
unsigned[1] legNumber : dump;
|
||||
unsigned[4] referenceDate : dump;
|
||||
unsigned[4] climateDateFrom : dump;
|
||||
unsigned[4] climateDateTo : dump;
|
||||
|
||||
alias mars._leg_number = legNumber;
|
||||
|
||||
|
|
|
@ -3,18 +3,18 @@
|
|||
|
||||
# information about probabilities (they have already probabilities)
|
||||
# information about clustering (they save it as ASCII, at the moment...)
|
||||
constant GRIBEXSection1Problem = 79 - section1Length ;
|
||||
constant GRIBEXSection1Problem = 79 - section1Length;
|
||||
|
||||
template mars_labeling "grib1/mars_labeling.def";
|
||||
constant wrongPadding=1 : hidden;
|
||||
|
||||
unsigned[1] perturbationNumber : dump;
|
||||
alias number = perturbationNumber;
|
||||
unsigned[1] numberOfForecastsInEnsemble : dump ;
|
||||
unsigned[1] numberOfForecastsInEnsemble : dump;
|
||||
alias totalNumber=numberOfForecastsInEnsemble;
|
||||
unsigned[4] baseDateEPS : dump ;
|
||||
unsigned[4] baseDateEPS : dump;
|
||||
unsigned[2] baseTimeEPS : dump;
|
||||
unsigned[1] numberOfRepresentativeMember : dump ;
|
||||
unsigned[1] numberOfRepresentativeMember : dump;
|
||||
unsigned[1] numberOfMembersInCluster : dump;
|
||||
unsigned[1] totalInitialConditions : dump;
|
||||
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
# (C) Copyright 2005- ECMWF.
|
||||
# COSMO clustering information
|
||||
|
||||
constant GRIBEXSection1Problem = 960 - section1Length ;
|
||||
constant GRIBEXSection1Problem = 960 - section1Length;
|
||||
|
||||
template mars_labeling "grib1/mars_labeling.def";
|
||||
|
||||
unsigned[1] clusterNumber : dump;
|
||||
alias number=clusterNumber;
|
||||
|
||||
unsigned[1] totalNumberOfClusters : dump ;
|
||||
unsigned[1] totalNumberOfClusters : dump;
|
||||
alias totalNumber=totalNumberOfClusters;
|
||||
pad padding_loc29_1(1);
|
||||
unsigned[1] clusteringMethod : dump ;
|
||||
unsigned[1] clusteringMethod : dump;
|
||||
signed[3] northernLatitudeOfDomain : dump;
|
||||
signed[3] westernLongitudeOfDomain : dump ;
|
||||
signed[3] southernLatitudeOfDomain : dump ;
|
||||
signed[3] easternLongitudeOfDomain : dump ;
|
||||
signed[3] westernLongitudeOfDomain : dump;
|
||||
signed[3] southernLatitudeOfDomain : dump;
|
||||
signed[3] easternLongitudeOfDomain : dump;
|
||||
unsigned[1] numberOfForecastsInCluster : dump;
|
||||
unsigned[1] numberOfParametersUsedForClustering : dump ;
|
||||
unsigned[1] numberOfPressureLevelsUsedForClustering : dump ;
|
||||
unsigned[1] numberOfStepsUsedForClustering : dump ;
|
||||
unsigned[1] numberOfParametersUsedForClustering : dump;
|
||||
unsigned[1] numberOfPressureLevelsUsedForClustering : dump;
|
||||
unsigned[1] numberOfStepsUsedForClustering : dump;
|
||||
|
||||
pad padding_loc29_2(10);
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
alias grib2LocalSectionPresent=present;
|
||||
constant grib2LocalSectionNumber=9;
|
||||
|
||||
constant GRIBEXSection1Problem = 92 - section1Length ;
|
||||
constant GRIBEXSection1Problem = 92 - section1Length;
|
||||
|
||||
template mars_labeling "grib1/mars_labeling.def";
|
||||
|
||||
|
@ -30,33 +30,33 @@ if(type != perturbedType)
|
|||
{
|
||||
unsigned[2] numberOfIterations : dump;
|
||||
unsigned[2] numberOfSingularVectorsComputed : dump;
|
||||
unsigned[1] normAtInitialTime : dump ;
|
||||
unsigned[1] normAtFinalTime : dump ;
|
||||
unsigned[1] normAtInitialTime : dump;
|
||||
unsigned[1] normAtFinalTime : dump;
|
||||
unsigned[4] multiplicationFactorForLatLong : dump;
|
||||
signed[4] northWestLatitudeOfLPOArea : dump ;
|
||||
signed[4] northWestLatitudeOfLPOArea : dump;
|
||||
signed[4] northWestLongitudeOfLPOArea : dump;
|
||||
signed[4] southEastLatitudeOfLPOArea : dump;
|
||||
signed[4] southEastLongitudeOfLPOArea : dump;
|
||||
unsigned[4] accuracyMultipliedByFactor : dump;
|
||||
unsigned[2] numberOfSingularVectorsEvolved : dump;
|
||||
# Ritz numbers:
|
||||
signed[4] NINT_LOG10_RITZ : dump ;
|
||||
signed[4] NINT_RITZ_EXP : dump ;
|
||||
signed[4] NINT_LOG10_RITZ : dump;
|
||||
signed[4] NINT_RITZ_EXP : dump;
|
||||
|
||||
alias local.numberOfIterations= numberOfIterations;
|
||||
alias local.numberOfSingularVectorsComputed= numberOfSingularVectorsComputed ;
|
||||
alias local.normAtInitialTime= normAtInitialTime ;
|
||||
alias local.normAtFinalTime= normAtFinalTime ;
|
||||
alias local.multiplicationFactorForLatLong= multiplicationFactorForLatLong ;
|
||||
alias local.northWestLatitudeOfLPOArea= northWestLatitudeOfLPOArea ;
|
||||
alias local.northWestLongitudeOfLPOArea= northWestLongitudeOfLPOArea ;
|
||||
alias local.southEastLatitudeOfLPOArea= southEastLatitudeOfLPOArea ;
|
||||
alias local.southEastLongitudeOfLPOArea= southEastLongitudeOfLPOArea ;
|
||||
alias local.accuracyMultipliedByFactor= accuracyMultipliedByFactor ;
|
||||
alias local.numberOfSingularVectorsEvolved= numberOfSingularVectorsEvolved ;
|
||||
# Ritz numbers:
|
||||
alias local.NINT_LOG10_RITZ= NINT_LOG10_RITZ ;
|
||||
alias local.NINT_RITZ_EXP= NINT_RITZ_EXP ;
|
||||
alias local.numberOfSingularVectorsComputed= numberOfSingularVectorsComputed;
|
||||
alias local.normAtInitialTime= normAtInitialTime;
|
||||
alias local.normAtFinalTime= normAtFinalTime;
|
||||
alias local.multiplicationFactorForLatLong= multiplicationFactorForLatLong;
|
||||
alias local.northWestLatitudeOfLPOArea= northWestLatitudeOfLPOArea;
|
||||
alias local.northWestLongitudeOfLPOArea= northWestLongitudeOfLPOArea;
|
||||
alias local.southEastLatitudeOfLPOArea= southEastLatitudeOfLPOArea;
|
||||
alias local.southEastLongitudeOfLPOArea= southEastLongitudeOfLPOArea;
|
||||
alias local.accuracyMultipliedByFactor= accuracyMultipliedByFactor;
|
||||
alias local.numberOfSingularVectorsEvolved= numberOfSingularVectorsEvolved;
|
||||
|
||||
alias local.NINT_LOG10_RITZ= NINT_LOG10_RITZ;
|
||||
alias local.NINT_RITZ_EXP= NINT_RITZ_EXP;
|
||||
}
|
||||
|
||||
# spareSetToZero
|
||||
|
|
|
@ -394,7 +394,7 @@
|
|||
table2Version = 190 ;
|
||||
indicatorOfParameter = 155 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'geopotential_height' = {
|
||||
table2Version = 128 ;
|
||||
indicatorOfParameter = 156 ;
|
||||
|
|
|
@ -1134,7 +1134,7 @@
|
|||
table2Version = 190 ;
|
||||
indicatorOfParameter = 155 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 128 ;
|
||||
indicatorOfParameter = 156 ;
|
||||
|
@ -17239,7 +17239,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 19 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'sm' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 39 ;
|
||||
|
@ -17254,7 +17254,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 132 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 139 ;
|
||||
|
|
|
@ -1134,8 +1134,8 @@
|
|||
table2Version = 190 ;
|
||||
indicatorOfParameter = 155 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
'Geopotential Height' = {
|
||||
#Geopotential height
|
||||
'Geopotential height' = {
|
||||
table2Version = 128 ;
|
||||
indicatorOfParameter = 156 ;
|
||||
}
|
||||
|
@ -17239,8 +17239,8 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 19 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
'Soil Moisture' = {
|
||||
#Soil moisture
|
||||
'Soil moisture' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 39 ;
|
||||
}
|
||||
|
@ -17254,8 +17254,8 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 132 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
'Soil Temperature' = {
|
||||
#Soil temperature
|
||||
'Soil temperature' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 139 ;
|
||||
}
|
||||
|
|
|
@ -1134,7 +1134,7 @@
|
|||
table2Version = 190 ;
|
||||
indicatorOfParameter = 155 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'156' = {
|
||||
table2Version = 128 ;
|
||||
indicatorOfParameter = 156 ;
|
||||
|
@ -17239,7 +17239,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 19 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'228039' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 39 ;
|
||||
|
@ -17254,7 +17254,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 132 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'228139' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 139 ;
|
||||
|
|
|
@ -1134,7 +1134,7 @@
|
|||
table2Version = 190 ;
|
||||
indicatorOfParameter = 155 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 128 ;
|
||||
indicatorOfParameter = 156 ;
|
||||
|
@ -17239,7 +17239,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 19 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'sm' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 39 ;
|
||||
|
@ -17254,7 +17254,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 132 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 139 ;
|
||||
|
|
|
@ -1134,7 +1134,7 @@
|
|||
table2Version = 190 ;
|
||||
indicatorOfParameter = 155 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gpm' = {
|
||||
table2Version = 128 ;
|
||||
indicatorOfParameter = 156 ;
|
||||
|
@ -17239,7 +17239,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 19 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'kg m**-3' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 39 ;
|
||||
|
@ -17254,7 +17254,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 132 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'K' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 139 ;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 6 Oct 2011
|
||||
# modified: 13 May 2013
|
||||
#
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 13 May 2013
|
||||
# modified:
|
||||
#
|
||||
#########################
|
||||
"none"={matchAerosolBinNumber=0;}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
##
|
||||
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
## author: Sebastien Villaume
|
||||
## created: 6 Oct 2011
|
||||
## modified: 13 May 2013
|
||||
##
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 13 May 2013
|
||||
# modified:
|
||||
#
|
||||
#########################
|
||||
"all"={matchLandType=0;}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
##
|
||||
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
## author: Sebastien Villaume
|
||||
## created: 6 Oct 2011
|
||||
## modified: 13 May 2013
|
||||
##
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
##
|
||||
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
## author: Sebastien Villaume
|
||||
## created: 6 Oct 2011
|
||||
## modified: 13 May 2013
|
||||
##
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 13 May 2013
|
||||
# modified:
|
||||
#
|
||||
#########################
|
||||
"none"={matchSort=0;}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 13 May 2013
|
||||
# modified:
|
||||
#
|
||||
#########################
|
||||
"none"={matchTimeRepres=0;}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
##
|
||||
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
## author: Sebastien Villaume
|
||||
## created: 6 Oct 2011
|
||||
## modified: 13 May 2013
|
||||
##
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 6 Oct 2011
|
||||
# modified: 13 May 2013
|
||||
#
|
||||
|
|
|
@ -105,7 +105,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -945,7 +945,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 221 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
|
|
@ -105,8 +105,8 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
'Geopotential Height' = {
|
||||
#Geopotential height
|
||||
'Geopotential height' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
}
|
||||
|
@ -945,8 +945,8 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 221 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
'Soil Temperature' = {
|
||||
#Soil temperature
|
||||
'Soil temperature' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'156' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -945,7 +945,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 221 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'228139' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
|
|
@ -105,7 +105,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -945,7 +945,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 221 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
|
|
@ -105,7 +105,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gpm' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -945,7 +945,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 221 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'K' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 6 Oct 2011
|
||||
# modified: 13 May 2013
|
||||
#
|
||||
|
|
|
@ -54,7 +54,3 @@ if (stepType is "instant" ) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
# monthly mean
|
||||
#if (timeRangeIndicator==113) {
|
||||
#}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 6 Oct 2011
|
||||
# modified: 13 Sep 2013
|
||||
#
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume (SMHI)
|
||||
# created: 6 Oct 2011
|
||||
# modified: 13 Sep 2013
|
||||
#
|
||||
|
@ -9,42 +9,29 @@
|
|||
constant conceptsMasterMarsDir="mars" : hidden;
|
||||
constant conceptsLocalMarsDirAll="mars/[centre:s]" : hidden;
|
||||
|
||||
##########################
|
||||
# #
|
||||
# Base MARS keywors #
|
||||
# #
|
||||
# Base MARS keywors
|
||||
##########################
|
||||
|
||||
alias mars.class = marsClass;
|
||||
alias mars.type = marsType;
|
||||
alias mars.stream = marsStream;
|
||||
alias mars.model = marsModel;
|
||||
alias mars.expver = experimentVersionNumber;
|
||||
alias mars.domain = globalDomain;
|
||||
alias mars.class = marsClass;
|
||||
alias mars.type = marsType;
|
||||
alias mars.stream = marsStream;
|
||||
alias mars.model = marsModel;
|
||||
alias mars.expver = experimentVersionNumber;
|
||||
alias mars.domain = globalDomain;
|
||||
|
||||
#########################
|
||||
# #
|
||||
# local section 82 #
|
||||
# #
|
||||
# local section 82
|
||||
#########################
|
||||
|
||||
### nothing needed here...
|
||||
|
||||
# Local section 83
|
||||
#########################
|
||||
# #
|
||||
# local section 83 #
|
||||
# #
|
||||
#########################
|
||||
|
||||
if ( localDefinitionNumber == 83 ) {
|
||||
|
||||
alias mars.sort = matchSort;
|
||||
alias mars.timerepres = matchTimeRepres;
|
||||
alias mars.landtype = matchLandType;
|
||||
alias mars.aerosolbinnumber = matchAerosolBinNumber;
|
||||
alias mars.sort = matchSort;
|
||||
alias mars.timerepres = matchTimeRepres;
|
||||
alias mars.landtype = matchLandType;
|
||||
alias mars.aerosolbinnumber = matchAerosolBinNumber;
|
||||
|
||||
concept_nofail matchAerosolPacking (unknown,"aerosolPackingConcept.def",conceptsLocalMarsDirAll,conceptsMasterMarsDir);
|
||||
alias mars.aerosolpacking = matchAerosolPacking;
|
||||
|
||||
alias mars.aerosolpacking = matchAerosolPacking;
|
||||
}
|
||||
|
||||
|
|
|
@ -94,8 +94,8 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
'Geopotential Height' = {
|
||||
#Geopotential height
|
||||
'Geopotential height' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
}
|
||||
|
@ -668,13 +668,13 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
'Soil Moisture' = {
|
||||
#Soil moisture
|
||||
'Soil moisture' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
'Soil Temperature' = {
|
||||
#Soil temperature
|
||||
'Soil temperature' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
|
@ -790,8 +790,8 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
'Geopotential Height' = {
|
||||
#Geopotential height
|
||||
'Geopotential height' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
}
|
||||
|
@ -1349,13 +1349,13 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
'Soil Moisture' = {
|
||||
#Soil moisture
|
||||
'Soil moisture' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
'Soil Temperature' = {
|
||||
#Soil temperature
|
||||
'Soil temperature' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
|
@ -1471,8 +1471,8 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
'Geopotential Height' = {
|
||||
#Geopotential height
|
||||
'Geopotential height' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
}
|
||||
|
@ -2030,13 +2030,13 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
'Soil Moisture' = {
|
||||
#Soil moisture
|
||||
'Soil moisture' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
'Soil Temperature' = {
|
||||
#Soil temperature
|
||||
'Soil temperature' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'156' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -668,12 +668,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'228039' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'228139' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
@ -790,7 +790,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'156' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -1349,12 +1349,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'228039' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'228139' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
@ -1471,7 +1471,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'156' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -2030,12 +2030,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'228039' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'228139' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
|
|
@ -29,9 +29,9 @@ meta swapScanningY change_scanning_direction( values,Ni,Nj,
|
|||
alias swapScanningLat = swapScanningY;
|
||||
|
||||
if (jPointsAreConsecutive) {
|
||||
alias numberOfRows=Ni;
|
||||
alias numberOfColumns=Nj;
|
||||
alias numberOfRows=Ni;
|
||||
alias numberOfColumns=Nj;
|
||||
} else {
|
||||
alias numberOfRows=Nj;
|
||||
alias numberOfColumns=Ni;
|
||||
alias numberOfRows=Nj;
|
||||
alias numberOfColumns=Ni;
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ if (preferLocalConcepts) {
|
|||
|
||||
transient productionStatusOfProcessedData=0;
|
||||
position offsetSection1;
|
||||
section_length[3] section1Length ;
|
||||
section_length[3] section1Length;
|
||||
meta section1Pointer section_pointer(offsetSection1,section1Length,1);
|
||||
constant wrongPadding=0;
|
||||
|
||||
|
@ -42,12 +42,12 @@ alias ls.centre = centre;
|
|||
|
||||
# Generating process identification number
|
||||
# (allocated by originating centre)
|
||||
unsigned[1] generatingProcessIdentifier : dump ;
|
||||
unsigned[1] generatingProcessIdentifier : dump;
|
||||
alias generatingProcessIdentificationNumber=generatingProcessIdentifier;
|
||||
alias process=generatingProcessIdentifier;
|
||||
|
||||
unsigned[1] gridDefinition = 255 : edition_specific ;
|
||||
flags[1] section1Flags 'grib1/1.table' = 128 : hidden ; # = section 2 present
|
||||
unsigned[1] gridDefinition = 255 : edition_specific;
|
||||
flags[1] section1Flags 'grib1/1.table' = 128 : hidden; # = section 2 present
|
||||
|
||||
alias centreForTable2=centre;
|
||||
|
||||
|
@ -61,7 +61,7 @@ alias levelType=indicatorOfTypeOfLevel;
|
|||
|
||||
transient pressureUnits="hPa";
|
||||
|
||||
concept_nofail typeOfLevelECMF (unknown, "typeOfLevel.def",conceptsMasterDir,conceptsLocalDirECMF);
|
||||
concept_nofail typeOfLevelECMF (unknown, "typeOfLevel.def",conceptsMasterDir,conceptsLocalDirECMF);
|
||||
concept_nofail vertical.typeOfLevel (typeOfLevelECMF, "typeOfLevel.def",conceptsDir2,conceptsDir1);
|
||||
|
||||
when ( typeOfLevel is "isobaricInPa" ) { set pressureUnits="Pa"; }
|
||||
|
@ -113,11 +113,11 @@ if( indicatorOfTypeOfLevel == 109 ||
|
|||
alias mars.levelist = level;
|
||||
}
|
||||
|
||||
unsigned[1] yearOfCentury : edition_specific ;
|
||||
unsigned[1] month ;
|
||||
unsigned[1] day ;
|
||||
unsigned[1] hour ;
|
||||
unsigned[1] minute ;
|
||||
unsigned[1] yearOfCentury : edition_specific;
|
||||
unsigned[1] month;
|
||||
unsigned[1] day;
|
||||
unsigned[1] hour;
|
||||
unsigned[1] minute;
|
||||
transient second = 0;
|
||||
|
||||
codetable[1] unitOfTimeRange 'grib1/4.table' = 1 : edition_specific;
|
||||
|
@ -129,14 +129,14 @@ unsigned[1] P1 : edition_specific;
|
|||
unsigned[1] P2 : edition_specific;
|
||||
|
||||
# Local comes before Master to give precedence to the local, centre-specific table
|
||||
codetable[1] timeRangeIndicator ('5.table',tablesLocalDir,tablesMasterDir) = 1 : dump,edition_specific;
|
||||
codetable[1] timeRangeIndicator ('5.table',tablesLocalDir,tablesMasterDir) = 1 : dump,edition_specific;
|
||||
|
||||
unsigned[2] numberIncludedInAverage;
|
||||
|
||||
meta mybits bits(numberIncludedInAverage,0,12);
|
||||
|
||||
unsigned[1] numberMissingFromAveragesOrAccumulations;
|
||||
unsigned[1] centuryOfReferenceTimeOfData ;
|
||||
unsigned[1] centuryOfReferenceTimeOfData;
|
||||
|
||||
codetable[1] subCentre 'grib1/0.[centre].table' : dump;
|
||||
|
||||
|
@ -179,7 +179,7 @@ transient setLocalDefinition= 0 : no_copy;
|
|||
transient optimizeScaleFactor = 0;
|
||||
|
||||
meta dataDate g1date(centuryOfReferenceTimeOfData,yearOfCentury,month,day) : dump;
|
||||
meta year evaluate(dataDate / 10000) ;
|
||||
meta year evaluate(dataDate / 10000);
|
||||
|
||||
meta dataTime time(hour,minute,second) : dump;
|
||||
meta julianDay julian_day(dataDate,hour,minute,second) : edition_specific;
|
||||
|
@ -195,18 +195,18 @@ concept_nofail stepType (timeRangeIndicator, "stepType.def", conceptsDir2, conce
|
|||
#alias timeIncrement=zero;
|
||||
|
||||
#if (timeRangeIndicator==113) {
|
||||
# alias lengthOfTimeRange=numberIncludedInAverage;
|
||||
# alias indicatorOfUnitForTimeRange=unitOfTimeRange;
|
||||
# alias indicatorOfUnitForTimeIncrement=unitOfTimeRange;
|
||||
# alias timeIncrement=P2;
|
||||
# alias forecastTime=P1;
|
||||
# alias lengthOfTimeRange=numberIncludedInAverage;
|
||||
# alias indicatorOfUnitForTimeRange=unitOfTimeRange;
|
||||
# alias indicatorOfUnitForTimeIncrement=unitOfTimeRange;
|
||||
# alias timeIncrement=P2;
|
||||
# alias forecastTime=P1;
|
||||
#}
|
||||
|
||||
#if (stepType is "accum") {
|
||||
# transient accumulationRange=P2-P1;
|
||||
# alias lengthOfTimeRange=accumulationRange;
|
||||
# alias forecastTime=P1;
|
||||
# alias indicatorOfUnitForTimeRange=unitOfTimeRange;
|
||||
# transient accumulationRange=P2-P1;
|
||||
# alias lengthOfTimeRange=accumulationRange;
|
||||
# alias forecastTime=P1;
|
||||
# alias indicatorOfUnitForTimeRange=unitOfTimeRange;
|
||||
#}
|
||||
|
||||
#conversion 1->2
|
||||
|
@ -255,7 +255,7 @@ if(((section1Length > 40) or new() or setLocalDefinition> 0) and deleteLocalDefi
|
|||
{
|
||||
constant localUsePresent = 1 : edition_specific;
|
||||
alias grib2LocalSectionPresent=present;
|
||||
|
||||
|
||||
if( (centre == ECMWF) or
|
||||
(centre != ECMWF and
|
||||
subCentre == ECMWF))
|
||||
|
@ -279,7 +279,7 @@ if(((section1Length > 40) or new() or setLocalDefinition> 0) and deleteLocalDefi
|
|||
# Other centres
|
||||
pad reservedNeedNotBePresent(12);
|
||||
template_nofail localDefinition "grib1/local.[centre:l].def";
|
||||
|
||||
|
||||
section_padding localExtensionPadding : read_only;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -668,12 +668,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'sm' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
@ -790,7 +790,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -1349,12 +1349,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'sm' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
@ -1471,7 +1471,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gh' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -2030,12 +2030,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'sm' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'st' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gpm' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -668,12 +668,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'kg m**-3' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'K' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
@ -790,7 +790,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gpm' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -1349,12 +1349,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'kg m**-3' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'K' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
@ -1471,7 +1471,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 44 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'gpm' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 7 ;
|
||||
|
@ -2030,12 +2030,12 @@
|
|||
indicatorOfParameter = 7 ;
|
||||
indicatorOfTypeOfLevel = 1 ;
|
||||
}
|
||||
#Soil Moisture
|
||||
#Soil moisture
|
||||
'kg m**-3' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 86 ;
|
||||
}
|
||||
#Soil Temperature
|
||||
#Soil temperature
|
||||
'K' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
|
|
|
@ -16,8 +16,6 @@ constant tablesVersionLatest = 28 : edition_specific;
|
|||
constant million = 1000000 : hidden;
|
||||
constant grib2divider = 1000000;
|
||||
alias extraDimensionPresent=zero;
|
||||
alias is_tigge = zero;
|
||||
alias is_s2s = zero;
|
||||
transient angleSubdivisions=grib2divider; # micro degrees
|
||||
|
||||
meta gts_header gts_header() : no_copy,hidden,read_only;
|
||||
|
|
|
@ -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 ;
|
||||
|
@ -308,7 +306,7 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 13 ;
|
||||
}
|
||||
#Geopotential Height
|
||||
#Geopotential height
|
||||
'geopotential_height' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 3 ;
|
||||
|
|
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
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 14 Feb 2014
|
||||
# modified:
|
||||
#
|
||||
#################################
|
||||
### LOCAL SECTION DESCRIPTION ###
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#########################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 14 Feb 2014
|
||||
# modified:
|
||||
#
|
||||
#################################
|
||||
### LOCAL SECTION DESCRIPTION ###
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#################################################
|
||||
#
|
||||
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
|
||||
# author: Sebastien Villaume
|
||||
# created: 14 Feb 2014
|
||||
# modified:
|
||||
#
|
||||
#################################
|
||||
### LOCAL SECTION DESCRIPTION ###
|
||||
|
|
|
@ -40,28 +40,6 @@ unsigned[2] anoffsetFrequency = missing(): dump, can_be_missing;
|
|||
# Boolean
|
||||
transient lsdate_bug = 1: hidden; # See ECC-707
|
||||
|
||||
# Note: the key typeOfPostProcessing is in the PDTNs 70, 71, 72, 73, 93, 94, 95, or 96
|
||||
concept efas_post_proc {
|
||||
"unknown" = { typeOfPostProcessing = 0; }
|
||||
"lisflood" = { typeOfPostProcessing = 1; }
|
||||
"lisflood_eric" = { typeOfPostProcessing = 2; }
|
||||
"lisflood_season" = { typeOfPostProcessing = 3; }
|
||||
"lisflood_merged" = { typeOfPostProcessing = 4; }
|
||||
"lisflood_global" = { typeOfPostProcessing = 5; }
|
||||
"geff" = { typeOfPostProcessing = 10; }
|
||||
"ericha" = { typeOfPostProcessing = 51; }
|
||||
"htessel_lisflood" = { typeOfPostProcessing = 101; }
|
||||
"htessel_eric" = { typeOfPostProcessing = 102; }
|
||||
"htessel_camaflood" = { typeOfPostProcessing = 103; }
|
||||
"epic" = { typeOfPostProcessing = 152; }
|
||||
"jules_mrm" = { typeOfPostProcessing = 201; }
|
||||
"htessel_mrm" = { typeOfPostProcessing = 202; }
|
||||
"mhm_mrm" = { typeOfPostProcessing = 203; }
|
||||
"pcrg_mrm" = { typeOfPostProcessing = 204; }
|
||||
"meteogrid" = { typeOfPostProcessing = 205; }
|
||||
"unknown" = { dummy = 1; }
|
||||
} : hidden;
|
||||
|
||||
#Domain. Missing, local or global
|
||||
#codetable[1] efasDomain "grib2/tables/local/ecmf/efas_domain.table" = 255 : dump, string_type;
|
||||
#unsigned[1] efas_domain = missing() : can_be_missing, dump;
|
||||
|
|
|
@ -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;
|
|
@ -20,7 +20,7 @@ if(type != perturbedType)
|
|||
# Ritz numbers:
|
||||
signed[4] NINT_LOG10_RITZ : dump ;
|
||||
signed[4] NINT_RITZ_EXP : dump ;
|
||||
|
||||
|
||||
alias local.numberOfIterations= numberOfIterations;
|
||||
alias local.numberOfSingularVectorsComputed= numberOfSingularVectorsComputed ;
|
||||
alias local.normAtInitialTime= normAtInitialTime ;
|
||||
|
|
|
@ -1,38 +1,4 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Sea ice area fraction
|
||||
'Sea ice area fraction' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Sea ice area fraction
|
||||
'Sea ice area fraction' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
subCentre = 102 ;
|
||||
is_s2s = 1 ;
|
||||
}
|
||||
#2 metre dewpoint temperature
|
||||
'2 metre dewpoint temperature' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
typeOfFirstFixedSurface = 103 ;
|
||||
scaledValueOfFirstFixedSurface = 2 ;
|
||||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
}
|
||||
#2 metre dewpoint temperature
|
||||
'2 metre dewpoint temperature' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
typeOfFirstFixedSurface = 103 ;
|
||||
scaledValueOfFirstFixedSurface = 2 ;
|
||||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
subCentre = 102 ;
|
||||
is_s2s = 1 ;
|
||||
}
|
||||
#Pressure (S) (not reduced)
|
||||
'Pressure (S) (not reduced)' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,38 +1,4 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Sea ice area fraction
|
||||
'31' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Sea ice area fraction
|
||||
'31' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
subCentre = 102 ;
|
||||
is_s2s = 1 ;
|
||||
}
|
||||
#2 metre dewpoint temperature
|
||||
'168' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
typeOfFirstFixedSurface = 103 ;
|
||||
scaledValueOfFirstFixedSurface = 2 ;
|
||||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
}
|
||||
#2 metre dewpoint temperature
|
||||
'168' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
typeOfFirstFixedSurface = 103 ;
|
||||
scaledValueOfFirstFixedSurface = 2 ;
|
||||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
subCentre = 102 ;
|
||||
is_s2s = 1 ;
|
||||
}
|
||||
#Pressure (S) (not reduced)
|
||||
'500000' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,38 +1,4 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Sea ice area fraction
|
||||
'ci' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Sea ice area fraction
|
||||
'ci' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
subCentre = 102 ;
|
||||
is_s2s = 1 ;
|
||||
}
|
||||
#2 metre dewpoint temperature
|
||||
'2d' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
typeOfFirstFixedSurface = 103 ;
|
||||
scaledValueOfFirstFixedSurface = 2 ;
|
||||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
}
|
||||
#2 metre dewpoint temperature
|
||||
'2d' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
typeOfFirstFixedSurface = 103 ;
|
||||
scaledValueOfFirstFixedSurface = 2 ;
|
||||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
subCentre = 102 ;
|
||||
is_s2s = 1 ;
|
||||
}
|
||||
#Pressure (S) (not reduced)
|
||||
'ps' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -1,38 +1,4 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Sea ice area fraction
|
||||
'(0 - 1)' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Sea ice area fraction
|
||||
'(0 - 1)' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
subCentre = 102 ;
|
||||
is_s2s = 1 ;
|
||||
}
|
||||
#2 metre dewpoint temperature
|
||||
'K' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
typeOfFirstFixedSurface = 103 ;
|
||||
scaledValueOfFirstFixedSurface = 2 ;
|
||||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
}
|
||||
#2 metre dewpoint temperature
|
||||
'K' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 6 ;
|
||||
typeOfFirstFixedSurface = 103 ;
|
||||
scaledValueOfFirstFixedSurface = 2 ;
|
||||
scaleFactorOfFirstFixedSurface = 0 ;
|
||||
subCentre = 102 ;
|
||||
is_s2s = 1 ;
|
||||
}
|
||||
#Pressure (S) (not reduced)
|
||||
'Pa' = {
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,63 +1,63 @@
|
|||
'S' = {
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 119;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 119;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
}
|
||||
'H' = {
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 103;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 103;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
}
|
||||
'P' = {
|
||||
ZLMULT = 1.0000000e-02;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 100;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
ZLMULT = 1.0000000e-02;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 100;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
}
|
||||
'V' = {
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 109;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 109;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
}
|
||||
'T' = {
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 20;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 20;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
}
|
||||
'KT' = {
|
||||
ZLBASE = 1.5000000e-01;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 20;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
ZLBASE = 1.5000000e-01;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 20;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
}
|
||||
'KB' = {
|
||||
ZLBASE = 1.5000000e-01;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 20;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
ZLBASE = 1.5000000e-01;
|
||||
parameterCategory = 255;
|
||||
parameterNumber = 255;
|
||||
scaleFactorOfFirstFixedSurface = 0;
|
||||
scaledValueOfFirstFixedSurface = 0;
|
||||
typeOfFirstFixedSurface = 20;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
}
|
||||
'default' = {
|
||||
typeOfFirstFixedSurface = 255;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
typeOfFirstFixedSurface = 255;
|
||||
typeOfSecondFixedSurface = 255;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
# Automatically generated by ./create_def.pl, do not edit
|
||||
#Sea ice area fraction
|
||||
'sea_ice_area_fraction' = {
|
||||
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 ;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue