mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-23 04:38:37 -05:00
106 lines
3.6 KiB
Fortran
106 lines
3.6 KiB
Fortran
|
subroutine astro(nyear,month,nday,uth,nfreq,Mygrid,NStation,MoonDX, &
|
||
|
AzSun,ElSun,AzMoon0,ElMoon0,ntsky,doppler00,doppler,dbMoon,RAMoon, &
|
||
|
DecMoon,HA,Dgrd,sd,poloffset,xnr,day,lon,lat,LST)
|
||
|
|
||
|
! Computes astronomical quantities for display and tracking.
|
||
|
! NB: may want to smooth the Tsky map to 10 degrees or so.
|
||
|
|
||
|
character*6 MyGrid,HisGrid
|
||
|
real LST
|
||
|
real lat,lon
|
||
|
integer*2 nt144(180)
|
||
|
|
||
|
! common/echo/xdop(2),techo,AzMoon,ElMoon,mjd
|
||
|
real xdop(2)
|
||
|
|
||
|
data rad/57.2957795/
|
||
|
data nt144/ &
|
||
|
234, 246, 257, 267, 275, 280, 283, 286, 291, 298, &
|
||
|
305, 313, 322, 331, 341, 351, 361, 369, 376, 381, &
|
||
|
383, 382, 379, 374, 370, 366, 363, 361, 363, 368, &
|
||
|
376, 388, 401, 415, 428, 440, 453, 467, 487, 512, &
|
||
|
544, 579, 607, 618, 609, 588, 563, 539, 512, 482, &
|
||
|
450, 422, 398, 379, 363, 349, 334, 319, 302, 282, &
|
||
|
262, 242, 226, 213, 205, 200, 198, 197, 196, 197, &
|
||
|
200, 202, 204, 205, 204, 203, 202, 201, 203, 206, &
|
||
|
212, 218, 223, 227, 231, 236, 240, 243, 247, 257, &
|
||
|
276, 301, 324, 339, 346, 344, 339, 331, 323, 316, &
|
||
|
312, 310, 312, 317, 327, 341, 358, 375, 392, 407, &
|
||
|
422, 437, 451, 466, 480, 494, 511, 530, 552, 579, &
|
||
|
612, 653, 702, 768, 863,1008,1232,1557,1966,2385, &
|
||
|
2719,2924,3018,3038,2986,2836,2570,2213,1823,1461, &
|
||
|
1163, 939, 783, 677, 602, 543, 494, 452, 419, 392, &
|
||
|
373, 360, 353, 350, 350, 350, 350, 350, 350, 348, &
|
||
|
344, 337, 329, 319, 307, 295, 284, 276, 272, 272, &
|
||
|
273, 274, 274, 271, 266, 260, 252, 245, 238, 231/
|
||
|
save
|
||
|
|
||
|
call grid2deg(MyGrid,elon,lat)
|
||
|
lon=-elon
|
||
|
call sun(nyear,month,nday,uth,lon,lat,RASun,DecSun,LST,AzSun,ElSun,mjd,day)
|
||
|
|
||
|
freq=nfreq*1.e6
|
||
|
if(nfreq.eq.2) freq=1.8e6
|
||
|
if(nfreq.eq.4) freq=3.5e6
|
||
|
|
||
|
call MoonDop(nyear,month,nday,uth,lon,lat,RAMoon,DecMoon,LST,HA, &
|
||
|
AzMoon,ElMoon,vr,dist)
|
||
|
|
||
|
! 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
|
||
|
|
||
|
call coord(0.,0.,-1.570796,1.161639,RAMoon/rad,DecMoon/rad,el,eb)
|
||
|
longecl_half=nint(rad*el/2.0)
|
||
|
if(longecl_half.lt.1 .or. longecl_half.gt.180) longecl_half=180
|
||
|
t144=nt144(longecl_half)
|
||
|
tsky=(t144-2.7)*(144.0/nfreq)**2.6 + 2.7 !Tsky for obs freq
|
||
|
|
||
|
xdop(NStation)=doppler
|
||
|
if(NStation.eq.2) then
|
||
|
HisGrid=MyGrid
|
||
|
go to 900
|
||
|
endif
|
||
|
|
||
|
doppler00=2.0*xdop(1)
|
||
|
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.'R') 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 AzMoon0=Azmoon
|
||
|
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 subroutine astro
|