Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WMO Grib2 v33.0.0 updates to grib2_all_tables_module.F90 #144

Merged
merged 27 commits into from
Dec 21, 2024
Merged
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e7bb4bd
table 1.0
AlysonStahl-NOAA Dec 20, 2024
638909d
Update grib2_all_tables_module.F90
AlysonStahl-NOAA Dec 20, 2024
2bd0f7e
fix indices
AlysonStahl-NOAA Dec 20, 2024
7cab576
debug
AlysonStahl-NOAA Dec 20, 2024
3b0a5de
Update test_all_key_tables.F90
AlysonStahl-NOAA Dec 20, 2024
f313e63
Update test_all_key_tables.F90
AlysonStahl-NOAA Dec 20, 2024
5eebba4
table 1.2
AlysonStahl-NOAA Dec 20, 2024
7e416e0
Update grib2_all_tables_module.F90
AlysonStahl-NOAA Dec 20, 2024
59acfa1
table 1.3
AlysonStahl-NOAA Dec 20, 2024
79f8418
add some update comments
AlysonStahl-NOAA Dec 20, 2024
e98d402
table 4.3
AlysonStahl-NOAA Dec 20, 2024
2fb6120
table 4.5 17-19
AlysonStahl-NOAA Dec 20, 2024
e549fe4
Update grib2_all_tables_module.F90
AlysonStahl-NOAA Dec 20, 2024
93a0309
table 4.5 26-27
AlysonStahl-NOAA Dec 20, 2024
1846a55
table 4.5 30-35
AlysonStahl-NOAA Dec 20, 2024
1bcdfb5
table 4.5 152
AlysonStahl-NOAA Dec 20, 2024
22a75e6
table 4.5 171-173
AlysonStahl-NOAA Dec 20, 2024
829cad9
Merge branch 'develop' into as_wmo_updates
AlysonStahl-NOAA Dec 20, 2024
ccee91e
table 4.5 180-189
AlysonStahl-NOAA Dec 20, 2024
b0f2b21
table 4.7
AlysonStahl-NOAA Dec 20, 2024
16a03ff
table 4.9
AlysonStahl-NOAA Dec 20, 2024
ae3570c
table 4.10
AlysonStahl-NOAA Dec 20, 2024
206eeff
table 4.233
AlysonStahl-NOAA Dec 20, 2024
1a55823
table 5.0
AlysonStahl-NOAA Dec 20, 2024
41ba51d
on388 table 0
AlysonStahl-NOAA Dec 21, 2024
426c4a1
on388 table a
AlysonStahl-NOAA Dec 21, 2024
7a13121
comment
AlysonStahl-NOAA Dec 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 92 additions & 2 deletions src/grib2_all_tables_module.F90
Original file line number Diff line number Diff line change
@@ -20,6 +20,7 @@
!> 2021/04/20 | Boi Vuong | Updated table 4.3, 4.5,4.7 and on388_tablea
!> 2023/03/30 | Andrew Benjamin | Added new entires to on388)_tablea
!> 2024/02/23 | Andrew Benjamin | Added new subcenter to on388)_tablec
!> 2024/12/20 | Alyson Stahl | Added multiple entries from 2024 WMO updates
!>
!> @author Jun Wang @date 2012/01/25
module grib2_all_tables_module
@@ -142,7 +143,14 @@ module grib2_all_tables_module
data table1_0(27) /version_no('v112020',26)/
data table1_0(28) /version_no('v052021',27)/
data table1_0(29) /version_no('v112021',28)/
data table1_0(30) /version_no('preoper',29)/
!
! Added Version Number (12/20/2024)
!
data table1_0(30) /version_no('v052022',29)/
data table1_0(31) /version_no('v112022',30)/
data table1_0(32) /version_no('v062023',31)/
data table1_0(33) /version_no('v112023',32)/
data table1_0(34) /version_no('preoper',33)/
!
!
type local_table_vers_no
@@ -178,6 +186,11 @@ module grib2_all_tables_module
data table1_2(4) /sigreftime('obstime',3)/
data table1_2(5) /sigreftime('missing',255)/
!
! Added Significance of Ref Time (12/20/2024)
!
data table1_2(6) /sigreftime('local',4)/
data table1_2(7) /sigreftime('sim_start',5)/
!
!
type prod_status
character(len=20) :: prodstatuskey
@@ -201,6 +214,13 @@ module grib2_all_tables_module
data table1_3(10) /prod_status('unens_rreanl',8)/
data table1_3(11) /prod_status('unens_rreanl_test',9)/
!
! Added Production Status (12/20/2024)
!
data table1_3(12) /prod_status('copernic_rreanl',10)/
data table1_3(13) /prod_status('copernic_rreanl_test',11)/
data table1_3(14) /prod_status('dest_earth',12)/
data table1_3(15) /prod_status('dest_earth_test',13)/
!
!
type type_of_data
character(len=20) :: typeofdatakey
@@ -270,6 +290,12 @@ module grib2_all_tables_module
!
data table4_3(29) /type_of_gen_proc('local_prob_match_mean',200)/
!
! Added Generating Process (12/20/2024)
!
data table4_3(30) /type_of_gen_proc('first_guess',19)/
data table4_3(31) /type_of_gen_proc('anal_inc',20)/
data table4_3(32) /type_of_gen_proc('init_inc',21)/
!
!
type unit_of_time_range
character(len=30) :: unitoftimerangekey
@@ -414,6 +440,29 @@ module grib2_all_tables_module
data table4_5(105) /fixed_surface_types('eff_layer_bottom_level',217)/
data table4_5(106) /fixed_surface_types('eff_layer',218)/
!
! Added fixed surface levels (12/20/2024)
!
data table4_5(107) /fixed_surface_types('dep_level_unstable_parcel_air',17)/
data table4_5(108) /fixed_surface_types('dep_level_mixed_parcel_air',18)/
data table4_5(109) /fixed_surface_types('lowest_cloud_cover',19)/
data table4_5(110) /fixed_surface_types('conv_cloud_base',26)/
data table4_5(111) /fixed_surface_types('conv_cloud_top',27)/
data table4_5(112) /fixed_surface_types('spec_rad_centre_sun',30)/
data table4_5(113) /fixed_surface_types('solar_photosphere',31)/
data table4_5(114) /fixed_surface_types('ion_d_region_lev',32)/
data table4_5(115) /fixed_surface_types('ion_e_region_lev',33)/
data table4_5(116) /fixed_surface_types('ion_f1_region_lev',34)/
data table4_5(117) /fixed_surface_types('ion_f2_region_lev',35)/
data table4_5(118) /fixed_surface_types('sea_ice_lev',152)/
data table4_5(119) /fixed_surface_types('ocean_level_vert_eddy_diffus',171)/
data table4_5(120) /fixed_surface_types('ocean_level_rho_diff',172)/
data table4_5(121) /fixed_surface_types('top_snow_over_sea_ice',173)/
data table4_5(122) /fixed_surface_types('roof_lev',185)/
data table4_5(123) /fixed_surface_types('wall_lev',186)/
data table4_5(124) /fixed_surface_types('road_lev',187)/
data table4_5(125) /fixed_surface_types('melt_pond_top_surf',188)/
data table4_5(126) /fixed_surface_types('melt_pond_bottom_surf',189)/
!
!
type type_of_ens_fcst
character(len=50) :: typeofensfcstkey
@@ -466,6 +515,10 @@ module grib2_all_tables_module
data table4_7(22) /type_of_derive_fcst('percentile_value_75',203)/
data table4_7(23) /type_of_derive_fcst('percentile_value_95',204)/
!
! Added type of derive forecast (12/20/2024)
!
data table4_7(24) /type_of_derive_fcst('var_all_ens_mem',10)/
!
!
! Added Clustering Method Table 4.8 (06/26/2019)
!
@@ -501,6 +554,10 @@ module grib2_all_tables_module
data table4_9(8) /type_of_prob('prob_near_normal_cat',7)/
data table4_9(9) /type_of_prob('prob_below_normal_cat',8)/
!
! Added Probability Type (12/20/2024)
!
data table4_9(10) /type_of_prob('prob_counts_cat_boolean',9)/
!
!
type statistical_processing_types
character(len=80) :: statprocesstypeskey
@@ -544,6 +601,12 @@ module grib2_all_tables_module
data table4_10(32) /statistical_processing_types('variance',208)/
data table4_10(33) /statistical_processing_types('confficient',209)/
!
! Added Statistical Processing Type (12/20/2024)
!
data table4_10(34) /statistical_processing_types('severity',100)/
data table4_10(35) /statistical_processing_types('mode',101)/
data table4_10(36) /statistical_processing_types('index_proc',102)/
!
!
type type_of_time_intervals
character(len=80) :: typeoftimeintervalskey
@@ -747,7 +810,12 @@ module grib2_all_tables_module
data table4_233(125) /type_of_aerosol('aerosol_lo_absorption',62023)/
data table4_233(126) /type_of_aerosol('volcanic_ash',62025)/
! Add new parameter (04/12/2022)
data table4_233(127) /type_of_aerosol('brown_carbon_dry',63034)/
! Corrected code figure (12/20/2024)
data table4_233(127) /type_of_aerosol('brown_carbon_dry',62036)/
!
! Added Aerosol Type (12/20/2024)
!
data table4_233(128) /type_of_aerosol('oxygen',38)/
!
!
type type_of_orig_field_vals
@@ -815,6 +883,11 @@ module grib2_all_tables_module
data table5_0(10) /type_of_packingmethod('simple_packing_log_preprcs',61)/
data table5_0(11) /type_of_packingmethod('run_length_packing_lvl_val',200)/
!
! Added Packing Method (12/20/2024)
!
data table5_0(12) /type_of_packingmethod('ccsds_lossless',42)/
data table5_0(13) /type_of_packingmethod('spectral_limited_area_complex',53)/
!
!
type origin_centers
character(len=50) :: origincenterskey
@@ -1046,6 +1119,15 @@ module grib2_all_tables_module
data on388_table0(217) /origin_centers('ncsa_argentina',147)/
data on388_table0(218) /origin_centers('brazilian_decea',148)/
!
! Added original center (12/20/2024)
!
data on388_table0(219) /origin_centers('nasa',173)/
data on388_table0(220) /origin_centers('isdm_meds',174)/
data on388_table0(221) /origin_centers('cimss',176)/
data on388_table0(222) /origin_centers('niwa',204)/
data on388_table0(223) /origin_centers('opera',247)/
data on388_table0(224) /origin_centers('cosmo',250)/
!
!
type gen_proc
character(len=30) :: genprockey
@@ -1189,6 +1271,14 @@ module grib2_all_tables_module
data on388_tablea(120) /gen_proc('extra_trop_storm_surge_atl_3d',21)/
data on388_tablea(121) /gen_proc('extra_trop_storm_surge_pac_3d',22)/
data on388_tablea(122) /gen_proc('extra_trop_storm_surge_micro_3',23)/
!
! Added new entries in tablea (12/20/2024)
!
data on388_tablea(123) /gen_proc('rtofs',85)/
data on388_tablea(124) /gen_proc('national_blend',104)/
data on388_tablea(125) /gen_proc('urma',118)/
data on388_tablea(126) /gen_proc('wam',119)/
data on388_tablea(127) /gen_proc('ccpa',184)/

