Skip to content
4 changes: 3 additions & 1 deletion src/gsi/qcmod.f90
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ module qcmod
public :: npres_print,nlnqc_iter,varqc_iter,pbot,ptop,c_varqc,njqc,vqc,nvqc,hub_norm
public :: use_poq7,noiqc,vadfile,dfact1,dfact,erradar_inflate,gps_jacqc
public :: pboto3,ptopo3,pbotq,ptopq,newvad,tdrerr_inflate
public :: igood_qc,ifail_crtm_qc,ifail_satinfo_qc,ifail_interchan_qc,&
public :: igood_qc,ifail_crtm_qc,ifail_crtm_nan,ifail_satinfo_qc,ifail_interchan_qc,&
ifail_gross_qc,ifail_cloud_qc,ifail_outside_range,&
ifail_scanedge_qc, ifail_emiss_qc, ifail_cao_qc
public :: ifail_iland_det, ifail_isnow_det, ifail_iice_det, ifail_iwater_det,&
Expand Down Expand Up @@ -268,6 +268,8 @@ module qcmod
integer(i_kind),parameter:: ifail_outside_range=11
! Reject due to cold-air outbreak area check in setuprad
integer(i_kind),parameter:: ifail_cao_qc=12
! Reject due to NaN in the CRTM calculation
integer(i_kind),parameter:: ifail_crtm_nan=13
! Failures specific to qc routine start at 50 and the numbers overlap
! QC_SSMI failures
! Reject due to krain type not equal to 0 in subroutine qc_ssmi
Expand Down
17 changes: 17 additions & 0 deletions src/gsi/setuprad.f90
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ subroutine setuprad(obsLL,odiagLL,lunin,mype,aivals,stats,nchanl,nreal,nobs,&
use crtm_interface, only: ilzen_ang2,iscan_ang2,iszen_ang2,isazi_ang2
use clw_mod, only: calc_clw, ret_amsua, gmi_37pol_diff
use qcmod, only: igood_qc,ifail_gross_qc,ifail_interchan_qc,ifail_crtm_qc,ifail_satinfo_qc,qc_noirjaco3,ifail_cloud_qc
use qcmod, only: ifail_crtm_nan
use qcmod, only: ifail_cao_qc,cao_check
use qcmod, only: ifail_iland_det, ifail_isnow_det, ifail_iice_det, ifail_iwater_det, ifail_imix_det, &
ifail_iomg_det, ifail_isst_det, ifail_itopo_det,ifail_iwndspeed_det
Expand All @@ -306,6 +307,8 @@ subroutine setuprad(obsLL,odiagLL,lunin,mype,aivals,stats,nchanl,nreal,nobs,&
use radiance_mod, only: radiance_ex_obserr_gmi,radiance_ex_biascor_gmi
use cads, only: cads_imager_calc

use, intrinsic :: ieee_arithmetic

implicit none

! Declare passed variables
Expand Down Expand Up @@ -996,6 +999,20 @@ subroutine setuprad(obsLL,odiagLL,lunin,mype,aivals,stats,nchanl,nreal,nobs,&
varinv(1:nchanl) = zero
endif

! Include a separate check for NaNs in CRTM calculations. These are not always caught by other tests

if (ANY(ieee_is_nan(tsim(1:nchanl)))) then
write(*,*) 'WARNING: NaN found in CRTM simulated radiance output'
Comment thread
RussTreadon-NOAA marked this conversation as resolved.
do i = 1, nchanl
if (ieee_is_nan(tsim(i))) then
write(*,*) 'NaN for ',trim(isis),' channel ', sc_index(i), ' at latitude = ', &
cenlat,' longitude = ',cenlon
end if
end do
id_qc(1:nchanl) = ifail_crtm_nan
varinv(1:nchanl) = zero
endif

! For SST retrieval, use interpolated NCEP SST analysis
if (retrieval) then
if( avhrr_navy )then
Expand Down