Skip to content

Commit f7730c5

Browse files
committed
Merge release/2.30.0 to master
2 parents b7d9c05 + 5c3840c commit f7730c5

File tree

454 files changed

+13926
-6269
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

454 files changed

+13926
-6269
lines changed

.clang-format

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ AccessModifierOffset: -4
44
AlignAfterOpenBracket: Align
55
AlignConsecutiveAssignments: true
66
AlignConsecutiveDeclarations: false
7+
AlignConsecutiveMacros: true
78
AlignEscapedNewlines: Left
89
AlignOperands: true
910
AlignTrailingComments: true
@@ -66,6 +67,7 @@ IncludeCategories:
6667
Priority: 3
6768
IncludeIsMainRegex: '([-_](test|unittest))?$'
6869
IndentCaseLabels: true
70+
IndentPPDirectives: BeforeHash
6971
IndentWidth: 4
7072
IndentWrappedFunctionNames: false
7173
JavaScriptQuotes: Leave

.github/.cmake-options

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-DENABLE_EXTRA_TESTS=1

CMakeLists.txt

+11-10
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ cmake_minimum_required( VERSION 3.12 FATAL_ERROR )
2121
find_package( ecbuild 3.7 REQUIRED HINTS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../ecbuild)
2222

2323
# Initialise project
24-
project( eccodes VERSION 2.29.1 LANGUAGES CXX )
24+
project( eccodes VERSION 2.30.0 LANGUAGES CXX )
2525
set(CMAKE_CXX_STANDARD 11)
2626
set(CMAKE_CXX_STANDARD_REQUIRED ON)
2727

@@ -65,6 +65,11 @@ ecbuild_debug("ECCODES_BIG_ENDIAN=${ECCODES_BIG_ENDIAN}")
6565
ecbuild_debug("ECCODES_LITTLE_ENDIAN=${ECCODES_LITTLE_ENDIAN}")
6666
ecbuild_info("Operating system=${CMAKE_SYSTEM} (${EC_OS_BITS} bits)")
6767

68+
# Only support 64 bit operating systems
69+
if( NOT EC_OS_BITS EQUAL "64" )
70+
ecbuild_critical( "Operating system ${CMAKE_SYSTEM} (${EC_OS_BITS} bits) -- ecCodes only supports 64 bit platforms" )
71+
endif()
72+
6873
###############################################################################
6974
# some variables/options of this project
7075

@@ -315,11 +320,6 @@ if( IEEE_LE )
315320
set( IEEE_BE 0 )
316321
endif()
317322

318-
set( ECCODES_ON_LINUX_32BIT 0 )
319-
if( EC_OS_NAME MATCHES "linux" AND EC_OS_BITS EQUAL "32" )
320-
set( ECCODES_ON_LINUX_32BIT 1 )
321-
endif()
322-
323323
set( ECCODES_ON_WINDOWS 0 )
324324
if( EC_OS_NAME MATCHES "windows" )
325325
# Symbols need to be explicitly exported on Windows so we can link to dlls.
@@ -430,11 +430,12 @@ add_subdirectory( samples )
430430
add_subdirectory( ifs_samples ) # must come after samples
431431

432432
# ecbuild_dont_pack( DIRS samples DONT_PACK_REGEX "*.grib" )
433+
ecbuild_dont_pack( FILES .cproject .project )
433434
ecbuild_dont_pack( DIRS
434-
experimental deprecated doxygen confluence tests/tests.ecmwf
435-
config m4 examples/F77 src/deprecated tools/deprecated ifs_samples/grib1_mlgrib2_ieee32
436-
examples/examples.dev examples/extra examples/deprecated bamboo
437-
fortran/fortranCtypes tigge/tools share/eccodes .settings )
435+
experimental deprecated doxygen confluence tests/deprecated tests/tests.ecmwf
436+
src/deprecated tools/deprecated ifs_samples/grib1_mlgrib2_ieee32
437+
examples/examples.dev examples/extra examples/deprecated bamboo
438+
fortran/fortranCtypes tigge/tools share/eccodes .settings )
438439
#ecbuild_dont_pack( DIRS data/bufr DONT_PACK_REGEX "*.bufr" )
439440
#ecbuild_dont_pack( DIRS data/tigge DONT_PACK_REGEX "*.grib" )
440441

bamboo/GCC-env.sh

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
#!/bin/bash
22