contains
!
114 changes: 112 additions & 2 deletions tests/test_all_key_tables.F90
Original file line number Diff line number Diff line change
@@ -107,8 +107,16 @@ program test_all_tables
if (val1 .ne. 27) stop 2
call get_g2_versionno('v112021', val1, ierr)
if (val1 .ne. 28) stop 2
call get_g2_versionno('preoper', val1, ierr)
call get_g2_versionno('v052022', val1, ierr)
if (val1 .ne. 29) stop 2
call get_g2_versionno('v112022', val1, ierr)
if (val1 .ne. 30) stop 2
call get_g2_versionno('v062023', val1, ierr)
if (val1 .ne. 31) stop 2
call get_g2_versionno('v112023', val1, ierr)
if (val1 .ne. 32) stop 2
call get_g2_versionno('preoper', val1, ierr)
if (val1 .ne. 33) stop 2
call get_g2_versionno('xxx', val1, ierr)
if (ierr .ne. 9) stop 2

@@ -139,6 +147,10 @@ program test_all_tables
if (val1 .ne. 2) stop 4
call get_g2_sigreftime('obstime', val1, ierr)
if (val1 .ne. 3) stop 4
call get_g2_sigreftime('local', val1, ierr)
if (val1 .ne. 4) stop 4
call get_g2_sigreftime('sim_start', val1, ierr)
if (val1 .ne. 5) stop 4
call get_g2_sigreftime('missing', val1, ierr)
if (val1 .ne. 255) stop 4
call get_g2_sigreftime('xxxx', val1, ierr)
@@ -167,6 +179,14 @@ program test_all_tables
if (val1 .ne. 8) stop 5
call get_g2_prodstatus('unens_rreanl_test', val1, ierr)
if (val1 .ne. 9) stop 5
call get_g2_prodstatus('copernic_rreanl', val1, ierr)
if (val1 .ne. 10) stop 5
call get_g2_prodstatus('copernic_rreanl_test', val1, ierr)
if (val1 .ne. 11) stop 5
call get_g2_prodstatus('dest_earth', val1, ierr)
if (val1 .ne. 12) stop 5
call get_g2_prodstatus('dest_earth_test', val1, ierr)
if (val1 .ne. 13) stop 5
call get_g2_prodstatus('xxxx', val1, ierr)
if (ierr .ne. 9) stop 5

