From 7f37de38be7b7ad37db96eff570071e91006e1f6 Mon Sep 17 00:00:00 2001 From: Andrew Collard <40322596+ADCollard@users.noreply.github.com> Date: Thu, 18 Jan 2024 11:27:08 -0500 Subject: [PATCH 1/2] Remove HIRS from GSI regression tests (#672) --- regression/global_4denvar.sh | 6 ------ regression/hafs_3denvar_hybens.sh | 4 ---- regression/hafs_4denvar_glbens.sh | 4 ---- regression/netcdf_fv3_regional.sh | 1 - regression/regression_namelists.sh | 21 --------------------- regression/regression_namelists_db.sh | 21 --------------------- 6 files changed, 57 deletions(-) diff --git a/regression/global_4denvar.sh b/regression/global_4denvar.sh index 7212b819e9..08a62f5eb0 100755 --- a/regression/global_4denvar.sh +++ b/regression/global_4denvar.sh @@ -230,17 +230,11 @@ $nln $datobs/${prefix_obs}.ompst8.${suffix} ./ompstcbufr $nln $datobs/${prefix_obs}.ompslp.${suffix} ./ompslpbufr $nln $datobs/${prefix_obs}.goesfv.${suffix} ./gsnd1bufr -$nln $datobs/${prefix_obs}.hrs3db.${suffix} ./hirs3bufr_db $nln $datobs/${prefix_obs}.airsev.${suffix} ./airsbufr $nln $datobs/${prefix_obs}.sevcsr.${suffix} ./seviribufr $nln $datobs/${prefix_obs}.saphir.${suffix} ./saphirbufr $nln $datobs/${prefix_obs}.avcsam.${suffix} ./avhambufr $nln $datobs/${prefix_obs}.avcspm.${suffix} ./avhpmbufr -$nln $datobs/${prefix_obs}.1bhrs4.${suffix} ./hirs4bufr -$nln $datobs/${prefix_obs}.1bhrs2.${suffix} ./hirs2bufr -$nln $datobs/${prefix_obs}.1bhrs3.${suffix} ./hirs3bufr -$nln $datobs/${prefix_obs}.eshrs3.${suffix} ./hirs3bufrears -$nln $datobs/${prefix_obs}.hrs3db.${suffix} ./hirs3bufr_db $nln $datobs/${prefix_obs}.mtiasi.${suffix} ./iasibufr $nln $datobs/${prefix_obs}.esiasi.${suffix} ./iasibufrears $nln $datobs/${prefix_obs}.iasidb.${suffix} ./iasibufr_db diff --git a/regression/hafs_3denvar_hybens.sh b/regression/hafs_3denvar_hybens.sh index bd1c5b886d..fa128b8efa 100755 --- a/regression/hafs_3denvar_hybens.sh +++ b/regression/hafs_3denvar_hybens.sh @@ -278,13 +278,9 @@ fi ln -sf $SATWND satwndbufr ln -sf $SATWHR satwhrbufr ln -sf $GSNDBF1 gsnd1bufr -ln -sf $B1HRS3 hirs3bufr -ln -sf $B1HRS4 hirs4bufr ln -sf $B1AMUA amsuabufr ln -sf $B1MHS mhsbufr -ln -sf $ESHRS3 hirs3bufrears ln -sf $ESAMUA amsuabufrears -ln -sf $HRS3DB hirs3bufr_db ln -sf $SBUVBF sbuvbufr ln -sf $OMPSNPBF ompsnpbufr ln -sf $OMPSTCBF ompstcbufr diff --git a/regression/hafs_4denvar_glbens.sh b/regression/hafs_4denvar_glbens.sh index e19519e8fa..ddbd53dcf9 100755 --- a/regression/hafs_4denvar_glbens.sh +++ b/regression/hafs_4denvar_glbens.sh @@ -278,13 +278,9 @@ fi ln -sf $SATWND satwndbufr ln -sf $SATWHR satwhrbufr ln -sf $GSNDBF1 gsnd1bufr -ln -sf $B1HRS3 hirs3bufr -ln -sf $B1HRS4 hirs4bufr ln -sf $B1AMUA amsuabufr ln -sf $B1MHS mhsbufr -ln -sf $ESHRS3 hirs3bufrears ln -sf $ESAMUA amsuabufrears -ln -sf $HRS3DB hirs3bufr_db ln -sf $SBUVBF sbuvbufr ln -sf $OMPSNPBF ompsnpbufr ln -sf $OMPSTCBF ompstcbufr diff --git a/regression/netcdf_fv3_regional.sh b/regression/netcdf_fv3_regional.sh index 747794fae0..e6188f51c6 100755 --- a/regression/netcdf_fv3_regional.sh +++ b/regression/netcdf_fv3_regional.sh @@ -171,7 +171,6 @@ cp $fv3_netcdf_obs/ndas.t06z.radwnd.tm06.bufr_d ./radarbufr cp $fv3_netcdf_obs/ndas.t06z.prepbufr.tm06 ./prepbufr cp $fv3_netcdf_obs/ndas.t06z.1bamua.tm06.bufr_d ./amsuabufr cp $fv3_netcdf_obs/ndas.t06z.1bmhs.tm06.bufr_d ./mhsbufr -cp $fv3_netcdf_obs/ndas.t06z.1bhrs4.tm06.bufr_d ./hirs4bufr cp $fv3_netcdf_obs/ndas.t06z.goesfv.tm06.bufr_d ./gsnd1bufr cp $fv3_netcdf_obs/ndas.t06z.airsev.tm06.bufr_d ./airsbufr cp $fv3_netcdf_obs/ndas.t06z.satwnd.tm06.bufr_d ./satwndbufr diff --git a/regression/regression_namelists.sh b/regression/regression_namelists.sh index 2448bd155e..552bc1ba59 100755 --- a/regression/regression_namelists.sh +++ b/regression/regression_namelists.sh @@ -98,8 +98,6 @@ OBS_INPUT:: sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0 sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0 sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0 - hirs3bufr hirs3 n17 hirs3_n17 0.0 1 0 - hirs4bufr hirs4 metop-a hirs4_metop-a 0.0 1 1 gimgrbufr goes_img g11 imgr_g11 0.0 1 0 gimgrbufr goes_img g12 imgr_g12 0.0 1 0 airsbufr airs aqua airs_aqua 0.0 1 1 @@ -133,7 +131,6 @@ OBS_INPUT:: gomebufr gome metop-a gome_metop-a 0.0 2 0 omibufr omi aura omi_aura 0.0 2 0 sbuvbufr sbuv2 n19 sbuv8_n19 0.0 0 0 - hirs4bufr hirs4 n19 hirs4_n19 0.0 1 1 amsuabufr amsua n19 amsua_n19 0.0 1 1 mhsbufr mhs n19 mhs_n19 0.0 1 1 tcvitl tcp null tcp 0.0 0 0 @@ -141,7 +138,6 @@ OBS_INPUT:: seviribufr seviri m09 seviri_m09 0.0 1 0 seviribufr seviri m10 seviri_m10 0.0 1 0 seviribufr seviri m11 seviri_m11 0.0 1 0 - hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 1 1 amsuabufr amsua metop-b amsua_metop-b 0.0 1 1 mhsbufr mhs metop-b mhs_metop-b 0.0 1 1 iasibufr iasi metop-b iasi_metop-b 0.0 1 1 @@ -391,12 +387,6 @@ OBS_INPUT:: sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0 sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0 sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0 - hirs3bufr hirs3 n16 hirs3_n16 0.0 1 0 - hirs3bufr hirs3 n17 hirs3_n17 0.0 1 0 - hirs4bufr hirs4 metop-a hirs4_metop-a 0.0 2 0 - hirs4bufr hirs4 n18 hirs4_n18 0.0 1 0 - hirs4bufr hirs4 n19 hirs4_n19 0.0 2 0 - hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 2 0 gimgrbufr goes_img g11 imgr_g11 0.0 1 0 gimgrbufr goes_img g12 imgr_g12 0.0 1 0 airsbufr airs aqua airs_aqua 0.0 2 0 @@ -627,8 +617,6 @@ OBS_INPUT:: sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0 sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0 sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0 - hirs3bufr hirs3 n17 hirs3_n17 0.0 1 0 - hirs4bufr hirs4 metop-a hirs4_metop-a 0.0 1 1 gimgrbufr goes_img g11 imgr_g11 0.0 1 0 gimgrbufr goes_img g12 imgr_g12 0.0 1 0 airsbufr airs aqua airs_aqua 0.0 1 1 @@ -663,13 +651,11 @@ OBS_INPUT:: gomebufr gome metop-a gome_metop-a 0.0 2 0 omibufr omi aura omi_aura 0.0 2 0 sbuvbufr sbuv2 n19 sbuv8_n19 0.0 0 0 - hirs4bufr hirs4 n19 hirs4_n19 0.0 1 1 amsuabufr amsua n19 amsua_n19 0.0 2 1 mhsbufr mhs n19 mhs_n19 0.0 3 1 seviribufr seviri m08 seviri_m08 0.0 1 0 seviribufr seviri m09 seviri_m09 0.0 1 0 seviribufr seviri m10 seviri_m10 0.0 1 0 - hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 1 0 amsuabufr amsua metop-b amsua_metop-b 0.0 2 0 mhsbufr mhs metop-b mhs_metop-b 0.0 3 0 iasibufr iasi metop-b iasi_metop-b 0.0 1 0 @@ -846,12 +832,6 @@ OBS_INPUT:: sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0 sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0 sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0 - hirs2bufr hirs2 n14 hirs2_n14 0.0 1 0 - hirs3bufr hirs3 n16 hirs3_n16 0.0 1 0 - hirs3bufr hirs3 n17 hirs3_n17 0.0 1 0 - hirs4bufr hirs4 n18 hirs4_n18 0.0 1 0 - hirs4bufr hirs4 metop-a hirs4_metop-a 0.0 1 0 - hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 1 0 gsndrbufr sndr g11 sndr_g11 0.0 1 0 gsndrbufr sndr g12 sndr_g12 0.0 1 0 gimgrbufr goes_img g11 imgr_g11 0.0 1 0 @@ -883,7 +863,6 @@ OBS_INPUT:: iasibufr iasi metop-b iasi_metop-b 0.0 1 0 omibufr omi aura omi_aura 0.0 1 0 sbuvbufr sbuv2 n19 sbuv8_n19 0.0 1 0 - hirs4bufr hirs4 n19 hirs4_n19 0.0 1 0 amsuabufr amsua n19 amsua_n19 0.0 1 0 mhsbufr mhs n19 mhs_n19 0.0 1 0 tcvitl tcp null tcp 0.0 0 0 diff --git a/regression/regression_namelists_db.sh b/regression/regression_namelists_db.sh index 1558779e3e..e03917e888 100755 --- a/regression/regression_namelists_db.sh +++ b/regression/regression_namelists_db.sh @@ -90,8 +90,6 @@ OBS_INPUT:: sbuvbufr_ sbuv2 n16 sbuv8_n16 0.0 0 0 sbuvbufr_ sbuv2 n17 sbuv8_n17 0.0 0 0 sbuvbufr_ sbuv2 n18 sbuv8_n18 0.0 0 0 - hirs3bufr_ hirs3 n17 hirs3_n17 0.0 1 0 - hirs4bufr_skip hirs4 metop-a hirs4_metop-a 0.0 1 1 gimgrbufr_ goes_img g11 imgr_g11 0.0 1 0 gimgrbufr_ goes_img g12 imgr_g12 0.0 1 0 airsbufr_ airs aqua airs_aqua 0.0 1 1 @@ -125,7 +123,6 @@ OBS_INPUT:: gomebufr gome metop-a gome_metop-a 0.0 2 0 omibufr omi aura omi_aura 0.0 2 0 sbuvbufr sbuv2 n19 sbuv8_n19 0.0 0 0 - hirs4bufr hirs4 n19 hirs4_n19 0.0 1 1 amsuabufr amsua n19 amsua_n19 0.0 1 1 mhsbufr mhs n19 mhs_n19 0.0 1 1 tcvitl tcp null tcp 0.0 0 0 @@ -133,7 +130,6 @@ OBS_INPUT:: seviribufr seviri m09 seviri_m09 0.0 1 0 seviribufr seviri m10 seviri_m10 0.0 1 0 seviribufr seviri m11 seviri_m11 0.0 1 0 - hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 1 1 amsuabufr amsua metop-b amsua_metop-b 0.0 1 1 mhsbufr mhs metop-b mhs_metop-b 0.0 1 1 iasibufr iasi metop-b iasi_metop-b 0.0 1 1 @@ -372,12 +368,6 @@ OBS_INPUT:: sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0 sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0 sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0 - hirs3bufr hirs3 n16 hirs3_n16 0.0 1 0 - hirs3bufr hirs3 n17 hirs3_n17 0.0 1 0 - hirs4bufr hirs4 metop-a hirs4_metop-a 0.0 2 0 - hirs4bufr hirs4 n18 hirs4_n18 0.0 1 0 - hirs4bufr hirs4 n19 hirs4_n19 0.0 2 0 - hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 2 0 gimgrbufr goes_img g11 imgr_g11 0.0 1 0 gimgrbufr goes_img g12 imgr_g12 0.0 1 0 airsbufr airs aqua airs_aqua 0.0 2 0 @@ -611,8 +601,6 @@ OBS_INPUT:: sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0 sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0 sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0 - hirs3bufr hirs3 n17 hirs3_n17 0.0 1 0 - hirs4bufr hirs4 metop-a hirs4_metop-a 0.0 1 1 gimgrbufr goes_img g11 imgr_g11 0.0 1 0 gimgrbufr goes_img g12 imgr_g12 0.0 1 0 airsbufr airs aqua airs_aqua 0.0 1 1 @@ -647,13 +635,11 @@ OBS_INPUT:: gomebufr gome metop-a gome_metop-a 0.0 2 0 omibufr omi aura omi_aura 0.0 2 0 sbuvbufr sbuv2 n19 sbuv8_n19 0.0 0 0 - hirs4bufr hirs4 n19 hirs4_n19 0.0 1 1 amsuabufr amsua n19 amsua_n19 0.0 2 1 mhsbufr mhs n19 mhs_n19 0.0 3 1 seviribufr seviri m08 seviri_m08 0.0 1 0 seviribufr seviri m09 seviri_m09 0.0 1 0 seviribufr seviri m10 seviri_m10 0.0 1 0 - hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 1 0 amsuabufr amsua metop-b amsua_metop-b 0.0 2 0 mhsbufr mhs metop-b mhs_metop-b 0.0 3 0 iasibufr iasi metop-b iasi_metop-b 0.0 1 0 @@ -831,12 +817,6 @@ OBS_INPUT:: sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0 sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0 sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0 - hirs2bufr hirs2 n14 hirs2_n14 0.0 1 0 - hirs3bufr hirs3 n16 hirs3_n16 0.0 1 0 - hirs3bufr hirs3 n17 hirs3_n17 0.0 1 0 - hirs4bufr hirs4 n18 hirs4_n18 0.0 1 0 - hirs4bufr hirs4 metop-a hirs4_metop-a 0.0 1 0 - hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 1 0 gsndrbufr sndr g11 sndr_g11 0.0 1 0 gsndrbufr sndr g12 sndr_g12 0.0 1 0 gimgrbufr goes_img g11 imgr_g11 0.0 1 0 @@ -868,7 +848,6 @@ OBS_INPUT:: iasibufr iasi metop-b iasi_metop-b 0.0 1 0 omibufr omi aura omi_aura 0.0 1 0 sbuvbufr sbuv2 n19 sbuv8_n19 0.0 1 0 - hirs4bufr hirs4 n19 hirs4_n19 0.0 1 0 amsuabufr amsua n19 amsua_n19 0.0 1 0 mhsbufr mhs n19 mhs_n19 0.0 1 0 tcvitl tcp null tcp 0.0 0 0 From 12f8d3ef5c9292e48655365b269833574a81b61d Mon Sep 17 00:00:00 2001 From: AmandaBack-NOAA <55004295+AmandaBack-NOAA@users.noreply.github.com> Date: Wed, 24 Jan 2024 12:09:07 -0700 Subject: [PATCH 2/2] add clipping treatment for negative values of non-negative tracers (#682) **Description** Clips negative values from fields in the tracer file before writing. Fixes #680. **Type of change** - [ ] Bug fix (non-breaking change which fixes an issue) **How Has This Been Tested?** Tested on Hera in a RRFS CONUS workflow with both hybrid_radar_ref and anal_gsi_input tasks. See run directory at /scratch2/BMC/zrtrr/aback/hydrometeors_test/ For one hour of the control run without this change, and one hour using the change contained in this PR, the INPUT directory was saved for reference/rerunning before each of the tasks: anal_gsi_input_spinup, hybrid_radar_ref_spinup, cldanl_nonvar_spinup, and run_fcst spinup. Those directories are at, for example /scratch2/BMC/zrtrr/aback/hydrometeors_test/INPUT_after_anal_gsi_input_spinup_before_hybrid_radar_ref_spinup ("control") and /scratch2/BMC/zrtrr/aback/hydrometeors_test/clipped_INPUT_after_anal_gsi_input_spinup_before_hybrid_radar_ref_spinup (using the code in the PR). Logs are at /scratch2/BMC/zrtrr/aback/hydrometeors_test/v0.7.9/logs/rrfs.20230610/08/, including new logs produced between all the above-listed tasks, showing all the min and max values in fv_tracer. **Checklist** The code is Ting Lei's. It looks stylish and understandable to me (Amanda) but maybe Ting should weigh in on this section. - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] New and existing tests pass with my changes - [ ] Any dependent changes have been merged and published **DUE DATE for merger of this PR into `develop` is 2/22/2024 (six weeks after PR creation).** --------- Co-authored-by: Ting.Lei-NOAA --- src/gsi/gsi_rfv3io_mod.f90 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/gsi/gsi_rfv3io_mod.f90 b/src/gsi/gsi_rfv3io_mod.f90 index 8158f35e11..c8a2775863 100644 --- a/src/gsi/gsi_rfv3io_mod.f90 +++ b/src/gsi/gsi_rfv3io_mod.f90 @@ -118,6 +118,11 @@ module gsi_rfv3io_mod vgsiname = [character(len=max_varname_length) :: & 'u','v','w','tsen','delp','q','oz','ql','qi','qr','qs','qg','qnr','dbz','fed','ps','delzinc', & aeronames_cmaq_fv3,'pm25at','pm25ac','pm25co','pm2_5','amassi','amassj','amassk',aeronames_smoke_fv3] + + integer(i_kind) ,parameter:: nnonnegtracer=7 + character(len=max_varname_length), dimension(nnonnegtracer), parameter :: & + vnames_nonnegativetracers = [character(len=max_varname_length) :: & + "sphum","o3mr","liq_wat","ice_wat","rainwat","snowwat","graupel"] character(len=max_varname_length),dimension(:),allocatable:: name_metvars2d character(len=max_varname_length),dimension(:),allocatable:: name_metvars3d character(len=max_varname_length),dimension(:),allocatable:: name_chemvars3d @@ -4676,6 +4681,9 @@ subroutine gsi_fv3ncdf_write(grd_ionouv,cstate_nouv,add_saved,filenamein,fv3file call fv3_ll_to_h(work_a(:,:),work_b(:,:),nloncase,nlatcase,nlon_regional,nlat_regional,grid_reverse_flag) endif endif + if (ifindstrloc(vnames_nonnegativetracers,trim(varname))> 0) then + where (work_b <0.0_r_kind) work_b=0.0_r_kind + endif if(fv3_io_layout_y > 1) then do nio=0,fv3_io_layout_y-1 countloc=(/nxcase,ny_layout_len(nio),1/) @@ -4835,6 +4843,9 @@ subroutine gsi_fv3ncdf_write_v1(grd_ionouv,cstate_nouv,add_saved,filenamein,fv3f else call fv3_ll_to_h(work_a(:,:),work_b(:,:),nloncase,nlatcase,nlon_regional,nlat_regional,grid_reverse_flag) endif + if (ifindstrloc(vnames_nonnegativetracers,trim(varname))> 0) then + where (work_b <0.0_r_kind) work_b=0.0_r_kind + endif call check( nf90_put_var(gfile_loc,VarId,work_b,start=startloc,count=countloc) ) enddo !ilevtot call check(nf90_close(gfile_loc))