51 use sufr_kinds,
only: double
52 use sufr_constants,
only: jd2000
57 real(double),
intent(in) :: tjm
58 integer,
intent(in) :: as
59 real(double),
intent(out) :: hcr, om1,nu, sini,cosi,sino,coso
60 real(double) :: jd,jd0,djd, sma,ecc,in,om2, m0,mea,mem,ea
81 mem = 0.01720209895d0 * sma**(-1.5d0)
82 jd = jd2000 + 365250.d0 * tjm
90 nu = 2*atan(sqrt((1.d0+ecc)/(1.d0-ecc)) * tan(0.5d0*ea))
91 hcr = sma*(1.d0 - ecc*cos(ea))
116 use sufr_kinds,
only: double
117 use sufr_angles,
only: rev
120 real(double),
intent(in) :: t
121 integer,
intent(in) :: as
122 real(double),
intent(out) :: l,b,r
124 real(double) :: om1,nu, sini,cosi,sino,coso,u,sinu,cosu,x,y,z
137 x = r * (coso * cosu - sino * sinu * cosi)
138 y = r * (sino * cosu + coso * sinu * cosi)
165 use sufr_kinds,
only: double
166 use sufr_angles,
only: rev
167 use sufr_constants,
only: eps2000
172 real(double),
intent(in) :: t, l0,b0,r0
173 integer,
intent(in) :: as
174 real(double),
intent(out) :: ra,dec,delta
176 real(double) :: om1,nu, eps,sine,cose, ff,gg,hh,pp,qq,rr, a1,a2,b1,b2,c1,c2
177 real(double) :: sini,cosi,sino,coso, x,y,z, r, sx,sy,sz
198 qq = coso*cosi*cose - sini*sine
199 rr = coso*cosi*sine + sini*cose
202 a1 = rev( atan2(ff,pp) )
203 b1 = rev( atan2(gg,qq) )
204 c1 = rev( atan2(hh,rr) )
205 a2 = sqrt( ff**2 + pp**2 )
206 b2 = sqrt( gg**2 + qq**2 )
207 c2 = sqrt( hh**2 + rr**2 )
210 x = r * a2 * sin(a1 + om1 + nu)
211 y = r * b2 * sin(b1 + om1 + nu)
212 z = r * c2 * sin(c1 + om1 + nu)
222 delta = sqrt(x**2 + y**2 + z**2)
244 use sufr_kinds,
only: double
248 integer,
intent(in) :: as
249 real(double),
intent(in) :: delta,r,pa
256 phi1 = exp(-3.33d0 * tan(0.5d0*pa)**(0.63d0))
257 phi2 = exp(-1.87d0 * tan(0.5d0*pa)**(1.22d0))
259 asteroid_magn = h + 5.d0*log10(r*delta) - 2.5d0*log10((1.d0-g)*phi1 + g*phi2)
277 use sufr_kinds,
only: double, dbl
278 use sufr_constants,
only: pi,pi2, pio2,pio4
279 use sufr_system,
only: warn
280 use sufr_angles,
only: rev
283 real(double),
intent(in) :: ecc,mea
284 real(double),
intent(out) :: eca
286 real(double),
parameter :: accur = 1.0e-15_dbl
288 real(double) :: ma,d,de,m1
290 if(ecc.lt.0.d0 .or. ecc.gt.1.d0)
call warn(
'kepler() can only be used for orbits with eccentricities between 0 and 1', 0)
294 sig = nint(sign(1.d0,ma))
296 ma = rev( sig * pi2 * (ma-floor(ma)) )
309 do while(abs(de).gt.accur)
310 m1 = eca - ecc*sin(eca)
311 de = d * sign(1.d0,ma-m1)
Procedures for asteroids.
subroutine asteroid_lbr(t, as, l, b, r)
Calculate heliocentric ecliptical coordinates l,b,r for asteroid as at time t (Julian Millennia after...
subroutine asteroid_elements(tjm, as, hcr, om1, nu, cosi, sini, coso, sino)
Calculate orbital elements for asteroids.
real(double) function asteroid_magn(as, delta, r, pa)
Calculate asteroid magnitude for asteroid AS.
subroutine asteroid_eq(t, as, l0, b0, r0, ra, dec, delta)
Calculate geocentric(?) equatorial coordinates ra, dec, delta for asteroid as at time t (Jul....
subroutine kepler(ecc, mea, eca)
Solve Kepler's equation.
Procedures for coordinates.
subroutine precess_orb(jd1, jd2, i, o1, o2)
Compute the precession of the equinoxes in orbital elements.
subroutine calcsunxyz(t1, l0, b0, r0, x, y, z)
Compute the geocentric equatorial rectangular coordinates of the Sun, from Earth's heliocentric,...
Planet data, needed to compute planet positions.
real(double), dimension(nasteroids, 9) asterelems
Asteroid orbital elements.