@@ -256,6 +276,12 @@ program test_all_tables
if (val1 .ne. 199) stop 7
call get_g2_typeofgenproc('local_prob_match_mean', val1, ierr)
if (val1 .ne. 200) stop 7
call get_g2_typeofgenproc('first_guess', val1, ierr)
if (val1 .ne. 19) stop 7
call get_g2_typeofgenproc('anal_inc', val1, ierr)
if (val1 .ne. 20) stop 7
call get_g2_typeofgenproc('init_inc', val1, ierr)
if (val1 .ne. 21) stop 7
call get_g2_typeofgenproc('xxxx', val1, ierr)
if (ierr .ne. 9) stop 7

@@ -500,6 +526,46 @@ program test_all_tables
if (val1 .ne. 217) stop 9
call get_g2_fixedsurfacetypes('eff_layer', val1, ierr)
if (val1 .ne. 218) stop 9
call get_g2_fixedsurfacetypes('dep_level_unstable_parcel_air', val1, ierr)
if (val1 .ne. 17) stop 9
call get_g2_fixedsurfacetypes('dep_level_mixed_parcel_air', val1, ierr)
if (val1 .ne. 18) stop 9
call get_g2_fixedsurfacetypes('lowest_cloud_cover', val1, ierr)
if (val1 .ne. 19) stop 9
call get_g2_fixedsurfacetypes('conv_cloud_base', val1, ierr)
if (val1 .ne. 26) stop 9
call get_g2_fixedsurfacetypes('conv_cloud_top', val1, ierr)
if (val1 .ne. 27) stop 9
call get_g2_fixedsurfacetypes('spec_rad_centre_sun', val1, ierr)
if (val1 .ne. 30) stop 9
call get_g2_fixedsurfacetypes('solar_photosphere', val1, ierr)
if (val1 .ne. 31) stop 9
call get_g2_fixedsurfacetypes('ion_d_region_lev', val1, ierr)
if (val1 .ne. 32) stop 9
call get_g2_fixedsurfacetypes('ion_e_region_lev', val1, ierr)
if (val1 .ne. 33) stop 9
call get_g2_fixedsurfacetypes('ion_f1_region_lev', val1, ierr)
if (val1 .ne. 34) stop 9
call get_g2_fixedsurfacetypes('ion_f2_region_lev', val1, ierr)
if (val1 .ne. 35) stop 9
call get_g2_fixedsurfacetypes('sea_ice_lev', val1, ierr)
if (val1 .ne. 152) stop 9
call get_g2_fixedsurfacetypes('ocean_level_vert_eddy_diffus', val1, ierr)
if (val1 .ne. 171) stop 9
call get_g2_fixedsurfacetypes('ocean_level_rho_diff', val1, ierr)
if (val1 .ne. 172) stop 9
call get_g2_fixedsurfacetypes('top_snow_over_sea_ice', val1, ierr)
if (val1 .ne. 173) stop 9
call get_g2_fixedsurfacetypes('roof_lev', val1, ierr)
if (val1 .ne. 185) stop 9
call get_g2_fixedsurfacetypes('wall_lev', val1, ierr)
if (val1 .ne. 186) stop 9
call get_g2_fixedsurfacetypes('road_lev', val1, ierr)
if (val1 .ne. 187) stop 9
call get_g2_fixedsurfacetypes('melt_pond_top_surf', val1, ierr)
if (val1 .ne. 188) stop 9
call get_g2_fixedsurfacetypes('melt_pond_bottom_surf', val1, ierr)
if (val1 .ne. 189) stop 9
call get_g2_fixedsurfacetypes('xxx', val1, ierr)
if (ierr .ne. 9) stop 9

