Fix another piece of flaky behavior with Deep Search average decodes.

This commit is contained in:
Joe Taylor 2020-04-09 15:30:12 -04:00
parent c188f8ee89
commit e3d2d5d65a
2 changed files with 16 additions and 13 deletions

View File

@ -179,7 +179,6 @@ subroutine extract(s3,nadd,mode65,ntrials,naggressive,ndepth,nflip, &
if(nft.gt.0) exit if(nft.gt.0) exit
enddo enddo
!write(*,*) nft
if(nft.eq.0 .and. iand(ndepth,32).eq.32) then if(nft.eq.0 .and. iand(ndepth,32).eq.32) then
qmin=2.0 - 0.1*naggressive qmin=2.0 - 0.1*naggressive
call timer('hint65 ',0) call timer('hint65 ',0)

View File

@ -76,7 +76,7 @@ contains
character*22 decoded character*22 decoded
end type accepted_decode end type accepted_decode
type(accepted_decode) dec(50) type(accepted_decode) dec(50)
logical :: first_time,prtavg,single_decode,bVHF logical :: first_time,prtavg,single_decode,bVHF,clear_avg65
integer h0(0:11),d0(0:11) integer h0(0:11),d0(0:11)
real r0(0:11) real r0(0:11)
@ -90,7 +90,7 @@ contains
! 0 1 2 3 4 5 6 7 8 9 10 11 ! 0 1 2 3 4 5 6 7 8 9 10 11
data r0/0.70,0.72,0.74,0.76,0.78,0.80,0.82,0.84,0.86,0.88,0.90,0.90/ data r0/0.70,0.72,0.74,0.76,0.78,0.80,0.82,0.84,0.86,0.88,0.90,0.90/
data nutc0/-999/,nfreq0/-999/,nsave/0/ data nutc0/-999/,nfreq0/-999/,nsave/0/,clear_avg65/.true./
save save
this%callback => callback this%callback => callback
@ -208,6 +208,7 @@ contains
if(clearave) then if(clearave) then
nsum=0 nsum=0
nsave=0 nsave=0
clear_avg65=.true.
endif endif
if(bVHF) then if(bVHF) then
@ -274,9 +275,9 @@ contains
nsave=nsave+1 nsave=nsave+1
nsave=mod(nsave-1,64)+1 nsave=mod(nsave-1,64)+1
call avg65(nutc,nsave,sync1,dtx,nflip,nfreq,mode65,ntol, & call avg65(nutc,nsave,sync1,dtx,nflip,nfreq,mode65,ntol, &
ndepth,nagain,ntrials,naggressive,clearave,neme,mycall, & ndepth,nagain,ntrials,naggressive,clear_avg65,neme, &
hiscall,hisgrid,nftt,avemsg,qave,deepave,nsum,ndeepave, & mycall,hiscall,hisgrid,nftt,avemsg,qave,deepave,nsum, &
nQSOProgress,ljt65apon) ndeepave,nQSOProgress,ljt65apon)
nsmo=param(9) nsmo=param(9)
nqave=int(qave) nqave=int(qave)
@ -349,8 +350,8 @@ contains
end subroutine decode end subroutine decode
subroutine avg65(nutc,nsave,snrsync,dtxx,nflip,nfreq,mode65,ntol,ndepth, & subroutine avg65(nutc,nsave,snrsync,dtxx,nflip,nfreq,mode65,ntol,ndepth, &
nagain, ntrials,naggressive,clearave,neme,mycall,hiscall,hisgrid,nftt, & nagain, ntrials,naggressive,clear_avg65,neme,mycall,hiscall,hisgrid, &
avemsg,qave,deepave,nsum,ndeepave,nQSOProgress,ljt65apon) nftt,avemsg,qave,deepave,nsum,ndeepave,nQSOProgress,ljt65apon)
! Decodes averaged JT65 data ! Decodes averaged JT65 data
@ -373,11 +374,11 @@ contains
real s3c(64,63) real s3c(64,63)
real dtsave(MAXAVE) real dtsave(MAXAVE)
real syncsave(MAXAVE) real syncsave(MAXAVE)
logical first,clearave,ljt65apon logical first,clear_avg65,ljt65apon
data first/.true./ data first/.true./
save save
if(first .or. clearave) then if(first .or. clear_avg65) then
iutc=-1 iutc=-1
nfsave=0 nfsave=0
dtdiff=0.2 dtdiff=0.2
@ -387,6 +388,7 @@ contains
! Silence compiler warnings ! Silence compiler warnings
if(nagain .and. ndeepave.eq.-99 .and. neme.eq.-99) stop if(nagain .and. ndeepave.eq.-99 .and. neme.eq.-99) stop
first=.false. first=.false.
clear_avg65=.false.
endif endif
do i=1,64 do i=1,64
@ -402,6 +404,9 @@ contains
nflipsave(nsave)=nflip nflipsave(nsave)=nflip
s1save(-255:256,1:126,nsave)=s1 s1save(-255:256,1:126,nsave)=s1
s3save(1:64,1:63,nsave)=s3a s3save(1:64,1:63,nsave)=s3a
avemsg=' '
deepbest=' '
nfttbest=0
10 syncsum=0. 10 syncsum=0.
dtsum=0. dtsum=0.
@ -413,7 +418,7 @@ contains
do i=1,MAXAVE !Consider all saved spectra do i=1,MAXAVE !Consider all saved spectra
cused(i)='.' cused(i)='.'
if(iutc(i).lt.0) cycle if(iutc(i).lt.0) exit
if(mod(iutc(i),2).ne.mod(nutc,2)) cycle !Use only same (odd/even) seq if(mod(iutc(i),2).ne.mod(nutc,2)) cycle !Use only same (odd/even) seq
if(abs(dtxx-dtsave(i)).gt.dtdiff) cycle !DT must match if(abs(dtxx-dtsave(i)).gt.dtdiff) cycle !DT must match
if(abs(nfreq-nfsave(i)).gt.ntol) cycle !Freq must match if(abs(nfreq-nfsave(i)).gt.ntol) cycle !Freq must match
@ -506,7 +511,6 @@ contains
endif endif
endif endif
enddo enddo
if(nfttbest.eq.2) then if(nfttbest.eq.2) then
avemsg=deepbest !### ??? avemsg=deepbest !### ???
deepave=deepbest deepave=deepbest
@ -516,7 +520,7 @@ contains
nftt=nfttbest nftt=nfttbest
endif endif
900 continue 900 continue
return return
end subroutine avg65 end subroutine avg65