diff --git a/ft8d.f90 b/ft8d.f90 index 801a84c..c6ca774 100644 --- a/ft8d.f90 +++ b/ft8d.f90 @@ -43,7 +43,7 @@ program ft8d newdat=.true. syncmin=1.5 call sync8(dd(1:NMAX,ipart),nfa+2000,nfb+2000,syncmin, & - nfqso+2000,s,candidate,ncand,sbase) + nfqso+2000,200,s,candidate,ncand,sbase) do icand=1,ncand sync=candidate(3,icand) f1=candidate(1,icand) diff --git a/sync8.f90 b/sync8.f90 index bf67ab2..e903783 100644 --- a/sync8.f90 +++ b/sync8.f90 @@ -1,4 +1,4 @@ -subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) +subroutine sync8(dd,nfa,nfb,syncmin,nfqso,maxcand,s,candidate,ncand,sbase) include 'ft8_params.f90' ! Search over +/- 2.5s relative to 0.5s TX start time. @@ -10,8 +10,8 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) complex x(NFFT1) real sync2d(NFFT1,-JZ:JZ) real red(NFFT1) - real candidate0(3,200) - real candidate(3,200) + real candidate0(3,maxcand) + real candidate(3,maxcand) complex dd(NMAX) integer jpeak(NFFT1) integer indx(NFFT1) @@ -96,15 +96,17 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) iz=ib-ia+1 call indexx(red(ia:ib),iz,indx) ibase=indx(nint(0.40*iz)) - 1 + ia + if(ibase.lt.1) ibase=1 + if(ibase.gt.NFFT1) ibase=NFFT1 base=red(ibase) red=red/base candidate0=0. k=0 - do i=1,200 + do i=1,maxcand n=ia + indx(iz+1-i) - 1 - if(red(n).lt.syncmin) exit - if(k.lt.200) k=k+1 + if(red(n).lt.syncmin.or.isnan(red(n)).or.k.eq.maxcand) exit + k=k+1 candidate0(1,k)=n*df candidate0(2,k)=(jpeak(n)-1)*tstep candidate0(3,k)=red(n)