mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-28 23:28:49 -05:00
121 lines
3.5 KiB
Fortran
121 lines
3.5 KiB
Fortran
|
|
||
|
!--------------------------------------------------- astro0
|
||
|
subroutine astro0(nyear,month,nday,uth8,nfreq,grid,cauxra,cauxdec, &
|
||
|
AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00, &
|
||
|
dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0, &
|
||
|
RaAux8,DecAux8,AzAux8,ElAux8)
|
||
|
|
||
|
!f2py intent(in) nyear,month,nday,uth8,nfreq,grid,cauxra,cauxdec
|
||
|
!f2py intent(out) AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00,dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0,RaAux8,DecAux8,AzAux8,ElAux8
|
||
|
|
||
|
character grid*6
|
||
|
character*9 cauxra,cauxdec
|
||
|
real*8 utch8
|
||
|
real*8 AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,AzAux8,ElAux8
|
||
|
real*8 dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,xnr8,dfdt,dfdt0
|
||
|
real*8 sd8,poloffset8
|
||
|
include 'gcom2.f90'
|
||
|
data uth8z/0.d0/,imin0/-99/
|
||
|
save
|
||
|
|
||
|
auxra=0.
|
||
|
i=index(cauxra,':')
|
||
|
if(i.eq.0) then
|
||
|
read(cauxra,*,err=1,end=1) auxra
|
||
|
else
|
||
|
read(cauxra(1:i-1),*,err=1,end=1) ih
|
||
|
read(cauxra(i+1:i+2),*,err=1,end=1) im
|
||
|
read(cauxra(i+4:i+5),*,err=1,end=1) is
|
||
|
auxra=ih + im/60.0 + is/3600.0
|
||
|
endif
|
||
|
1 auxdec=0.
|
||
|
i=index(cauxdec,':')
|
||
|
if(i.eq.0) then
|
||
|
read(cauxdec,*,err=2,end=2) auxdec
|
||
|
else
|
||
|
read(cauxdec(1:i-1),*,err=2,end=2) id
|
||
|
read(cauxdec(i+1:i+2),*,err=2,end=2) im
|
||
|
read(cauxdec(i+4:i+5),*,err=2,end=2) is
|
||
|
auxdec=id + im/60.0 + is/3600.0
|
||
|
endif
|
||
|
|
||
|
2 nmode=1
|
||
|
if(mode(1:4).eq.'JT65') then
|
||
|
nmode=2
|
||
|
if(mode(5:5).eq.'A') mode65=1
|
||
|
if(mode(5:5).eq.'B') mode65=2
|
||
|
if(mode(5:5).eq.'C') mode65=4
|
||
|
endif
|
||
|
if(mode.eq.'Echo') nmode=3
|
||
|
if(mode.eq.'JT6M') nmode=4
|
||
|
uth=uth8
|
||
|
|
||
|
call astro(AppDir,nyear,month,nday,uth,nfreq,hisgrid,2,nmode,1, &
|
||
|
AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler, &
|
||
|
dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr,auxra,auxdec, &
|
||
|
AzAux,ElAux)
|
||
|
AzMoonB8=AzMoon
|
||
|
ElMoonB8=ElMoon
|
||
|
call astro(AppDir,nyear,month,nday,uth,nfreq,grid,1,nmode,1, &
|
||
|
AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler, &
|
||
|
dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr,auxra,auxdec, &
|
||
|
AzAux,ElAux)
|
||
|
|
||
|
RaAux8=auxra
|
||
|
DecAux8=auxdec
|
||
|
AzSun8=AzSun
|
||
|
ElSun8=ElSun
|
||
|
AzMoon8=AzMoon
|
||
|
ElMoon8=ElMoon
|
||
|
dbMoon8=dbMoon
|
||
|
RAMoon8=RAMoon/15.0
|
||
|
DecMoon8=DecMoon
|
||
|
HA8=HA
|
||
|
Dgrd8=Dgrd
|
||
|
sd8=sd
|
||
|
poloffset8=poloffset
|
||
|
xnr8=xnr
|
||
|
AzAux8=AzAux
|
||
|
ElAux8=ElAux
|
||
|
ndop=nint(doppler)
|
||
|
ndop00=nint(doppler00)
|
||
|
|
||
|
if(uth8z.eq.0.d0) then
|
||
|
uth8z=uth8-1.d0/3600.d0
|
||
|
dopplerz=doppler
|
||
|
doppler00z=doppler00
|
||
|
endif
|
||
|
|
||
|
dt=60.0*(uth8-uth8z)
|
||
|
if(dt.le.0) dt=1.d0/60.d0
|
||
|
dfdt=(doppler-dopplerz)/dt
|
||
|
dfdt0=(doppler00-doppler00z)/dt
|
||
|
uth8z=uth8
|
||
|
dopplerz=doppler
|
||
|
doppler00z=doppler00
|
||
|
|
||
|
imin=60*uth8
|
||
|
isec=3600*uth8
|
||
|
|
||
|
#ifdef Win32
|
||
|
if(isec.ne.isec0) then
|
||
|
ih=uth8
|
||
|
im=mod(imin,60)
|
||
|
is=mod(isec,60)
|
||
|
rewind 14
|
||
|
write(14,1010) ih,im,is,AzMoon,ElMoon, &
|
||
|
ih,im,is,AzSun,ElSun, &
|
||
|
ih,im,is,AzAux,ElAux, &
|
||
|
nfreq,doppler,dfdt,doppler00,dfdt0
|
||
|
1010 format(i2.2,':',i2.2,':',i2.2,',',f5.1,',',f5.1,',Moon'/ &
|
||
|
i2.2,':',i2.2,':',i2.2,',',f5.1,',',f5.1,',Sun'/ &
|
||
|
i2.2,':',i2.2,':',i2.2,',',f5.1,',',f5.1,',Source'/ &
|
||
|
i4,',',f6.1,',',f6.2,',',f6.1,',',f6.2,',Doppler')
|
||
|
rewind 14
|
||
|
isec0=isec
|
||
|
endif
|
||
|
#endif
|
||
|
|
||
|
return
|
||
|
end subroutine astro0
|