| 
									
										
										
										
											2016-09-20 16:25:25 +00:00
										 |  |  | subroutine hspec(id2,k,nutc0,ntrperiod,ntol,bmsk144,ingain,green,s,jh,line1)
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Input:
 | 
					
						
							|  |  |  | !  k         pointer to the most recent new data
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Output:
 | 
					
						
							|  |  |  | !  green()   power
 | 
					
						
							|  |  |  | !  s()       spectrum for horizontal spectrogram
 | 
					
						
							|  |  |  | !  jh        index of most recent data in green(), s()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   parameter (JZ=703)
 | 
					
						
							| 
									
										
										
										
											2016-09-20 16:25:25 +00:00
										 |  |  |   character*80 line1
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  |   integer*2 id2(0:120*12000-1)
 | 
					
						
							| 
									
										
										
										
											2016-09-20 16:25:25 +00:00
										 |  |  |   logical*1 bmsk144
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  |   real green(0:JZ-1)
 | 
					
						
							|  |  |  |   real s(0:63,0:JZ-1)
 | 
					
						
							|  |  |  |   real x(512)
 | 
					
						
							|  |  |  |   complex cx(0:256)
 | 
					
						
							|  |  |  |   data rms/999.0/,k0/99999999/
 | 
					
						
							|  |  |  |   equivalence (x,cx)
 | 
					
						
							|  |  |  |   save ja,rms0
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   gain=10.0**(0.1*ingain)
 | 
					
						
							|  |  |  |   nfft=512
 | 
					
						
							| 
									
										
										
										
											2016-09-16 14:18:40 +00:00
										 |  |  |   nstep=nfft
 | 
					
						
							|  |  |  |   nblks=7
 | 
					
						
							|  |  |  |   if(ntrperiod.lt.30) then
 | 
					
						
							|  |  |  |      nstep=256
 | 
					
						
							|  |  |  |      nblks=14
 | 
					
						
							|  |  |  |   endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  |   if(k.gt.30*12000) go to 900
 | 
					
						
							|  |  |  |   if(k.lt.nfft) then       
 | 
					
						
							|  |  |  |      jh=0
 | 
					
						
							|  |  |  |      go to 900                                 !Wait for enough samples to start
 | 
					
						
							|  |  |  |   endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if(k.lt.k0) then                             !Start a new data block
 | 
					
						
							| 
									
										
										
										
											2016-09-16 14:18:40 +00:00
										 |  |  |      ja=-nstep
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  |      jh=-1
 | 
					
						
							|  |  |  |      rms0=0.0
 | 
					
						
							|  |  |  |   endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-16 14:18:40 +00:00
										 |  |  |   do iblk=1,nblks
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  |      if(jh.lt.JZ-1) jh=jh+1
 | 
					
						
							| 
									
										
										
										
											2016-09-16 14:18:40 +00:00
										 |  |  |      ja=ja+nstep
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  |      jb=ja+nfft-1
 | 
					
						
							|  |  |  |      x=id2(ja:jb)
 | 
					
						
							|  |  |  |      sq=dot_product(x,x)
 | 
					
						
							|  |  |  |      rms=sqrt(gain*sq/nfft)
 | 
					
						
							|  |  |  |      green(jh)=0.
 | 
					
						
							| 
									
										
										
										
											2016-09-16 14:18:40 +00:00
										 |  |  |      if(rms.gt.0.0) green(jh)=20.0*log10(rms)
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  |      call four2a(x,nfft,1,-1,0)                   !Real-to-complex FFT
 | 
					
						
							|  |  |  |      df=12000.0/nfft
 | 
					
						
							|  |  |  |      fac=(1.0/nfft)**2
 | 
					
						
							|  |  |  |      do i=1,64
 | 
					
						
							|  |  |  |         j=2*i
 | 
					
						
							|  |  |  |         sx=real(cx(j))**2 + aimag(cx(j))**2 + real(cx(j-1))**2 +        &
 | 
					
						
							|  |  |  |              aimag(cx(j-1))**2
 | 
					
						
							|  |  |  |         s(i-1,jh)=fac*gain*sx
 | 
					
						
							|  |  |  |      enddo
 | 
					
						
							| 
									
										
										
										
											2016-09-18 15:34:15 +00:00
										 |  |  | !     call smo121(s(0,jh),64)   !### Good idea, or not? ###
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  |      if(ja+2*nfft.gt.k) exit
 | 
					
						
							|  |  |  |   enddo
 | 
					
						
							|  |  |  |   k0=k
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-20 16:25:25 +00:00
										 |  |  | !###
 | 
					
						
							|  |  |  |   if(bmsk144) then
 | 
					
						
							|  |  |  |      if(k.ge.7168) then
 | 
					
						
							| 
									
										
										
										
											2016-09-22 00:03:44 +00:00
										 |  |  |         tsec=(k-7168)/12000.0
 | 
					
						
							| 
									
										
										
										
											2016-09-20 16:25:25 +00:00
										 |  |  |         call mskrtd(id2(k-7168+1:k),nutc0,tsec,ntol,line1)
 | 
					
						
							|  |  |  |      endif
 | 
					
						
							|  |  |  |   endif
 | 
					
						
							|  |  |  | !###
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-18 01:28:12 +00:00
										 |  |  | 900 return
 | 
					
						
							|  |  |  | end subroutine hspec
 |