3-
[[ $(uname) == "Darwin" ]] && return
3+
# [[ $(uname) == "Darwin" ]] && return
44

55
# initialise module environment if it is not
6-
if [[ ! $(command -v module > /dev/null 2>&1) ]]; then
7-
. /usr/local/apps/module/init/bash
8-
fi
6+
#if [[ ! $(command -v module > /dev/null 2>&1) ]]; then
7+
# . /usr/local/apps/module/init/bash
8+
#fi
99

10-
module unload grib_api
11-
module unload eccodes
12-
module unload emos
13-
module unload fftw
14-
module unload libemos
15-
module unload metview
10+
#module unload grib_api
11+
#module unload eccodes
12+
#module unload emos
13+
#module unload fftw
14+
#module unload libemos
15+
#module unload metview
1616

17-
module load cmake/3.16.5
18-
module load aec
17+
#module load cmake/3.16.5
18+
#module load aec
1919

data/CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# data/CMakeLists.txt
2+
set(ECBUILD_DOWNLOAD_TIMEOUT 60)
3+
set(ECBUILD_DOWNLOAD_RETRIES 3)
4+
25
add_subdirectory(tigge)
36
add_subdirectory(bufr)
47
add_subdirectory(metar)

data/bufr/CMakeLists.txt

+9-4
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,18 @@ file(READ "bufr_ref_files.txt" bufr_refs_to_download)
1212
string(REGEX REPLACE "\n" ";" bufr_refs_to_download "${bufr_refs_to_download}")
1313

1414
# Exceptional case: download bufr files which have to be treated specially
15-
list(APPEND bufr_refs_to_download "vos308014_v3_26.bufr") # See test ecc-197
15+
list(APPEND bufr_files_to_download "vos308014_v3_26.bufr") # See test ecc-197
1616

1717
if( ENABLE_EXTRA_TESTS )
1818
ecbuild_get_test_multidata(
19-
TARGET eccodes_download_bufrs
20-
NOCHECK
21-
NAMES ${bufr_files_to_download} ${bufr_refs_to_download}
19+
TARGET eccodes_download_bufrs
20+
NOCHECK
21+
NAMES ${bufr_files_to_download}
22+
)
23+
ecbuild_get_test_multidata(
24+
TARGET eccodes_download_bufr_refs
25+
NOCHECK
26+
NAMES ${bufr_refs_to_download}
2227
)
2328
endif()
2429

data/bufr/bufr_ref_files.txt

