C+ C NAME: C HOSOrbit C PURPOSE: C Calculates the position of a Helios spacecraft at a given time C CATEGORY: C Celestial mechanics C CALLING SEQUENCE: subroutine HOSOrbit(iSc,iYr,Doy,rSun,rLng,VR,VT) C INPUTS: C iSc integer spacecraft (1=Helios A; 2=Helios B) C iYr integer year and C Doy real day of year, where s/c location is required C OUTPUTS: C rSun real spacecraft distance to Sun in AU C rLng real spacecraft ecliptic longitude (Equinox 1975.0 ???) C VR real radial velocity (AU/day) C VT real tangential velocity (AU/day) C CALLS: C Julian, KeplerOrbit C PROCEDURE: C The spacecraft orbit is assumed to lie in the ecliptic C See O. Montenbruck, Practical Ephemeris Calculations, p. 42-45 C Perihelion passages for Helios A: C C year doy JD ecl long perih C C 1975 74.38411 2442486.8841 257.8521 ! C 1975 264.5102 2677.0102 .8493 ! C 1976 89.6610 2867.1610 .8570 ! C 1976 279.7965 3057.2965 .8478 ! C 1977 103.9367 3247.4367 .8448 ! C 1977 294.0973 3437.5973 .8496 ! C 1978 119.2591 3627.7591 .8517 ! C 1978 309.4239 3817.9239 .8518 ! C 1979 134.5879 4008.0879 .8530 ! C 1979 C 1980 149.9095 4388.4095 .8465 ! C 1980 340.2279 4578.7279 .8542 ! C 1981 164.978 4768.729 257.978 C 1981 C 1982 C 1982 C 1983 C 1983 C C Perihelion passages for Helios B: C C 1976 108.1035 2442885.6035 294.2079 ! C 1976 293.7552 3071.2552 294.2007 ! C 1977 113.5434 3257.0434 294.2332 ! C 1977 299.3565 3442.8565 294.2353 ! C 1978 120.2137 3628.7137 294.2470 ! C 1978 306.0831 3814.5831 294.2528 ! C 1979 126.9678 4000.4678 294.2577 ! C 1979 312.8478 4186.3478 294.2553 ! C MODIFICATION HISTORY: C 1990, Paul Hick (UCSD) C 1997, Paul Hick (UCSD), replaced explicit orbit calculation by C call to KeplerOrbit C- integer iSc integer iYr real Doy real rSun real rLng real VR real VT real*8 JD,JD0 real aa(2) /.6471445,.6372573/ real ee(2) /.521757,.543814/ parameter (IA=12,IB=8) integer NPER(2) /IA,IB/ real*8 JDPER(IA+IB) & /2486.8841,2677.0120,2867.1610,3057.2965,3247.4367,3437.5973,3627.7591, & 3817.9239,4008.0879,4388.4095,4578.7279,4768.729, & 2885.6035,3071.2552,3257.0434,3442.8565,3628.7137,3814.5831,4000.4678, & 4186.3478/ real PerLng(IA+IB) & / 257.8521, 257.8493, 257.8570, 257.8478, 257.8448, 257.8496, 257.8517, & 257.8518, 257.8530, 257.8465, 257.8542, 257.978, & 294.2079, 294.2007, 294.2332, 294.2353, 294.2470, 294.2528, 294.2577, & 294.2553/ real OrbitElement(6) /6*0./ real Position(3) real Velocity(5) call Julian(0,iYr,Doy,JD,JD0) !Convert input time to Julian days JD = JD-2440000 J = (iSc-1)*IA JD0 = JDPER(J+1) ! Find closest perihelion (in time) PER = PerLng(J+1) do I=2,NPER(iSc) if (dabs(JD-JDPER(J+I)) .lt. dabs(JD-JD0)) then JD0 = JDPER (J+I) ! Time of perihelion passage in Julian days PER = PerLng(J+I) ! Ecliptic longitude of perihelion end if end do OrbitElement(1) = aa(iSc) OrbitElement(2) = ee(iSc) OrbitElement(5) = PER OrbitElement(6) = PER call KeplerOrbit(JD-JD0,1.,0.,OrbitElement,Position,Velocity) rSun = Position(3) rLng = Position(1) VR = Velocity(5) VT = Velocity(4) return end