@@ -570,6 +636,12 @@ program test_all_tables
if (val1 .ne. 208) stop 10
call get_g2_statprocesstypes('confficient', val1, ierr)
if (val1 .ne. 209) stop 10
call get_g2_statprocesstypes('severity', val1, ierr)
if (val1 .ne. 100) stop 10
call get_g2_statprocesstypes('mode', val1, ierr)
if (val1 .ne. 101) stop 10
call get_g2_statprocesstypes('index_proc', val1, ierr)
if (val1 .ne. 102) stop 10
call get_g2_statprocesstypes('xxxxx', val1, ierr)
if (ierr .ne. 9) stop 10

@@ -884,9 +956,11 @@ program test_all_tables
call get_g2_typeofaerosol('volcanic_ash', val1, ierr)
if (val1 .ne. 62025) stop 13
call get_g2_typeofaerosol('brown_carbon_dry', val1, ierr)
if (val1 .ne. 63034) stop 13
if (val1 .ne. 62036) stop 13
call get_g2_typeofaerosol('', val1, ierr)
if (val1 .ne. 65535) stop 13
call get_g2_typeofaerosol('oxygen', val1, ierr)
if (val1 .ne. 38) stop 13
call get_g2_typeofaerosol('xxxx', val1, ierr)
if (ierr .ne. 9) stop 13

