| 
									
										
										
										
											2006-09-06 18:09:05 +00:00
										 |  |  |       subroutine astro(AppDir,nyear,month,nday,uth,nfreq,Mygrid,
 | 
					
						
							|  |  |  |      +     NStation,mode,MoonDX,AzSun,ElSun,AzMoon,ElMoon0,
 | 
					
						
							|  |  |  |      +     ntsky,doppler00,doppler,dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,
 | 
					
						
							|  |  |  |      +     poloffset,xnr,auxra,auxdec,azaux,elaux)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | C  Computes astronomical quantities for display in JT65, CW, and EME Echo mode.
 | 
					
						
							|  |  |  | C  NB: may want to smooth the Tsky map to 10 degrees or so.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       character*80 AppDir,fname
 | 
					
						
							|  |  |  |       character*6 MyGrid,HisGrid
 | 
					
						
							|  |  |  |       logical first,ltsky
 | 
					
						
							|  |  |  |       real LST
 | 
					
						
							|  |  |  |       real lat,lon
 | 
					
						
							|  |  |  |       real ldeg
 | 
					
						
							|  |  |  |       integer*1 n1sky(129600)
 | 
					
						
							|  |  |  |       integer*2 nsky
 | 
					
						
							|  |  |  |       common/sky/ nsky(360,180)
 | 
					
						
							|  |  |  |       common/echo/xdop(2),techo,ElMoon,mjd
 | 
					
						
							|  |  |  |       equivalence (n1sky,nsky)
 | 
					
						
							|  |  |  |       data first/.true./
 | 
					
						
							|  |  |  |       data rad/57.2957795/
 | 
					
						
							|  |  |  |       save first
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if(first) then
 | 
					
						
							|  |  |  | 	do i=80,1,-1
 | 
					
						
							|  |  |  | 	   if(ichar(AppDir(i:i)).ne.0 .and. 
 | 
					
						
							|  |  |  |      +            ichar(AppDir(i:i)).ne.32) goto 1
 | 
					
						
							|  |  |  | 	enddo
 | 
					
						
							|  |  |  |  1	lenappdir=i
 | 
					
						
							|  |  |  |         call zero(nsky,180*180)
 | 
					
						
							|  |  |  | 	fname=Appdir(1:lenappdir)//'/TSKY.DAT'
 | 
					
						
							|  |  |  | #ifdef Win32
 | 
					
						
							|  |  |  |         open(13,file=fname,status='old',form='binary',err=10)
 | 
					
						
							|  |  |  |         read(13) nsky
 | 
					
						
							|  |  |  |         close(13)
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  |         call rfile2(fname,nsky,129600,nr)
 | 
					
						
							|  |  |  |         if(nr.ne.129600) go to 10
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  |         ltsky=.true.
 | 
					
						
							|  |  |  |         first=.false.
 | 
					
						
							|  |  |  |       endif
 | 
					
						
							|  |  |  |       go to 20
 | 
					
						
							|  |  |  |  10   ltsky=.false.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  20   call grid2deg(MyGrid,elon,lat)
 | 
					
						
							|  |  |  |       lon=-elon
 | 
					
						
							|  |  |  |       call sun(nyear,month,nday,uth,lon,lat,RASun,DecSun,LST,
 | 
					
						
							|  |  |  |      +    AzSun,ElSun,mjd)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       freq=nfreq*1.e6
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       call MoonDop(nyear,month,nday,uth,lon,lat,RAMoon,DecMoon,
 | 
					
						
							|  |  |  |      +  LST,HA,AzMoon,ElMoon,ldeg,bdeg,vr,dist)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | C  Compute spatial polarization offset
 | 
					
						
							|  |  |  |       xx=sin(lat/rad)*cos(ElMoon/rad) - cos(lat/rad)*
 | 
					
						
							|  |  |  |      +     cos(AzMoon/rad)*sin(ElMoon/rad)
 | 
					
						
							|  |  |  |       yy=cos(lat/rad)*sin(AzMoon/rad)
 | 
					
						
							|  |  |  |       if(NStation.eq.1) poloffset1=rad*atan2(yy,xx)
 | 
					
						
							|  |  |  |       if(NStation.eq.2) poloffset2=rad*atan2(yy,xx)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       techo=2.0 * dist/2.99792458e5                 !Echo delay time
 | 
					
						
							|  |  |  |       doppler=-freq*vr/2.99792458e5                 !One-way Doppler
 | 
					
						
							|  |  |  |       t408=ftsky(ldeg,bdeg)                         !Read sky map
 | 
					
						
							|  |  |  |       tsky=t408*(408.0/nfreq)**2.6                  !Tsky for obs freq
 | 
					
						
							|  |  |  |       if(ltsky.and.(tsky.lt.3.0)) tsky=3.0          !Minimum = 3 Kelvin
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       xdop(NStation)=doppler
 | 
					
						
							|  |  |  |       if(NStation.eq.2) then
 | 
					
						
							|  |  |  |          HisGrid=MyGrid
 | 
					
						
							|  |  |  |          go to 900
 | 
					
						
							|  |  |  |       endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       doppler00=2.0*xdop(1)
 | 
					
						
							|  |  |  |       if(mode.eq.2 .or. mode.eq.5) doppler=xdop(1)+xdop(2)
 | 
					
						
							|  |  |  |       if(mode.eq.3) doppler=2.0*xdop(1)
 | 
					
						
							|  |  |  |       dBMoon=-40.0*log10(dist/356903.)
 | 
					
						
							|  |  |  |       sd=16.23*370152.0/dist
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | !      if(NStation.eq.1 .and. MoonDX.ne.0 .and. 
 | 
					
						
							|  |  |  | !     +    (mode.eq.2 .or. mode.eq.5)) then
 | 
					
						
							|  |  |  |       if(NStation.eq.1 .and. MoonDX.ne.0) then
 | 
					
						
							|  |  |  |          poloffset=mod(poloffset2-poloffset1+720.0,180.0)
 | 
					
						
							|  |  |  |          if(poloffset.gt.90.0) poloffset=poloffset-180.0
 | 
					
						
							|  |  |  |          x1=abs(cos(2*poloffset/rad))
 | 
					
						
							|  |  |  |          if(x1.lt.0.056234) x1=0.056234
 | 
					
						
							|  |  |  |          xnr=-20.0*log10(x1)
 | 
					
						
							|  |  |  |          if(HisGrid(1:1).lt.'A' .or. HisGrid(1:1).gt.'Z') xnr=0
 | 
					
						
							|  |  |  |       endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       tr=80.0                              !Good preamp
 | 
					
						
							|  |  |  |       tskymin=13.0*(408.0/nfreq)**2.6      !Cold sky temperature
 | 
					
						
							|  |  |  |       tsysmin=tskymin+tr
 | 
					
						
							|  |  |  |       tsys=tsky+tr
 | 
					
						
							|  |  |  |       dgrd=-10.0*log10(tsys/tsysmin) + dbMoon
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  900  ElMoon0=Elmoon
 | 
					
						
							|  |  |  |       ntsky=nint(tsky)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       auxHA = 15.0*(LST-auxra)                       !HA in degrees
 | 
					
						
							|  |  |  |       pi=3.14159265
 | 
					
						
							|  |  |  |       pio2=0.5*pi
 | 
					
						
							|  |  |  |       call coord(pi,pio2-lat/rad,0.0,lat/rad,auxha*pi/180.0,
 | 
					
						
							|  |  |  |      +  auxdec/rad,azaux,elaux)
 | 
					
						
							|  |  |  |       AzAux=azaux*rad
 | 
					
						
							|  |  |  |       ElAux=ElAux*rad
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       end
 |