mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
		
		
			
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| 
								 | 
							
								subroutine astro0(nyear,month,nday,uth8,nfreq,mygrid,hisgrid,              &
							 | 
						||
| 
								 | 
							
								     AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00,    &
							 | 
						||
| 
								 | 
							
								     dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0,    &
							 | 
						||
| 
								 | 
							
								     width1,width2,w501,w502,xlst8,techo8)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  parameter (DEGS=57.2957795130823d0)
							 | 
						||
| 
								 | 
							
								  character*6 mygrid,hisgrid
							 | 
						||
| 
								 | 
							
								  real*8 AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8
							 | 
						||
| 
								 | 
							
								  real*8 dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,xnr8,dfdt,dfdt0,dt
							 | 
						||
| 
								 | 
							
								  real*8 sd8,poloffset8,day8,width1,width2,w501,w502,xlst8
							 | 
						||
| 
								 | 
							
								  real*8 uth8,techo8
							 | 
						||
| 
								 | 
							
								  data uth8z/0.d0/
							 | 
						||
| 
								 | 
							
								  save
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  uth=uth8
							 | 
						||
| 
								 | 
							
								  call astro(nyear,month,nday,uth,nfreq,hisgrid,2,1,                 &
							 | 
						||
| 
								 | 
							
								       AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler,            &
							 | 
						||
| 
								 | 
							
								       dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr,               &
							 | 
						||
| 
								 | 
							
								       day,xlon2,xlat2,xlst,techo)
							 | 
						||
| 
								 | 
							
								  AzMoonB8=AzMoon
							 | 
						||
| 
								 | 
							
								  ElMoonB8=ElMoon
							 | 
						||
| 
								 | 
							
								  call astro(nyear,month,nday,uth,nfreq,mygrid,1,1,                  &
							 | 
						||
| 
								 | 
							
								       AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler,            &
							 | 
						||
| 
								 | 
							
								       dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr,               &
							 | 
						||
| 
								 | 
							
								       day,xlon1,xlat1,xlst,techo)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  day8=day
							 | 
						||
| 
								 | 
							
								  xlst8=xlst
							 | 
						||
| 
								 | 
							
								  techo8=techo
							 | 
						||
| 
								 | 
							
								  call tm2(day8,xlat1,xlon1,xl1,b1)
							 | 
						||
| 
								 | 
							
								  call tm2(day8,xlat2,xlon2,xl2,b2)
							 | 
						||
| 
								 | 
							
								  call tm2(day8+1.d0/1440.0,xlat1,xlon1,xl1a,b1a)
							 | 
						||
| 
								 | 
							
								  call tm2(day8+1.d0/1440.0,xlat2,xlon2,xl2a,b2a)
							 | 
						||
| 
								 | 
							
								  fghz=0.001*nfreq
							 | 
						||
| 
								 | 
							
								  dldt1=DEGS*(xl1a-xl1)
							 | 
						||
| 
								 | 
							
								  dbdt1=DEGS*(b1a-b1)
							 | 
						||
| 
								 | 
							
								  dldt2=DEGS*(xl2a-xl2)
							 | 
						||
| 
								 | 
							
								  dbdt2=DEGS*(b2a-b2)
							 | 
						||
| 
								 | 
							
								  rate1=2.0*sqrt(dldt1**2 + dbdt1**2)
							 | 
						||
| 
								 | 
							
								  width1=0.5*6741*fghz*rate1
							 | 
						||
| 
								 | 
							
								  rate2=sqrt((dldt1+dldt2)**2 + (dbdt1+dbdt2)**2)
							 | 
						||
| 
								 | 
							
								  width2=0.5*6741*fghz*rate2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fbend=0.7
							 | 
						||
| 
								 | 
							
								  a2=0.0045*log(fghz/fbend)/log(1.05)
							 | 
						||
| 
								 | 
							
								  if(fghz.lt.fbend) a2=0.0
							 | 
						||
| 
								 | 
							
								  f50=0.19 * (fghz/fbend)**a2
							 | 
						||
| 
								 | 
							
								  if(f50.gt.1.0) f50=1.0
							 | 
						||
| 
								 | 
							
								  w501=f50*width1
							 | 
						||
| 
								 | 
							
								  w502=f50*width2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  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
							 | 
						||
| 
								 | 
							
								  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
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return
							 | 
						||
| 
								 | 
							
								end subroutine astro0
							 |