-104
Original file line numberDiff line numberDiff line change
@@ -262,110 +262,6 @@ synop_multi_subset.bufr.desc.ref
262262
aaen_55.bufr.ls.ref
263263
syno_multi.bufr.header.ref
264264
207003.bufr.json.ref
265-
new_207003.bufr.ref
266-
new_aaen_55.bufr.ref
267-
new_aben_55.bufr.ref
268-
new_ahws_139.bufr.ref
269-
new_airc_142.bufr.ref
270-
new_airc_144.bufr.ref
271-
new_airs_57.bufr.ref
272-
new_alws_139.bufr.ref
273-
new_amda_144.bufr.ref
274-
new_amsa_55.bufr.ref
275-
new_amsb_55.bufr.ref
276-
new_amse_55.bufr.ref
277-
new_amsu_55.bufr.ref
278-
new_amv2_87.bufr.ref
279-
new_amv3_87.bufr.ref
280-
new_asbh_139.bufr.ref
281-
new_asbl_139.bufr.ref
282-
new_asca_139.bufr.ref
283-
new_asch_139.bufr.ref
284-
new_ascs_139.bufr.ref
285-
new_aseh_139.bufr.ref
286-
new_asel_139.bufr.ref
287-
new_ashs_139.bufr.ref
288-
new_atap_55.bufr.ref
289-
new_ateu_155.bufr.ref
290-
new_atms_201.bufr.ref
291-
new_atov_55.bufr.ref
292-
new_avhm_87.bufr.ref
293-
new_avhn_87.bufr.ref
294-
new_avhr_58.bufr.ref
295-
new_b002_95.bufr.ref
296-
new_b002_96.bufr.ref
297-
new_b003_56.bufr.ref
298-
new_b004_145.bufr.ref
299-
new_b005_87.bufr.ref
300-
new_b006_96.bufr.ref
301-
new_b007_31.bufr.ref
302-
new_bssh_170.bufr.ref
303-
new_bssh_176.bufr.ref
304-
new_bssh_178.bufr.ref
305-
new_bssh_180.bufr.ref
306-
new_btem_109.bufr.ref
307-
new_buoy_27.bufr.ref
308-
new_cmwi_87.bufr.ref
309-
new_cmwn_87.bufr.ref
310-
new_cnow_28.bufr.ref
311-
new_cori_156.bufr.ref
312-
new_crit_202.bufr.ref
313-
new_emsg_87.bufr.ref
314-
new_euwv_87.bufr.ref
315-
new_fy3a_154.bufr.ref
316-
new_fy3b_154.bufr.ref
317-
new_go15_87.bufr.ref
318-
new_goee_87.bufr.ref
319-
new_goes_87.bufr.ref
320-
new_grst_26.bufr.ref
321-
new_gst4_26.bufr.ref
322-
new_hirb_55.bufr.ref
323-
new_hirs_55.bufr.ref
324-
new_ias1_240.bufr.ref
325-
new_iasi_241.bufr.ref
326-
new_itwt_233.bufr.ref
327-
new_j2eo_216.bufr.ref
328-
new_j2nb_216.bufr.ref
329-
new_jaso_214.bufr.ref
330-
new_meta_140.bufr.ref
331-
new_mhen_55.bufr.ref
332-
new_mhsa_55.bufr.ref
333-
new_mhsb_55.bufr.ref
334-
new_mhse_55.bufr.ref
335-
new_modi_87.bufr.ref
336-
new_modw_87.bufr.ref
337-
new_monw_87.bufr.ref
338-
new_mytemp.bufr.ref
339-
new_new.bufr.ref
340-
new_ocea_131.bufr.ref
341-
new_ocea_132.bufr.ref
342-
new_ocea_133.bufr.ref
343-
new_ocea_21.bufr.ref
344-
new_pgps_110.bufr.ref
345-
new_pilo_91.bufr.ref
346-
new_s4kn_165.bufr.ref
347-
new_ship_13.bufr.ref
348-
new_ship_19.bufr.ref
349-
new_ship_9.bufr.ref
350-
new_smin_49.bufr.ref
351-
new_smis_49.bufr.ref
352-
new_smiu_49.bufr.ref
353-
new_smos_203.bufr.ref
354-
new_sn4k_165.bufr.ref
355-
new_soil_7.bufr.ref
356-
new_ssbt_127.bufr.ref
357-
new_stuk_7.bufr.ref
358-
new_syno_1.bufr.ref
359-
new_syno_3.bufr.ref
360-
new_syno_4.bufr.ref
361-
new_syno_multi.bufr.ref
362-
new_synop_multi_subset.bufr.ref
363-
new_temp_101.bufr.ref
364-
new_temp_102.bufr.ref
365-
new_temp_106.bufr.ref
366-
new_tmr7_129.bufr.ref
367-
new_tros_31.bufr.ref
368-
new_wavb_134.bufr.ref
369265
311001.bufr.ref
370266
uegabe.bufr.num.ref
371267
syno.bufr.out.ref

definitions/add_params_from_tsv.pl

