59 use sufr_kinds,
only: double
60 use sufr_angles,
only: rev
64 real(double),
intent(in) :: tm
65 integer,
intent(in) :: pl
66 real(double),
intent(out) :: lon,lat,rad
67 real(double),
intent(in),
optional :: LBaccur,Raccur
69 integer :: li, pow, Nli,Nle, var, nTerm, skip
70 real(double) :: fac, lbr(3), accur, desired_accuracy(3)
73 desired_accuracy = 0.d0
74 if(
present(lbaccur)) desired_accuracy(1:2) = [lbaccur,lbaccur]
75 if(
present(raccur)) desired_accuracy(3) = raccur
81 if(var.ge.2) nli =
vsopnls(1,pl)
82 if(var.eq.3) nli = nli +
vsopnls(2,pl)
90 fac = tm**pow *
vsopdat(2,li,pl)
91 lbr(var) = lbr(var) + fac * cos(
vsopdat(3,li,pl) +
vsopdat(4,li,pl)*tm )
94 if((desired_accuracy(var).gt.1.d-15) .and. (mod(li,3).eq.0))
then
96 accur = 2*sqrt(dble(nterm)) * abs(fac)
97 if(accur.lt.desired_accuracy(var)) skip = pow
Planet data, needed to compute planet positions.
real(double), dimension(4, 6827, 10) vsopdat
Periodic terms for VSOP87.
integer, dimension(3, 8) vsopnls
Numbers of lines in the VSOP input files (l,b,r x 8 pl)
integer, dimension(0:5, 3, 8) vsopnblk
Line number in the VSOP data where the next block of (Planet, Variable (LBR), Power) starts.
subroutine vsop87d_lbr(tm, pl, lon, lat, rad, lbaccur, raccur)
Calculate true heliocentric ecliptic coordinates l,b,r for planet pl and the mean ecliptic and equino...