mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	These are the files from QRA64 "ee" test.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7368 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
		
							parent
							
								
									93f7393da7
								
							
						
					
					
						commit
						b47b4b077b
					
				
							
								
								
									
										13
									
								
								lib/Makefile
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								lib/Makefile
									
									
									
									
									
								
							| @ -1,19 +1,6 @@ | |||||||
| # Set paths
 |  | ||||||
| EXE_DIR = ..\\..\\wsjtx_install |  | ||||||
| QT_DIR = C:/wsjt-env/Qt5/5.2.1/mingw48_32 |  | ||||||
| FFTW3_DIR = .. |  | ||||||
| 
 |  | ||||||
| INCPATH = -I${QT_DIR}/include/QtCore -I${QT_DIR}/include  |  | ||||||
| 
 |  | ||||||
| # Compilers
 |  | ||||||
| CC = gcc | CC = gcc | ||||||
| CXX = g++ | CXX = g++ | ||||||
| FC = gfortran | FC = gfortran | ||||||
| AR = ar cr |  | ||||||
| RANLIB = ranlib |  | ||||||
| MKDIR = mkdir -p |  | ||||||
| CP = cp |  | ||||||
| RM = rm -f |  | ||||||
| 
 | 
 | ||||||
| FFLAGS = -O2 -fbounds-check -Wall -Wno-conversion | FFLAGS = -O2 -fbounds-check -Wall -Wno-conversion | ||||||
| CFLAGS = -O2 -I.  | CFLAGS = -O2 -I.  | ||||||
|  | |||||||
| @ -99,6 +99,12 @@ contains | |||||||
|     if(nsubmode.ge.100) then |     if(nsubmode.ge.100) then | ||||||
| ! This is QRA64 mode | ! This is QRA64 mode | ||||||
|        mode64=2**(nsubmode-100) |        mode64=2**(nsubmode-100) | ||||||
|  | !### | ||||||
|  | !       open(60,file='qra64_data.bin',access='stream',position='append') | ||||||
|  | !       write(60) dd,npts,nutc,nf1,nf2,nfqso,ntol,mode64,minsync,ndepth,   & | ||||||
|  | !            mycall,hiscall,hisgrid | ||||||
|  | !       close(60) | ||||||
|  | !### | ||||||
|        call qra64a(dd,npts,nutc,nf1,nf2,nfqso,ntol,mode64,minsync,ndepth,   & |        call qra64a(dd,npts,nutc,nf1,nf2,nfqso,ntol,mode64,minsync,ndepth,   & | ||||||
|             mycall,hiscall,hisgrid,sync,nsnr,dtx,nfreq,decoded,nft) |             mycall,hiscall,hisgrid,sync,nsnr,dtx,nfreq,decoded,nft) | ||||||
|        if (associated(this%callback)) then |        if (associated(this%callback)) then | ||||||
|  | |||||||
| @ -61,26 +61,28 @@ subroutine qra64a(dd,npts,nutc,nf1,nf2,nfqso,ntol,mode64,minsync,ndepth,   & | |||||||
|   call timer('sync64  ',0) |   call timer('sync64  ',0) | ||||||
|   call sync64(dd,npts,nf1,nf2,nfqso,ntol,mode64,maxf1,dtx,f0,jpk0,kpk,sync,c00) |   call sync64(dd,npts,nf1,nf2,nfqso,ntol,mode64,maxf1,dtx,f0,jpk0,kpk,sync,c00) | ||||||
|   call timer('sync64  ',1) |   call timer('sync64  ',1) | ||||||
|  |   if(sync.lt.3.4) go to 900 | ||||||
|  |   a=0. | ||||||
|  |   a(1)=-f0 | ||||||
|  |   nfreq=nint(f0) | ||||||
|  |   npts2=npts/2 | ||||||
|  |   call twkfreq(c00,c0,npts2,6000.0,a) | ||||||
|  | 
 | ||||||
|   irc=-99 |   irc=-99 | ||||||
|   s3lim=20. |   s3lim=20. | ||||||
|    |    | ||||||
|   npts2=npts/2 |  | ||||||
|   itz=11 |   itz=11 | ||||||
|   if(mode64.eq.4) itz=9 |   if(mode64.eq.4) itz=9 | ||||||
|   if(mode64.eq.2) itz=7 |   if(mode64.eq.2) itz=7 | ||||||
|   if(mode64.eq.1) itz=5 |   if(mode64.eq.1) itz=5 | ||||||
|    | 
 | ||||||
|   LL=64*(mode64+2) |   LL=64*(mode64+2) | ||||||
|   NN=63 |   NN=63 | ||||||
|   napmin=99 |   napmin=99 | ||||||
|   do itry0=1,7 |   do itry0=1,5 | ||||||
|      idt=itry0/2 |      idt=itry0/2 | ||||||
|      if(mod(itry0,2).eq.0) idt=-idt |      if(mod(itry0,2).eq.0) idt=-idt | ||||||
|      jpk=jpk0 + 1500*idt |      jpk=jpk0 + 750*idt | ||||||
|      a=0. |  | ||||||
|      a(1)=-f0 |  | ||||||
|      nfreq=nint(f0) |  | ||||||
|      call twkfreq(c00,c0,npts2,6000.0,a) |  | ||||||
|      call spec64(c0,npts2,mode64,jpk,s3a,LL,NN) |      call spec64(c0,npts2,mode64,jpk,s3a,LL,NN) | ||||||
|      call pctile(s3a,LL*NN,45,base) |      call pctile(s3a,LL*NN,45,base) | ||||||
|      s3a=s3a/base |      s3a=s3a/base | ||||||
| @ -136,10 +138,6 @@ subroutine qra64a(dd,npts,nutc,nf1,nf2,nfqso,ntol,mode64,minsync,ndepth,   & | |||||||
|      snr2=0. |      snr2=0. | ||||||
|   endif |   endif | ||||||
|    |    | ||||||
|   write(60,3100) nutc,nsnr,dtx,f0,sync,itry0,iter,irc,decoded |  | ||||||
| 3100 format(i4.4,i4,f6.2,2f7.1,3i4,2x,a22) |  | ||||||
|   flush(60) |  | ||||||
|    |  | ||||||
|   if(irc.lt.0) then |   if(irc.lt.0) then | ||||||
|      sy=max(1.0,sync-2.5) |      sy=max(1.0,sync-2.5) | ||||||
|      if(nSubmode.eq.0) nsnr=nint(10.0*log10(sy)-38.0)   !A |      if(nSubmode.eq.0) nsnr=nint(10.0*log10(sy)-38.0)   !A | ||||||
|  | |||||||
| @ -2,32 +2,41 @@ program qratest | |||||||
| 
 | 
 | ||||||
|   parameter (NMAX=60*12000)  |   parameter (NMAX=60*12000)  | ||||||
|   real dd(NMAX) |   real dd(NMAX) | ||||||
|   character*8 arg |   character arg*8,mycall*12,hiscall*12,hisgrid*6,decoded*22 | ||||||
|   character*12 mycall,hiscall |   character c*1,label*3 | ||||||
|   character*6 hisgrid |  | ||||||
|   character*22 decoded |  | ||||||
| 
 | 
 | ||||||
|   nargs=iargc() |   nargs=iargc() | ||||||
|   if(nargs.ne.3) then |   if(nargs.lt.1 .or. nargs.gt.3) then | ||||||
|      print*,'Usage: qratest f0 maxf1 fTol' |      print*,'Usage: qratest nfile [f0 fTol]' | ||||||
|      go to 999 |      go to 999 | ||||||
|   endif |   endif | ||||||
|   call getarg(1,arg) |   call getarg(1,arg) | ||||||
|   read(arg,*) nf0 |   read(arg,*) nfile | ||||||
|   call getarg(2,arg) |   if(nargs.gt.1) then | ||||||
|   read(arg,*) maxf1 |      call getarg(2,arg) | ||||||
|   call getarg(3,arg) |      read(arg,*) maxf1 | ||||||
|   read(arg,*) ntol |      call getarg(3,arg) | ||||||
|  |      read(arg,*) ntol | ||||||
|  |   endif | ||||||
|   ndepth=3 |   ndepth=3 | ||||||
|  |   nft=99 | ||||||
|  |    | ||||||
|  |   open(60,file='qra64_data.bin',access='stream') | ||||||
| 
 | 
 | ||||||
| !  do n=1,999 |   do ifile=1,999 | ||||||
|   do n=1,1 |      read(60,end=999) dd,npts,nutc,nf1,nf2,nfqso,ntol,mode64,minsync,ndepth, & | ||||||
|      read(60,end=999) dd,npts,nutc,nf1,nf2,nfqso,ntol,mode64,minsync,mycall, & |           mycall,hiscall,hisgrid | ||||||
|           hiscall,hisgrid |      if(ifile.lt.nfile) cycle | ||||||
|      call qra64a(dd,npts,nutc,nf1,nf2,nfqso,ntol,mode64,minsync,ndepth,      & |      call qra64a(dd,npts,nutc,nf1,nf2,nfqso,ntol,mode64,minsync,ndepth,      & | ||||||
|           mycall,hiscall,hisgrid,sync,nsnr,dtx,nfreq,decoded,nft) |           mycall,hiscall,hisgrid,sync,nsnr,dtx,nfreq,decoded,nft) | ||||||
|      write(*,1000) nutc,nsnr,dtx,nfreq,decoded,nft-100 |      c='a' | ||||||
| 1000 format(i4.4,i4,f6.2,i5,1x,a22,i3) |      if(mode64.eq.2) c='b' | ||||||
|  |      if(mode64.eq.4) c='c' | ||||||
|  |      if(mode64.eq.8) c='d' | ||||||
|  |      if(mode64.eq.16) c='e' | ||||||
|  |      write(*,1000) ifile,c,nutc,nsnr,dtx,nfreq,decoded,nft-100 | ||||||
|  | 1000 format(i4,1x,a1,1x,i4.4,i4,f6.2,i5,1x,a22,i3) | ||||||
|  |      if(ifile.eq.nfile) exit | ||||||
|   enddo |   enddo | ||||||
| 
 | 
 | ||||||
| 999 end program qratest | 999 end program qratest | ||||||
|  | |||||||
| @ -27,15 +27,12 @@ subroutine sync64(dd,npts,nf1,nf2,nfqso,ntol,mode64,maxf1,dtx,f0,jpk,kpk,   & | |||||||
|   save |   save | ||||||
| 
 | 
 | ||||||
|   if(mode64.ne.mode64z) then |   if(mode64.ne.mode64z) then | ||||||
|      nsync=10 |  | ||||||
|      inquire(file='old_qra_sync',exist=old_qra_sync) |  | ||||||
|      if(old_qra_sync) nsync=1 |  | ||||||
|      twopi=8.0*atan(1.0) |      twopi=8.0*atan(1.0) | ||||||
|      dfgen=mode64*12000.0/6912.0 |      dfgen=mode64*12000.0/6912.0 | ||||||
|      k=-1 |      k=-1 | ||||||
|      phi=0. |      phi=0. | ||||||
|      do j=0,6                               !Compute complex Costas waveform |      do j=0,6                               !Compute complex Costas waveform | ||||||
|         dphi=twopi*nsync*icos7(j)*dfgen/6000.0 |         dphi=twopi*10.0*icos7(j)*dfgen/6000.0 | ||||||
|         do i=1,NSPS |         do i=1,NSPS | ||||||
|            phi=phi + dphi |            phi=phi + dphi | ||||||
|            if(phi.gt.twopi) phi=phi-twopi |            if(phi.gt.twopi) phi=phi-twopi | ||||||
| @ -61,15 +58,17 @@ subroutine sync64(dd,npts,nf1,nf2,nfqso,ntol,mode64,maxf1,dtx,f0,jpk,kpk,   & | |||||||
|   nh3=nfft3/2 |   nh3=nfft3/2 | ||||||
|   df3=6000.0/nfft3 |   df3=6000.0/nfft3 | ||||||
|    |    | ||||||
|   faa=max(nf1,nfqso-ntol) |   fa=max(nf1,nfqso-ntol) | ||||||
|   fbb=min(nf2,nfqso+ntol) |   fb=min(nf2,nfqso+ntol) | ||||||
|   iaa=nint(faa/df3) |   iaa=max(0,nint(fa/df3)) | ||||||
|   ibb=nint(fbb/df3) |   ibb=min(NSPC-1,nint(fb/df3)) | ||||||
| 
 | 
 | ||||||
|   fa=max(nf1,nfqso-1000) |   maxtol=max(ntol,500) | ||||||
|   fb=min(nf2,nfqso+1000) |   fa=max(nf1,nfqso-maxtol) | ||||||
|   ia=nint(fa/df3) |   fb=min(nf2,nfqso+maxtol) | ||||||
|   ib=nint(fb/df3) |   ia=max(0,nint(fa/df3)) | ||||||
|  |   ib=min(NSPC-1,nint(fb/df3)) | ||||||
|  |   id=0.1*(ib-ia) | ||||||
| 
 | 
 | ||||||
|   iz=ib-ia+1 |   iz=ib-ia+1 | ||||||
|   sync=0. |   sync=0. | ||||||
| @ -77,10 +76,13 @@ subroutine sync64(dd,npts,nf1,nf2,nfqso,ntol,mode64,maxf1,dtx,f0,jpk,kpk,   & | |||||||
|   jpk=0 |   jpk=0 | ||||||
|   ja=0 |   ja=0 | ||||||
|   jb=7.5*6000 |   jb=7.5*6000 | ||||||
|   jstep=200 |   jstep=100 | ||||||
|   ipk=0 |   ipk=0 | ||||||
|   nskip=max(14,10*mode64) |   kpk=0 | ||||||
|    |   nadd=10*mode64 | ||||||
|  |   if(mod(nadd,2).eq.0) nadd=nadd+1       !Make nadd odd | ||||||
|  |   nskip=max(49,nadd) | ||||||
|  |      | ||||||
|   do j1=ja,jb,jstep |   do j1=ja,jb,jstep | ||||||
|      call timer('sync64_1',0) |      call timer('sync64_1',0) | ||||||
|      j2=j1 + 39*NSPS |      j2=j1 + 39*NSPS | ||||||
| @ -91,7 +93,6 @@ subroutine sync64(dd,npts,nf1,nf2,nfqso,ntol,mode64,maxf1,dtx,f0,jpk,kpk,   & | |||||||
|      call four2a(c2,nfft3,1,-1,1) |      call four2a(c2,nfft3,1,-1,1) | ||||||
|      c3=1.e-4*c0(j3:j3+NSPC-1) * conjg(cc) |      c3=1.e-4*c0(j3:j3+NSPC-1) * conjg(cc) | ||||||
|      call four2a(c3,nfft3,1,-1,1) |      call four2a(c3,nfft3,1,-1,1) | ||||||
|      s0=0. |  | ||||||
|      s1=0. |      s1=0. | ||||||
|      s2=0. |      s2=0. | ||||||
|      s3=0. |      s3=0. | ||||||
| @ -106,33 +107,26 @@ subroutine sync64(dd,npts,nf1,nf2,nfqso,ntol,mode64,maxf1,dtx,f0,jpk,kpk,   & | |||||||
| 
 | 
 | ||||||
|      call timer('sync64_2',0) |      call timer('sync64_2',0) | ||||||
|      s0(ia:ib)=s1(ia:ib) + s2(ia:ib) + s3(ia:ib) |      s0(ia:ib)=s1(ia:ib) + s2(ia:ib) + s3(ia:ib) | ||||||
|      call pctile(s0(ia:ib),iz,45,ave) |  | ||||||
|      s0(:ia-1)=0. |      s0(:ia-1)=0. | ||||||
|      s0(ib+1:)=0. |      s0(ib+1:)=0. | ||||||
|      smax=0. |      if(nadd.ge.3) then | ||||||
|      do na=0,3 |         do ii=1,3 | ||||||
|         nadd=7*(2**na) |            s0b(ia:ib)=s0(ia:ib) | ||||||
|         if(nadd.gt.161) nadd=161 |            call smo(s0b(ia:ib),iz,s0(ia:ib),nadd) | ||||||
|         if(mod(nadd,2).eq.0) nadd=nadd+1 |         enddo | ||||||
|         call smo(s0(ia:ib)/nadd,iz,s0b(ia:ib),nadd) |      endif | ||||||
|         call smo(s0b(ia:ib)/nadd,iz,s0(ia:ib),nadd) |      call averms(s0(ia+id:ib-id),iz-2*id,nskip,ave,rms) | ||||||
|         rms=ave/sqrt(float(nadd)) |      s=(maxval(s0(ia:ib))-ave)/rms | ||||||
|         s=0. |      ipk0=maxloc(s0(ia:ib)) | ||||||
|         sall=0. |      ip=ipk0(1) + ia - 1 | ||||||
|         if(rms.gt.0.0) then |      if(s.gt.sync .and. ip.ge.iaa .and. ip.le.ibb) then | ||||||
|            s=(maxval(s0(iaa:ibb))-ave)/rms |         jpk=j1 | ||||||
|            sall=(maxval(s0(ia:ib))-ave)/rms |         s0a=(s0-ave)/rms | ||||||
|         endif |         sync=s | ||||||
|         if(sall.gt.smaxall) then |         dtx=jpk/6000.0 - 1.0 | ||||||
|            smaxall=sall |         ipk=ip | ||||||
|            s0a=(s0-ave)/rms |         f0=ip*df3 | ||||||
|         endif |      endif | ||||||
|         if(s.gt.smax) then |  | ||||||
|            smax=s |  | ||||||
|            nabest=na |  | ||||||
|            s0c(ia:ib)=s0(ia:ib) |  | ||||||
|         endif |  | ||||||
|      enddo |  | ||||||
|      s0=s0c |      s0=s0c | ||||||
|      ipk0=maxloc(s0(ia:ib)) |      ipk0=maxloc(s0(ia:ib)) | ||||||
|      ip=ipk0(1) + ia - 1 |      ip=ipk0(1) + ia - 1 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user