From 7909f7b218badf2480154f773d16661c8015de89 Mon Sep 17 00:00:00 2001 From: ctgh Date: Fri, 16 Feb 2024 09:37:55 +0000 Subject: [PATCH 1/3] add field names needed for screen processing --- src/opsinputs/opsinputs_cxfields_mod.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/opsinputs/opsinputs_cxfields_mod.F90 b/src/opsinputs/opsinputs_cxfields_mod.F90 index 3ab39838..86743976 100644 --- a/src/opsinputs/opsinputs_cxfields_mod.F90 +++ b/src/opsinputs/opsinputs_cxfields_mod.F90 @@ -20,7 +20,7 @@ module opsinputs_cxfields_mod character(len=*), parameter, public :: opsinputs_cxfields_rh2 = "relative_humidity_2m" character(len=*), parameter, public :: opsinputs_cxfields_u10 = var_sfc_u10 character(len=*), parameter, public :: opsinputs_cxfields_v10 = var_sfc_v10 -character(len=*), parameter, public :: opsinputs_cxfields_vis = opsinputs_cxfields_unknown +character(len=*), parameter, public :: opsinputs_cxfields_vis = "visibility_1p5m" character(len=*), parameter, public :: opsinputs_cxfields_WAVE_HGHT = opsinputs_cxfields_unknown character(len=*), parameter, public :: opsinputs_cxfields_WIND_SPED = opsinputs_cxfields_unknown character(len=*), parameter, public :: opsinputs_cxfields_SeaHeight = opsinputs_cxfields_unknown @@ -31,8 +31,8 @@ module opsinputs_cxfields_mod character(len=*), parameter, public :: opsinputs_cxfields_SnowAmount = opsinputs_cxfields_unknown character(len=*), parameter, public :: opsinputs_cxfields_qt2 = opsinputs_cxfields_unknown character(len=*), parameter, public :: opsinputs_cxfields_aerosol = opsinputs_cxfields_unknown -character(len=*), parameter, public :: opsinputs_cxfields_PSurfParamA = opsinputs_cxfields_unknown -character(len=*), parameter, public :: opsinputs_cxfields_PSurfParamB = opsinputs_cxfields_unknown +character(len=*), parameter, public :: opsinputs_cxfields_PSurfParamA = "surf_param_a" +character(len=*), parameter, public :: opsinputs_cxfields_PSurfParamB = "surf_param_b" character(len=*), parameter, public :: opsinputs_cxfields_LapseRate = opsinputs_cxfields_unknown character(len=*), parameter, public :: opsinputs_cxfields_CloudAmount = "total_cloud_amount" character(len=*), parameter, public :: opsinputs_cxfields_ConvCloudAmount = opsinputs_cxfields_unknown From b8f8dcf7683453d559f4a4b1af94df561fd4664a Mon Sep 17 00:00:00 2001 From: ctgh Date: Fri, 16 Feb 2024 13:58:21 +0000 Subject: [PATCH 2/3] screen cx test --- etc/global/cx/screen/Surface.nl | 3 + test/CMakeLists.txt | 4 ++ test/generate_unittest_netcdfs.py | 10 +++- test/testinput/cx_globalnamelist_screen.nc4 | Bin 0 -> 17359 bytes .../cxwriter_globalnamelist_screen.yaml | 52 ++++++++++++++++++ 5 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 etc/global/cx/screen/Surface.nl create mode 100644 test/testinput/cx_globalnamelist_screen.nc4 create mode 100644 test/testinput/cxwriter_globalnamelist_screen.yaml diff --git a/etc/global/cx/screen/Surface.nl b/etc/global/cx/screen/Surface.nl new file mode 100644 index 00000000..c04a4807 --- /dev/null +++ b/etc/global/cx/screen/Surface.nl @@ -0,0 +1,3 @@ +&CXControlNL +CxFields=2,3,4,10,24,31,33,254,407,409,3209,3210,3236,3245,3247,9217,16222,20000,20001 +/ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 5253a8a0..3229e71a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -635,6 +635,10 @@ ADD_WRITER_TEST(NAME cxwriter_globalnamelist_surface ADD_WRITER_TEST(NAME cxwriter_globalnamelist_scatwind YAML cxwriter_globalnamelist_scatwind.yaml DATA cx_globalnamelist_scatwind.nc4 dummy.nc4) +ADD_WRITER_TEST(NAME cxwriter_globalnamelist_screen + YAML cxwriter_globalnamelist_screen.yaml + NAMELIST ../../etc/global/cx/screen/Surface.nl + DATA cx_globalnamelist_screen.nc4 dummy.nc4) # Tests the ukv namelist files in the etc directory diff --git a/test/generate_unittest_netcdfs.py b/test/generate_unittest_netcdfs.py index 43df714b..6dd61180 100644 --- a/test/generate_unittest_netcdfs.py +++ b/test/generate_unittest_netcdfs.py @@ -1031,6 +1031,14 @@ def copy_var_to_var(Group, invarname, outvarname, filename): 'testinput/cx_globalnamelist_scatwind.nc4') # Unrotate 10m winds output_full_cx_to_netcdf (['uwind_at_10m', 'vwind_at_10m'],[], 'testinput/CxWriter_UnRotateWinds10M.nc4') - output_1d_multi_level_simulated_var_to_netcdf('relativeHumidity', 'testinput/relative_humidity_Sonde.nc4') output_2d_geoval_for_multi_level_obs_to_netcdf('relative_humidity', 'testinput/002_UpperAirCxFieldForMultiLevelObs_relative_humidity.nc4') + + # Screen + output_full_cx_to_netcdf(['surface_altitude', 'skin_temperature', 'ice_area_fraction', 'surface_pressure', + 'uwind_at_10m', 'vwind_at_10m', 'surface_temperature', 'relative_humidity_2m', + 'visibility_1p5m', 'total_cloud_amount', 'surface_pressure_at_mean_sea_level', + 'surf_param_a', 'surf_param_b'], + ['potential_temperature', 'eastward_wind', 'northward_wind', 'specific_humidity', + 'air_pressure_levels', 'mass_content_of_cloud_liquid_water_in_atmosphere_layer'], + 'testinput/cx_globalnamelist_screen.nc4') diff --git a/test/testinput/cx_globalnamelist_screen.nc4 b/test/testinput/cx_globalnamelist_screen.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..5894ed059d7def9f4091528efdfbf22e8b8454a3 GIT binary patch literal 17359 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 literal 0 HcmV?d00001 diff --git a/test/testinput/cxwriter_globalnamelist_screen.yaml b/test/testinput/cxwriter_globalnamelist_screen.yaml new file mode 100644 index 00000000..2eefa400 --- /dev/null +++ b/test/testinput/cxwriter_globalnamelist_screen.yaml @@ -0,0 +1,52 @@ +time window: + begin: 2018-01-01T00:00:00Z + end: 2018-01-01T01:00:00Z + +observations: + - obs space: + name: Surface # Screen observations are processed using the name Surface + obsdatain: + engine: + type: H5File + obsfile: Data/dummy.nc4 + simulated variables: [dummy] + geovals: + filename: Data/cx_globalnamelist_screen.nc4 + obs filters: + # Set the flag of observations with missing values to "pass": we want to check if these + # values are encoded correctly in the Cx file. + - filter: Reset Flags to Pass + flags_to_reset: [10, 15] # missing, Hfailed + # Reject observation 3: we want to check if it is omitted from the Cx file, as expected. + - filter: Domain Check + where: + - variable: + name: MetaData/latitude + minvalue: 0.0 + - filter: Cx Writer + namelist_directory: ../etc/global/cx/screen # There is a custom location for the screen CX namelist + reject_obs_with_any_variable_failing_qc: true + general_mode: debug + IC_PLevels: 5 + - filter: Cx Checker + expected_surface_variables: ["1", "2", "3", "4", "5", "6", "8", "13", "16", "17", "22", "23", "24"] + expected_upper_air_variables: ["1", "3", "4", "5", "11", "30"] + expected_main_table_columns: + - # observation 3 is rejected by the tests above hence only 3 (1,2,4) columns + - ["7.10","37.10","67.10","77.10","47.10","57.10", + "87.10","17.10","107.10","27.10","117.10","127.10", + "97.10","1.10","1.20","1.30","11.10","11.20","11.30", + "21.10","21.20","21.30","31.10","31.20","31.30", + "41.10","41.20","41.30","51.10","51.20","51.30"] # column 1 - 1st observation + - ["**********","**********","**********","**********","**********","**********","**********", + "**********","**********","**********","**********","**********","**********","2.10","**********", + "2.30","12.10","**********","12.30","22.10","**********","22.30","32.10","**********","32.30", + "42.10","**********","42.30","52.10","**********","52.30"] # column 2 - 2nd observation + - ["7.40","37.40","67.40","77.40","47.40","57.40","87.40", + "17.40","107.40","27.40","117.40","127.40","97.40","4.10", + "4.20","4.30","14.10","14.20","14.30","24.10","24.20", + "24.30","34.10","34.20","34.30","44.10","44.20","44.30", + "54.10","54.20","54.30"] # column 3 - observation 4 + HofX: ObsValue # just a placeholder -- not used, but needed to force calls to postFilter. + benchmarkFlag: 1000 # just to keep the ObsFilters test happy + flaggedBenchmark: 0 From e511cb88e98b216011f3d9a5f1cc5e3f8435f1a1 Mon Sep 17 00:00:00 2001 From: ctgh Date: Mon, 19 Feb 2024 11:04:54 +0000 Subject: [PATCH 3/3] individual Cx writer tests for vis, surf param a/b --- test/CMakeLists.txt | 12 +++++ test/generate_unittest_netcdfs.py | 3 ++ .../008_SurfaceCxField_visibility_1p5m.nc4 | Bin 0 -> 6208 bytes .../008_SurfaceCxField_visibility_1p5m.yaml | 41 ++++++++++++++++++ .../022_SurfaceCxField_surf_param_a.nc4 | Bin 0 -> 6208 bytes .../022_SurfaceCxField_surf_param_a.yaml | 41 ++++++++++++++++++ .../023_SurfaceCxField_surf_param_b.nc4 | Bin 0 -> 6208 bytes .../023_SurfaceCxField_surf_param_b.yaml | 41 ++++++++++++++++++ .../Surface.nl | 3 ++ .../Surface.nl | 3 ++ .../Surface.nl | 3 ++ 11 files changed, 147 insertions(+) create mode 100644 test/testinput/008_SurfaceCxField_visibility_1p5m.nc4 create mode 100644 test/testinput/008_SurfaceCxField_visibility_1p5m.yaml create mode 100644 test/testinput/022_SurfaceCxField_surf_param_a.nc4 create mode 100644 test/testinput/022_SurfaceCxField_surf_param_a.yaml create mode 100644 test/testinput/023_SurfaceCxField_surf_param_b.nc4 create mode 100644 test/testinput/023_SurfaceCxField_surf_param_b.yaml create mode 100644 test/testinput/CxWriterNamelists_008_SurfaceCxField_visibility_1p5m/Surface.nl create mode 100644 test/testinput/CxWriterNamelists_022_SurfaceCxField_surf_param_a/Surface.nl create mode 100644 test/testinput/CxWriterNamelists_023_SurfaceCxField_surf_param_b/Surface.nl diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3229e71a..df5e3a0a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -388,6 +388,10 @@ ADD_WRITER_TEST(NAME cxwriter_006_SurfaceCxField_v10 YAML 006_SurfaceCxField_v10.yaml NAMELIST CxWriterNamelists_006_SurfaceCxField_v10/AMSUB.nl DATA 006_SurfaceCxField_v10.nc4 dummy.nc4) +ADD_WRITER_TEST(NAME cxwriter_008_SurfaceCxField_visibility_1p5m + YAML 008_SurfaceCxField_visibility_1p5m.yaml + NAMELIST CxWriterNamelists_008_SurfaceCxField_visibility_1p5m/Surface.nl + DATA 008_SurfaceCxField_visibility_1p5m.nc4 dummy.nc4) ADD_WRITER_TEST(NAME cxwriter_013_SurfaceCxField_TskinSea YAML 013_SurfaceCxField_TskinSea.yaml NAMELIST CxWriterNamelists_013_SurfaceCxField_TskinSea/AMSUB.nl @@ -400,6 +404,14 @@ ADD_WRITER_TEST(NAME cxwriter_017_SurfaceCxField_SeaIce YAML 017_SurfaceCxField_SeaIce.yaml NAMELIST CxWriterNamelists_017_SurfaceCxField_SeaIce/AMSUB.nl DATA 017_SurfaceCxField_SeaIce.nc4 dummy.nc4) +ADD_WRITER_TEST(NAME cxwriter_022_SurfaceCxField_surf_param_a + YAML 022_SurfaceCxField_surf_param_a.yaml + NAMELIST CxWriterNamelists_022_SurfaceCxField_surf_param_a/Surface.nl + DATA 022_SurfaceCxField_surf_param_a.nc4 dummy.nc4) +ADD_WRITER_TEST(NAME cxwriter_023_SurfaceCxField_surf_param_b + YAML 023_SurfaceCxField_surf_param_b.yaml + NAMELIST CxWriterNamelists_023_SurfaceCxField_surf_param_b/Surface.nl + DATA 023_SurfaceCxField_surf_param_b.nc4 dummy.nc4) ADD_WRITER_TEST(NAME cxwriter_024_SurfaceCxField_CloudAmount YAML 024_SurfaceCxField_CloudAmount.yaml NAMELIST CxWriterNamelists_024_SurfaceCxField_CloudAmount/SatTCWV.nl diff --git a/test/generate_unittest_netcdfs.py b/test/generate_unittest_netcdfs.py index 6dd61180..4be587b9 100644 --- a/test/generate_unittest_netcdfs.py +++ b/test/generate_unittest_netcdfs.py @@ -827,9 +827,12 @@ def copy_var_to_var(Group, invarname, outvarname, filename): output_1d_geoval_to_netcdf ('relative_humidity_2m', 'testinput/004_SurfaceCxField_rh2.nc4') output_1d_geoval_to_netcdf ('uwind_at_10m', 'testinput/005_SurfaceCxField_u10.nc4') output_1d_geoval_to_netcdf ('vwind_at_10m', 'testinput/006_SurfaceCxField_v10.nc4') + output_1d_geoval_to_netcdf ('visibility_1p5m', 'testinput/008_SurfaceCxField_visibility_1p5m.nc4') output_1d_geoval_to_netcdf ('skin_temperature', 'testinput/013_SurfaceCxField_TskinSea.nc4') output_1d_geoval_to_netcdf ('surface_pressure_at_mean_sea_level', 'testinput/016_SurfaceCxField_pmsl.nc4') output_1d_geoval_to_netcdf ('ice_area_fraction', 'testinput/017_SurfaceCxField_SeaIce.nc4') + output_1d_geoval_to_netcdf ('surf_param_a', 'testinput/022_SurfaceCxField_surf_param_a.nc4') + output_1d_geoval_to_netcdf ('surf_param_b', 'testinput/023_SurfaceCxField_surf_param_b.nc4') output_1d_geoval_to_netcdf ('total_cloud_amount', 'testinput/024_SurfaceCxField_CloudAmount.nc4') output_1d_geoval_to_netcdf ('obukhov_length', 'testinput/056_SurfaceCxField_obukhov_length.nc4') output_1d_geoval_to_netcdf ('friction_velocity_over_water', 'testinput/057_SurfaceCxField_friction_velocity_over_water.nc4') diff --git a/test/testinput/008_SurfaceCxField_visibility_1p5m.nc4 b/test/testinput/008_SurfaceCxField_visibility_1p5m.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..c8e54255e0b730552f73aa25d5d04bc88ee0ae7a GIT binary patch literal 6208 zcmeH|L2DC16vyA}G;vwBCatZpBDnV0qNG%N@v>pFF~MyDNl#wFrd@C$-IVUOC@7u; zy?WD=;K{pRz@wmd&+0`G^x#Dh>U*;@iIhkYPr?kzPWH{4_x|&HkICa^y)kQ@w+zz+ zHIC$P&*he?TzDA1-sm*zUBiB5EDIYqb+d1kk2_i0b2PapNn&6-w64$rx;rx zqruo%l9I+3Nb%gIiy{?(0~Hf0574_H&cdxc$7z}4iHa_@@jq&_SILz_5lo8h1+`ue z&Y+1j(+TUXO~2i1b=v)&R||ZwZvkrIP{=p5Yn#6CccuT6!?Tu<2G(YRB53utUXQ9r{{0|m@a>`o2%eY<&ww$59XpET>C31|YEz&{YU;dKIW zyUMFw-M;eT1@)J%QoJvzUwYOAGyzRO6VL=S0Zl*?&;&FAO+XXS1T=yFg~0myNB70v P{iA13KfCYVesO;RqtnyL literal 0 HcmV?d00001 diff --git a/test/testinput/008_SurfaceCxField_visibility_1p5m.yaml b/test/testinput/008_SurfaceCxField_visibility_1p5m.yaml new file mode 100644 index 00000000..10472664 --- /dev/null +++ b/test/testinput/008_SurfaceCxField_visibility_1p5m.yaml @@ -0,0 +1,41 @@ +time window: + begin: 2018-01-01T00:00:00Z + end: 2018-01-01T01:00:00Z + +observations: + - obs space: + name: Surface + obsdatain: + engine: + type: H5File + obsfile: Data/dummy.nc4 + simulated variables: [dummy] + geovals: + filename: Data/008_SurfaceCxField_visibility_1p5m.nc4 + obs filters: + # Set the flag of observations with missing values to "pass": we want to check if these + # values are encoded correctly in the Cx file. + - filter: Reset Flags to Pass + flags_to_reset: [10, 15] # missing, Hfailed + # Reject observation 3: we want to check if it is omitted from the Cx file, as expected. + - filter: Domain Check + where: + - variable: + name: MetaData/latitude + minvalue: 0.0 + - filter: Cx Writer + namelist_directory: testinput/CxWriterNamelists_008_SurfaceCxField_visibility_1p5m + reject_obs_with_any_variable_failing_qc: true + general_mode: debug + IC_PLevels: 5 + - filter: Cx Checker + expected_surface_variables: ["8"] # IndexCxvisibility_1p5m + expected_upper_air_variables: [] + expected_main_table_columns: + - # batch 1 + - ["7.10"] # column 1 + - ["**********"] # column 2 (the asterisks represent a missing float) + - ["7.40"] # column 3 + HofX: ObsValue # just a placeholder -- not used, but needed to force calls to postFilter. + benchmarkFlag: 1000 # just to keep the ObsFilters test happy + flaggedBenchmark: 0 diff --git a/test/testinput/022_SurfaceCxField_surf_param_a.nc4 b/test/testinput/022_SurfaceCxField_surf_param_a.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..25c0a3e813b67506739101db34baa6075084ebf7 GIT binary patch literal 6208 zcmeH|L2DC16vyA}G;vwBHnx>m5xVwRQ391-ylmKPOmLe(wkI#kw%uYN-IVO6cu+hE zdKE8v5@5Qrxs*jHHYeSoln#cw*;hF&uhM|c z30EB1*?6=c9mb>hAc_r{1?8TN^cuH^Ak<=I!rl|va!itPpUFoY#E zk!(6-qrK&K!gjY4gg;4@$~}Uw|nNIn6sL^Iiet# zN5MJ0c6NYnc-94^fwh^U2-@K`tl%2Os^XXKDHTp#mf!oDyu`w`j*frPKACK#>$Ps- z8L)9Sxm7ZTJ)kO)!Wt>;`Axs)cRW853OBKUq;N0J<1ERiQYSS5vx4dhQqIg1sGBYm z!uZkfDk-vWkcEQXNt9!$fdUpMc4r3szT3J>TNkbBPwI8k1T+Cn;2#Lw^typ~ zUFFlRUSIj}g8EBWDc&!rk?u7CO+XXS1T+CnKoigeGyzRO6VL=S0Zrh4A+WLW(S3P% O|M>Z{&+faoU)*1zEYoHH literal 0 HcmV?d00001 diff --git a/test/testinput/022_SurfaceCxField_surf_param_a.yaml b/test/testinput/022_SurfaceCxField_surf_param_a.yaml new file mode 100644 index 00000000..1ca28052 --- /dev/null +++ b/test/testinput/022_SurfaceCxField_surf_param_a.yaml @@ -0,0 +1,41 @@ +time window: + begin: 2018-01-01T00:00:00Z + end: 2018-01-01T01:00:00Z + +observations: + - obs space: + name: Surface + obsdatain: + engine: + type: H5File + obsfile: Data/dummy.nc4 + simulated variables: [dummy] + geovals: + filename: Data/022_SurfaceCxField_surf_param_a.nc4 + obs filters: + # Set the flag of observations with missing values to "pass": we want to check if these + # values are encoded correctly in the Cx file. + - filter: Reset Flags to Pass + flags_to_reset: [10, 15] # missing, Hfailed + # Reject observation 3: we want to check if it is omitted from the Cx file, as expected. + - filter: Domain Check + where: + - variable: + name: MetaData/latitude + minvalue: 0.0 + - filter: Cx Writer + namelist_directory: testinput/CxWriterNamelists_022_SurfaceCxField_surf_param_a + reject_obs_with_any_variable_failing_qc: true + general_mode: debug + IC_PLevels: 5 + - filter: Cx Checker + expected_surface_variables: ["22"] # IndexCxsurf_param_a + expected_upper_air_variables: [] + expected_main_table_columns: + - # batch 1 + - ["7.10"] # column 1 + - ["**********"] # column 2 (the asterisks represent a missing float) + - ["7.40"] # column 3 + HofX: ObsValue # just a placeholder -- not used, but needed to force calls to postFilter. + benchmarkFlag: 1000 # just to keep the ObsFilters test happy + flaggedBenchmark: 0 diff --git a/test/testinput/023_SurfaceCxField_surf_param_b.nc4 b/test/testinput/023_SurfaceCxField_surf_param_b.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..728da893f9b672a5b623f15f556fdc3c4204f84a GIT binary patch literal 6208 zcmeH|L2DC16vyA}G;vwBHnx>m5xVwRsRSy$c-gSonBX>nY)@X6O&e(--IVO6cu+hQ z^y;mi1W(@m0^arRS-l8?9=r%beQ$Oqk&+_fNthwY%)EK?-hX~?m^^LN>hsoB%P>t) z?Nm1RN^Yshh2!|mR=ZK_81`#pP1v|0m(-TCy=4F+m!b&8=A=6mlEH8{{VJ!$RT{84 z;ff5u z#OaPRCmCkbrK5P%kGq53O-Hp`80FR4haWi-_%jk`1`>;4@%0?uw}#DHTp#mf!n|yu`w`j*frPKACK#?KSS= z8L)9Sxm7ZTJ)kO)!U`$u_;tVIw>&=*3b(L;q;N0J;Xy(q&{0|m@a?9L4MeYf#|wk}%bpVaH731|YEz&{YU