@@ -1327,6 +1401,18 @@ program test_all_tables
if (val1 .ne. 147) stop 14
call get_g2_on388origincenters('brazilian_decea', val1, ierr)
if (val1 .ne. 148) stop 14
call get_g2_on388origincenters('nasa', val1, ierr)
if (val1 .ne. 173) stop 14
call get_g2_on388origincenters('isdm_meds', val1, ierr)
if (val1 .ne. 174) stop 14
call get_g2_on388origincenters('cimss', val1, ierr)
if (val1 .ne. 176) stop 14
call get_g2_on388origincenters('niwa', val1, ierr)
if (val1 .ne. 204) stop 14
call get_g2_on388origincenters('opera', val1, ierr)
if (val1 .ne. 247) stop 14
call get_g2_on388origincenters('cosmo', val1, ierr)
if (val1 .ne. 250) stop 14
call get_g2_on388origincenters('xxxx', val1, ierr)
if (ierr .ne. 9) stop 14

@@ -1569,6 +1655,22 @@ program test_all_tables
if (val1 .ne. 134) stop 15
call get_g2_on388genproc('hafs', val1, ierr)
if (val1 .ne. 135) stop 15
call get_g2_on388genproc('extra_trop_storm_surge_atl_3d', val1, ierr)
if (val1 .ne. 21) stop 15
call get_g2_on388genproc('extra_trop_storm_surge_pac_3d', val1, ierr)
if (val1 .ne. 22) stop 15
call get_g2_on388genproc('extra_trop_storm_surge_micro_3', val1, ierr)
if (val1 .ne. 23) stop 15
call get_g2_on388genproc('rtofs', val1, ierr)
if (val1 .ne. 85) stop 15
call get_g2_on388genproc('national_blend', val1, ierr)
if (val1 .ne. 104) stop 15
call get_g2_on388genproc('urma', val1, ierr)
if (val1 .ne. 118) stop 15
call get_g2_on388genproc('wam', val1, ierr)
if (val1 .ne. 119) stop 15
call get_g2_on388genproc('ccpa', val1, ierr)
if (val1 .ne. 184) stop 15
call get_g2_on388genproc('xxxx', val1, ierr)
if (ierr .ne. 9) stop 15

@@ -1645,6 +1747,10 @@ program test_all_tables
if (val1 .ne. 61) stop 19
call get_g2_sec5packingmethod('run_length_packing_lvl_val', val1, ierr)
if (val1 .ne. 200) stop 19
call get_g2_sec5packingmethod('ccsds_lossless', val1, ierr)
if (val1 .ne. 42) stop 19
call get_g2_sec5packingmethod('spectral_limited_area_complex', val1, ierr)
if (val1 .ne. 53) stop 19
call get_g2_sec5packingmethod('xxxxx', val1, ierr)
if (ierr .ne. 9) stop 19

@@ -1711,6 +1817,8 @@ program test_all_tables
if (val1 .ne. 203) stop 21
call get_g2_typeofderivefcst('percentile_value_95', val1, ierr)
if (val1 .ne. 204) stop 21
call get_g2_typeofderivefcst('var_all_ens_mem', val1, ierr)
if (val1 .ne. 10) stop 21
call get_g2_typeofderivefcst('xxxx', val1, ierr)
if (ierr .ne. 9) stop 21

@@ -1741,6 +1849,8 @@ program test_all_tables
if (val1 .ne. 7) stop 23
call get_g2_typeofprob('prob_below_normal_cat', val1, ierr)
if (val1 .ne. 8) stop 23
call get_g2_typeofprob('prob_counts_cat_boolean', val1, ierr)
if (val1 .ne. 9) stop 23
call get_g2_typeofprob('xxxx', val1, ierr)
if (ierr .ne. 9) stop 23