From 159a90db03bbb604aa6450727b05243bc1928f67 Mon Sep 17 00:00:00 2001 From: David Dowell Date: Wed, 1 Nov 2023 15:22:10 +0000 Subject: [PATCH] Changes for reducing the influence of reflectivity observations in precipitation. --- src/gsi/obsmod.F90 | 3 ++- src/gsi/read_dbz_nc.f90 | 12 +++++++++--- src/gsi/setupdbz.f90 | 5 ++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/gsi/obsmod.F90 b/src/gsi/obsmod.F90 index c43a23c1e6..3cdb3f4ec1 100644 --- a/src/gsi/obsmod.F90 +++ b/src/gsi/obsmod.F90 @@ -769,7 +769,8 @@ subroutine init_obsmod_dflts if_model_dbz=.false. if_model_fed=.false. innov_use_model_fed=.false. - inflate_obserr=.false. +! increase error for reflectivity observation when |O-F| exceeds gross error magnitude + inflate_obserr=.true. whichradar="KKKK" oneobradid="KKKK" diff --git a/src/gsi/read_dbz_nc.f90 b/src/gsi/read_dbz_nc.f90 index 7f8604b9d2..f4bf288c9a 100644 --- a/src/gsi/read_dbz_nc.f90 +++ b/src/gsi/read_dbz_nc.f90 @@ -412,9 +412,15 @@ subroutine read_dbz_nc(nread,ndata,nodata,infile,lunout,obstype,sis,hgtl_full,no ! changed to hard-coded value for now; dbznoise used for two different purposes in this subroutine: ! (1) threshold for lowest reflectivity value considered to be an observation and ! (2) ob error - thiserr = 5.0_r_kind - - + +! Specify a larger error standard deviation for reflectivity observations in precipitation +! than for reflectivity observations that indicate a lack of preciptation. + if( dbzQC(i,j,k) < 5.0_r_kind ) then + thiserr = 5.0_r_kind + else + thiserr = 10.0_r_kind + end if + nread = nread + 1 !#################### Data thinning ################### diff --git a/src/gsi/setupdbz.f90 b/src/gsi/setupdbz.f90 index 453c4a5f8d..a1951ef95b 100644 --- a/src/gsi/setupdbz.f90 +++ b/src/gsi/setupdbz.f90 @@ -1260,7 +1260,10 @@ subroutine setupdbz(obsLL,odiagLL,lunin,mype,bwork,awork,nele,nobs,is,radardbz_d end if else - if (ratio > cgross(ikx) .or. ratio_errors < tiny_r_kind) then + +! Apply gross error check only to reflectivity observations in precipitation (>= 5 dBZ). + if ( ( (data(idbzob,i) >= 5_r_kind) .and. (ratio > cgross(ikx)) ) .or. (ratio_errors < tiny_r_kind) ) then + if ( inflate_obserr .and. (ratio-cgross(ikx)) <= cgross(ikx) .and. ratio_errors >= tiny_r_kind) then ! Since radar reflectivity can be very different from the model background ! good observations may be rejected during this QC step. However, if these observations