From 429fd42cdd28ae55a910894716e5bd9482ebafdf Mon Sep 17 00:00:00 2001 From: "jim.jung" Date: Wed, 29 Jan 2025 18:19:54 +0000 Subject: [PATCH 1/3] This change fixes the problem with every 4th fov. The mod(x,4) can be zero. The zero value should be 4. The other mod(x,4) results (1,2,3) are correct. --- src/gsi/read_iasing.f90 | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gsi/read_iasing.f90 b/src/gsi/read_iasing.f90 index 54170ba9d..f573b697f 100644 --- a/src/gsi/read_iasing.f90 +++ b/src/gsi/read_iasing.f90 @@ -153,7 +153,7 @@ subroutine read_iasing(mype,val_iasing,ithin,isfcalc,rmesh,jsatid,gstime,& logical :: outside,iuse,assim,valid logical :: quiet,cloud_info - integer(i_kind) :: ifov, ifor, istep, ipos, instr, iscn, ioff, sensorindex_iasing + integer(i_kind) :: ifov, ifov2, ifor, istep, ipos, instr, iscn, ioff, sensorindex_iasing integer(i_kind) :: i, j, l, iskip, ifovn, ksatid, kidsat, llll integer(i_kind) :: nreal, isflg integer(i_kind) :: itx, k, nele, itt, n @@ -568,7 +568,12 @@ subroutine read_iasing(mype,val_iasing,ithin,isfcalc,rmesh,jsatid,gstime,& ! To determine the scan position: ifor = (ifov-1) / 16 ! Determine field-of-regard istep = ifov - ((ifor) * 16) ! Determine field-of-view within field-of-regard - ipos = (ifor * 4) + mod(istep,4) ! Determine position of field-of-view within scan line + ifov2 = mod(istep,4) ! Determine position of field-of-view within scan line + if ( ifov2 /= 0 ) then + ipos = (ifor * 4) + ifov2 + else + ipos = (ifor * 4) + 4 + endif ! Remove data on edges if (.not. use_edges .and. & From aac067a01bc25c7bc0222eb8ae663613d96325c2 Mon Sep 17 00:00:00 2001 From: "jim.jung" Date: Fri, 31 Jan 2025 17:01:12 +0000 Subject: [PATCH 2/3] This commit changes the BUFR mnemonics to the EUMETSAT definitions with some format changes. --- src/gsi/read_iasing.f90 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gsi/read_iasing.f90 b/src/gsi/read_iasing.f90 index f573b697f..368dc9126 100644 --- a/src/gsi/read_iasing.f90 +++ b/src/gsi/read_iasing.f90 @@ -424,7 +424,7 @@ subroutine read_iasing(mype,val_iasing,ithin,isfcalc,rmesh,jsatid,gstime,& ! Get the size of the channels and radiance (allchan) array ! This is a delayed replication. crchn_reps is the number of IASI-NG replications (channel and radiance) - call ufbint(lnbufr,crchn_reps,1,1,iret,'(RPSEQ001)') + call ufbint(lnbufr,crchn_reps,1,1,iret,'(I1CRSQ)') bufr_nchan = int(crchn_reps) bufr_size = size(temperature,1) @@ -570,7 +570,7 @@ subroutine read_iasing(mype,val_iasing,ithin,isfcalc,rmesh,jsatid,gstime,& istep = ifov - ((ifor) * 16) ! Determine field-of-view within field-of-regard ifov2 = mod(istep,4) ! Determine position of field-of-view within scan line if ( ifov2 /= 0 ) then - ipos = (ifor * 4) + ifov2 + ipos = (ifor * 4) + ifov2 else ipos = (ifor * 4) + 4 endif @@ -627,7 +627,7 @@ subroutine read_iasing(mype,val_iasing,ithin,isfcalc,rmesh,jsatid,gstime,& call checkob(one,crit1,itx,iuse) if(.not. iuse)cycle read_loop - call ufbseq(lnbufr,cscale,3,4,iret,'RPSEQ004') + call ufbseq(lnbufr,cscale,3,4,iret,'IAS1CBSQ') if(iret /= 4) then write(6,*) 'READ_IASI-NG read scale error ',iret cycle read_loop @@ -648,7 +648,7 @@ subroutine read_iasing(mype,val_iasing,ithin,isfcalc,rmesh,jsatid,gstime,& end do ! Read IASI-NG channel number(CHNM) and radiance (SCRA). - call ufbseq(lnbufr,allchan,2,bufr_nchan,iret,'RPSEQ001') + call ufbseq(lnbufr,allchan,2,bufr_nchan,iret,'I1CRSQ') jstart=1 scalef=one @@ -744,7 +744,7 @@ subroutine read_iasing(mype,val_iasing,ithin,isfcalc,rmesh,jsatid,gstime,& ! Only channels 18 and 19 are used. if ( iasing_cads ) then - call ufbseq(lnbufr,imager_info,123,7,iret,'RPSEQ002') + call ufbseq(lnbufr,imager_info,123,7,iret,'IASICSSQ') if (iret == 7 .and. imager_info(3,1) <= 100.0_r_kind .and. & sum(imager_info(3,:)) > zero .and. imager_coeff ) then ! if imager cluster info exists imager_mean = zero @@ -844,7 +844,7 @@ subroutine read_iasing(mype,val_iasing,ithin,isfcalc,rmesh,jsatid,gstime,& data_all(4,itx) = dlat ! grid relative latitude data_all(5,itx) = sat_zenang*deg2rad ! satellite zenith angle (rad) data_all(6,itx) = allspot(11) ! satellite azimuth angle (deg) - data_all(7,itx) = sat_zenang*deg2rad ! look angle (rad) + data_all(7,itx) = sat_zenang*deg2rad ! satellite zenith angle (rad) data_all(8,itx) = ifov ! fov number data_all(9,itx) = allspot(12) ! solar zenith angle (deg) data_all(10,itx)= allspot(13) ! solar azimuth angle (deg) From 6c3c66972e62283024bff712a1713a7daed0a2c1 Mon Sep 17 00:00:00 2001 From: "jim.jung" Date: Mon, 3 Feb 2025 15:32:20 +0000 Subject: [PATCH 3/3] Changed regression run time for global_4denvar from 10 to 20 minutes. --- regression/regression_param.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/regression/regression_param.sh b/regression/regression_param.sh index 1da1d4276..38b9b913b 100755 --- a/regression/regression_param.sh +++ b/regression/regression_param.sh @@ -67,8 +67,8 @@ case $regtest in topts[1]="0:10:00" ; popts[1]="12/8/" ; ropts[1]="/1" topts[2]="0:10:00" ; popts[2]="12/10/" ; ropts[2]="/2" elif [[ "$machine" = "Orion" ]]; then - topts[1]="0:10:00" ; popts[1]="12/8/" ; ropts[1]="/1" - topts[2]="0:10:00" ; popts[2]="12/12/" ; ropts[2]="/2" + topts[1]="0:20:00" ; popts[1]="12/8/" ; ropts[1]="/1" + topts[2]="0:20:00" ; popts[2]="12/12/" ; ropts[2]="/2" elif [[ "$machine" = "Hercules" ]]; then topts[1]="0:10:00" ; popts[1]="12/8/" ; ropts[1]="/1" topts[2]="0:10:00" ; popts[2]="12/12/" ; ropts[2]="/2"