+46-12
Original file line numberDiff line numberDiff line change
@@ -105,38 +105,65 @@
105105
if ($SANITY_CHECK) {
106106
my %map_sn = (); # map of shortNames
107107
my %map_pid = (); # map of paramIds
108+
my $sanity_error_count = 0;
108109
print "Checking sanity: uniqueness of paramId and shortName keys ...\n";
109110
while (<>) {
110111
chomp;
112+
$lcount++;
111113
s/\r//g; # Remove DOS carriage returns
112114
if ($first == 1) {
113115
$first = 0;
114116
next;
115117
}
116-
$lcount++;
118+
117119
($paramId, $shortName, $name, $units) = split(/\t/);
118120

119-
die "Error: shortName=$shortName is duplicated (line ", $lcount+1, ")\n" if (exists $map_sn{$shortName});
121+
die "Error: shortName=$shortName is duplicated (line $lcount)\n" if (exists $map_sn{$shortName});
120122
$map_sn{$shortName}++; # increment count in shortName map
121123

122-
die "Error: paramId=$paramId is duplicated (line ", $lcount+1, ")\n" if (exists $map_pid{$paramId});
124+
die "Error: paramId=$paramId is duplicated (line $lcount)\n" if (exists $map_pid{$paramId});
123125
$map_pid{$paramId}++; # increment count in paramId map
124126

125-
die "Error: paramId=$paramId is not an integer (line ", $lcount+1, ")\n" if (!is_integer($paramId));
127+
if (!is_integer($paramId)) {
128+
warn "Error: paramId=$paramId is not an integer (line $lcount)\n";
129+
$sanity_error_count++;
130+
}
126131

127132
my $x = $dbh->selectrow_array("select * from param.param where id = ?",undef,$paramId);
128-
die "Error: paramId=$x exists in the database (line ", $lcount+1, ")\n" if (defined $x);
129-
130-
die "Error: Name '$name': ends in space" if ($name =~ / $/);
131-
die "Error: Name '$name': starts with space" if ($name =~ /^ /);
133+
if (defined $x) {
134+
warn "Error: paramId=$x exists in the database (line $lcount)\n";
135+
$sanity_error_count++;
136+
}
132137

133-
# Will die if it fails
134-
get_db_units_code($units);
138+
if ($name =~ / $/) {
139+
warn "Error: Name '$name': ends in space" ;
140+
$sanity_error_count++;
141+
}
142+
if ($name =~ /^ /) {
143+
warn "Error: Name '$name': starts with space" ;
144+
$sanity_error_count++;
145+
}
146+
if ($name !~ /^[A-Z0-9]/) {
147+
warn "Error: name \"$name\" should have uppercase 1st letter or digit (line $lcount)\n";
148+
$sanity_error_count++;
149+
}
135150

136151
$x = $dbh->selectrow_array("select shortName from param.param where shortName = ?",undef,$shortName);
137-
die "Error: shortName=$x exists in the database (line ", $lcount+1, ")\n" if (defined $x);
152+
if (defined $x) {
153+
warn "Error: shortName=$x exists in the database (line $lcount)\n";
154+
$sanity_error_count++;
155+
}
156+
157+
if (!check_units($units)) {
158+
warn "Error: Database does not contain units=$units (line $lcount)\n";
159+
$sanity_error_count++;
160+
}
161+
}
162+
if ($sanity_error_count == 0) {
163+
print "\nSanity checking completed. $lcount rows checked. No errors.\n";
164+
} else {
165+
die "\nSanity checking FAILED. $lcount rows checked. $sanity_error_count error(s).\n";
138166
}
139-
print "\nSanity checking completed. $lcount rows checked. No errors.\nExiting.\n";
140167
exit 0;
141168
}
142169

@@ -298,6 +325,13 @@ sub centre_as_str {
298325
return "ECMWF" if ($cc eq $centre_ecmwf);
299326
return "Unknown";
300327
}
328+
sub check_units {
329+
my $u = shift;
330+
my $unit_id = $dbh->selectrow_array("select id from units where name = ?",undef,$u);
331+
return 0 if (!$unit_id);
332+
return 1;
333+
}
334+
301335
sub get_db_units_code {
302336
my $u = shift;
303337
my $unit_id = $dbh->selectrow_array("select id from units where name = ?",undef,$u);

definitions/dummy.am

Whitespace-only changes.

definitions/grib1/section.1.def

-2
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,6 @@ codetable[1] timeRangeIndicator ('5.table',tablesLocalDir,tablesMasterDir) = 1 :
137137

138138
unsigned[2] numberIncludedInAverage;
139139

140-
meta mybits bits(numberIncludedInAverage,0,12);
141-
142140
unsigned[1] numberMissingFromAveragesOrAccumulations;
143141
unsigned[1] centuryOfReferenceTimeOfData;
144142

definitions/grib2/cfName.def

+12
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,18 @@
190190
scaledValueOfSecondFixedSurface = missing() ;
191191
scaleFactorOfSecondFixedSurface = missing() ;
192192
}
193+
#Heat flux correction
194+
'heat_flux_correction' = {
195+
discipline = 10 ;
196+
parameterCategory = 3 ;
197+
parameterNumber = 18 ;
198+
typeOfFirstFixedSurface = 160 ;
199+
typeOfSecondFixedSurface = 255 ;
200+
scaledValueOfFirstFixedSurface = 0 ;
201+
scaleFactorOfFirstFixedSurface = 0 ;
202+
scaledValueOfSecondFixedSurface = missing() ;
203+
scaleFactorOfSecondFixedSurface = missing() ;
204+
}
193205
#Eastward sea water velocity
194206
'eastward_sea_water_velocity' = {
195207
discipline = 10 ;

0 commit comments

Comments
 (0)