39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								subroutine libration(jd,RA,Dec,xl,b)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! Compute optical libration of moon at jd: that is, the sub-observer 
							 | 
						||
| 
								 | 
							
								! point (xl,b) in selenographic coordinates.  RA and Dec are 
							 | 
						||
| 
								 | 
							
								! topocentric values.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  implicit real*8 (a-h,o-z)
							 | 
						||
| 
								 | 
							
								  parameter (RADS=0.0174532925199433d0)
							 | 
						||
| 
								 | 
							
								  parameter (TWOPI=6.28318530717959d0)
							 | 
						||
| 
								 | 
							
								  real*8 jd,j2000,mjd,lambda
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  j2000=2451545.0d0
							 | 
						||
| 
								 | 
							
								  RA2000=RA
							 | 
						||
| 
								 | 
							
								  Dec2000=Dec
							 | 
						||
| 
								 | 
							
								  year=2000.0d0 + (jd-j2000)/365.25d0
							 | 
						||
| 
								 | 
							
								  mjd=jd-2400000.d0
							 | 
						||
| 
								 | 
							
								  call sla_PRECES('FK5',year,2000.d0,RA2000,Dec2000)
							 | 
						||
| 
								 | 
							
								  call sla_EQECL(RA2000,Dec2000,mjd,lambda,beta)
							 | 
						||
| 
								 | 
							
								  day=jd - j2000
							 | 
						||
| 
								 | 
							
								  t = day / 36525.d0
							 | 
						||
| 
								 | 
							
								  xi = 1.54242 * RADS
							 | 
						||
| 
								 | 
							
								  ft = 93.2720993 + 483202.0175273 * t - .0034029 * t * t
							 | 
						||
| 
								 | 
							
								  b= ft / 360
							 | 
						||
| 
								 | 
							
								  a = 360 * (b - floor(b))
							 | 
						||
| 
								 | 
							
								  if (a.lt.0.d0) a = 360 + a;
							 | 
						||
| 
								 | 
							
								  f=a/57.2957795131d0
							 | 
						||
| 
								 | 
							
								  omega=sla_dranrm(2.182439196d0 - t*33.7570446085d0 + t*t*3.6236526d-5)
							 | 
						||
| 
								 | 
							
								  w = lambda - omega
							 | 
						||
| 
								 | 
							
								  y = sin(w) * cos(beta) * cos(xi) - sin(beta) * sin(xi)
							 | 
						||
| 
								 | 
							
								  x = cos(w) * cos(beta)
							 | 
						||
| 
								 | 
							
								  a = sla_dranrm(atan2(y, x))
							 | 
						||
| 
								 | 
							
								  xl = a - f
							 | 
						||
| 
								 | 
							
								  if(xl.lt.-0.25*TWOPI) xl=xl+TWOPI             !Fix 'round the back' angles
							 | 
						||
| 
								 | 
							
								  if(xl.gt.0.25*TWOPI)  xl=xl-TWOPI
							 | 
						||
| 
								 | 
							
								  b = asin(-sin(w) * cos(beta) * sin(xi) - sin(beta) * cos(xi))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return
							 | 
						||
| 
								 | 
							
								end subroutine libration
							 |