Merge release/2.25.0 to master

This commit is contained in:
Shahram Najm 2022-03-02 14:17:35 +00:00
commit 6efa9fc528
587 changed files with 20880 additions and 22556 deletions

View File

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

View File

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

View File

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

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

View File

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

View File

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

View File

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

View File

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

View File

@ -18,14 +18,18 @@
#
# AEC_DIR - prefix path of the AEC installation
# AEC_PATH - prefix path of the AEC installation
# LIBAEC_DIR
# libaec_DIR
# LIBAEC_PATH
# libaec_PATH
find_path( AEC_INCLUDE_DIR szlib.h
PATHS ${AEC_DIR} ${AEC_PATH} ENV AEC_DIR ENV AEC_PATH
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 )

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -44,7 +44,7 @@ if (numberOfChars >= 12) {
alias expver=experimentVersionNumber;
alias marsExpver=experimentVersionNumber;
constant numberOfRemaininChars = numberOfChars - 12;
charValues list(numberOfRemaininChars) {

View File

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

View File

@ -62,5 +62,3 @@
"Siral" = { unexpandedDescriptors = 312071 ; }
"IasiL1c" = { unexpandedDescriptors = 340007 ; }
"SaralAltika" = { unexpandedDescriptors = 340011 ; }

View File

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

View File

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

View File

@ -1,6 +1,6 @@
#########################
##
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
## author: Sebastien Villaume
## created: 6 Oct 2011
## modified: 13 May 2013
##

View File

@ -1,6 +1,6 @@
#########################
##
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
## author: Sebastien Villaume
## created: 6 Oct 2011
## modified: 13 May 2013
##

View File

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

View File

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

View File

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

View File

@ -49,7 +49,7 @@ if(bitmapPresent) {
): read_only;
alias data.packedValues = codedValues;
if (boustrophedonicOrdering)
{
if (GRIBEX_boustrophedonic)

View File

@ -49,7 +49,7 @@ if(bitmapPresent) {
): read_only;
alias data.packedValues = codedValues;
if (boustrophedonicOrdering)
{
if (GRIBEX_boustrophedonic)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 6 Oct 2011
# modified: 20 Feb 2014
#

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -394,7 +394,7 @@
table2Version = 190 ;
indicatorOfParameter = 155 ;
}
#Geopotential Height
#Geopotential height
'geopotential_height' = {
table2Version = 128 ;
indicatorOfParameter = 156 ;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 6 Oct 2011
# modified: 13 May 2013
#

View File

@ -1,8 +1,7 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 13 May 2013
# modified:
#
#########################
"none"={matchAerosolBinNumber=0;}

View File

@ -1,6 +1,6 @@
#########################
##
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
## author: Sebastien Villaume
## created: 6 Oct 2011
## modified: 13 May 2013
##

View File

@ -1,8 +1,7 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 13 May 2013
# modified:
#
#########################
"all"={matchLandType=0;}

View File

@ -1,6 +1,6 @@
#########################
##
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
## author: Sebastien Villaume
## created: 6 Oct 2011
## modified: 13 May 2013
##

View File

@ -1,6 +1,6 @@
#########################
##
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
## author: Sebastien Villaume
## created: 6 Oct 2011
## modified: 13 May 2013
##

View File

@ -1,8 +1,7 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 13 May 2013
# modified:
#
#########################
"none"={matchSort=0;}

View File

@ -1,8 +1,7 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 13 May 2013
# modified:
#
#########################
"none"={matchTimeRepres=0;}

View File

@ -1,6 +1,6 @@
#########################
##
## author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
## author: Sebastien Villaume
## created: 6 Oct 2011
## modified: 13 May 2013
##

View File

@ -1,6 +1,6 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 6 Oct 2011
# modified: 13 May 2013
#

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 6 Oct 2011
# modified: 13 May 2013
#

View File

@ -54,7 +54,3 @@ if (stepType is "instant" ) {
}
}
}
# monthly mean
#if (timeRangeIndicator==113) {
#}

View File

@ -1,6 +1,6 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 6 Oct 2011
# modified: 13 Sep 2013
#

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,8 +1,7 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 14 Feb 2014
# modified:
#
#################################
### LOCAL SECTION DESCRIPTION ###

View File

@ -1,8 +1,7 @@
#########################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 14 Feb 2014
# modified:
#
#################################
### LOCAL SECTION DESCRIPTION ###

View File

@ -1,8 +1,7 @@
#################################################
#
# author: Sebastien Villaume <Sebastien.Villaume@smhi.se>
# author: Sebastien Villaume
# created: 14 Feb 2014
# modified:
#
#################################
### LOCAL SECTION DESCRIPTION ###

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

Some files were not shown because too many files have changed in this diff Show More