sun Subroutine

subroutine sun(dj, el, c)

FOR USE WITH SUBROUTINE SOLSYS VERSION 3. THIS SUBROUTINE COMPUTES THE COORDINATES OF THE EARTH-SUN POSITION VECTOR WITH RESPECT TO THE ECLIPTIC AND EQUATOR OF DATE. A MODIFIED FORM OF NEWCOMB'S THEORY ('TABLES OF THE SUN', 1898) IS USED. ONLY THE LARGEST PERIODIC PERTURBATIONS ARE EVALUATED, AND VAN FLANDERN'S EXPRESSIONS FOR THE FUNDAMENTAL ARGUMENTS ('IMPROVED MEAN ELEMENTS FOR THE EARTH AND MOON', 1981) ARE USED. THE ABSOLUTE ACCURACY IS NO WORSE THAN 1 ARCSECOND (AVERAGE ERROR ABOUT 0.2 ARCSECOND) OVER 1800-2200. (ADAPTED FROM SUBROUTINE IAUSUN BY P. M. JANICZEK, USNO.)

 DJ   = TDB JULIAN DATE OF DESIRED EPOCH (IN)
 EL   = ARRAY OF ORBITAL ELEMENTS (SEE BELOW) FOR
        EPOCH DJ (OUT)
 C    = ARRAY OF COORDINATES (SEE BELOW) FOR
        EPOCH DJ (OUT)

Arguments

Type IntentOptional Attributes Name
double precision :: dj
double precision, dimension(21) :: el
double precision, dimension(13) :: c

Calls

proc~~sun~~CallsGraph proc~sun NOVAS_F3.1_solsys3.f90::sun x x proc~sun->x x1 x1 proc~sun->x1 x2 x2 proc~sun->x2 x3 x3 proc~sun->x3 x4 x4 proc~sun->x4 x5 x5 proc~sun->x5

Source Code

subroutine sun (dj,el,c)

double precision dj,el,c,t,tp,t20,ro,gv,gm,gj,gs,dl,dr,db,dg, &
 dblarg,d,twopi,str,rtd,r,tr, &
 sino,coso,sinl,cosl,sinb,cosb, &
 dsin,dcos,dmod
!
dimension el(21)
!
!     EL( 1)= SEMI-MAJOR AXIS, AU
!     EL( 2)= ORBITAL ECCENTRICITY
!     EL( 5)= LONGITUDE OF PERIGEE, RADIANS
!     EL( 9)= UNPERTURBED MEAN LONGITUDE, RADIANS
!     EL(10)= MEAN ANOMALY, AFFECTED BY LONG-PD PERTURBATIONS, RADIANS
!     EL(11)= UNPERTURBED RADIUS, AU
!     EL(12)= EQUATION OF THE CENTER, RADIANS
!     EL(13)= MEAN OBLIQUITY OF ECLIPTIC, RADIANS
!     EL(14)= MEAN LONGITUDE OF MOON, RADIANS
!     EL(15)= MEAN ANOMALY OF MOON, RADIANS
!     EL(16)= LUNAR MEAN ARGUMENT OF LATITUDE, RADIANS
!     EL(17)= MEAN LONGITUDE OF LUNAR ASCENDING NODE, RADIANS
!     EL(21)= MEAN LONGITUDE OF MOON'S PERIGEE, RADIANS
!             (REMAINING ELEMENTS OF ARRAY EL NOT USED)
!
dimension c(13)
!
!     C( 1) = PERTURBED RADIUS VECTOR, AU
!     C( 2) = SAME AS C(4), DEGREES
!     C( 3) = SAME AS C(5), DEGREES
!     C( 4) = ECLIPTIC LONGITUDE WRT MEAN ECL & EQUX OF DATE, RADIANS
!     C( 5) = ECLIPTIC LATITUDE  WRT MEAN ECL        OF DATE, RADIANS
!     C(11) = EQUATORIAL X WRT MEAN EQU & EQUX OF DATE, AU
!     C(12) = EQUATORIAL Y WRT MEAN EQU & EQUX OF DATE, AU
!     C(13) = EQUATORIAL Z WRT MEAN EQU & EQUX OF DATE, AU
!             (REMAINING ELEMENTS OF ARRAY C NOT USED)
!
!
!***********************************************************************
!
!     PART I    TABLES OF THE PERTURBATIONS
!
dimension x(8,46), x1(80), x2(80), x3(80), x4(80), x5(48)
equivalence (x(1, 1),x1(1))
equivalence (x(1,11),x2(1))
equivalence (x(1,21),x3(1))
equivalence (x(1,31),x4(1))
equivalence (x(1,41),x5(1))
!
!     PERTURBATIONS BY VENUS
!                  J    I     VC      VS    RHOC    RHOS      BC     BS
data x1 /  - 1.,  0., +  33.,-  67., -  85.,-  39., +  24.,-  17., &    !
           - 1.,+ 1., +2353.,-4228., -2062.,-1146., -   4.,+   3., &    !
           - 1.,+ 2., -  65.,-  34., +  68.,-  14., +   6.,-  92., &    !
           - 2.,+ 1., -  99.,+  60., +  84.,+ 136., +  23.,-   3., &    !
           - 2.,+ 2., -4702.,+2903., +3593.,+5822., +  10.,-   6., &    !
           - 2.,+ 3., +1795.,-1737., - 596.,- 632., +  37.,-  56., &    !
           - 3.,+ 3., - 666.,+  27., +  44.,+1044., +   8.,+   1., &    !
           - 3.,+ 4., +1508.,- 397., - 381.,-1448., + 185.,- 100., &    !
           - 3.,+ 5., + 763.,- 684., + 126.,+ 148., +   6.,-   3., &    !
           - 4.,+ 4., - 188.,-  93., - 166.,+ 337.,     0.,    0./      !
data x2 /  - 4.,+ 5., - 139.,-  38., -  51.,+ 189., -  31.,-   1., &    !
           - 4.,+ 6., + 146.,-  42., -  25.,-  91., +  12.,    0., &    !
           - 5.,+ 5., -  47.,-  69., - 134.,+  93.,     0.,    0., &    !
           - 5.,+ 7., - 119.,-  33., -  37.,+ 136., -  18.,-   6., &    !
           - 5.,+ 8., + 154.,    0.,     0.,-  26.,     0.,    0., &    !
           - 6.,+ 6., -   4.,-  38., -  80.,+   8.,     0.,    0., &    !
!
!     PERTURBATIONS BY MARS
!                  J    I     VC      VS    RHOC    RHOS      BC     BS
           + 1.,- 1., - 216.,- 167., -  92.,+ 119.,     0.,    0., &    !
           + 2.,- 2., +1963.,- 567., - 573.,-1976.,     0.,-   8., &    !
           + 2.,- 1., -1659.,- 617., +  64.,- 137.,     0.,    0., &    !
           + 3.,- 3., +  53.,- 118., - 154.,-  67.,     0.,    0./      !
data x3 /  + 3.,- 2., + 396.,- 153., -  77.,- 201.,     0.,    0., &    !
           + 4.,- 3., - 131.,+ 483., + 461.,+ 125., +   7.,+   1., &    !
           + 4.,- 2., + 526.,- 256., +  43.,+  96.,     0.,    0., &    !
           + 5.,- 4., +  49.,+  69., +  87.,-  62.,     0.,    0., &    !
           + 5.,- 3., -  38.,+ 200., +  87.,+  17.,     0.,    0., &    !
           + 6.,- 4., - 104.,- 113., - 102.,+  94.,     0.,    0., &    !
           + 6.,- 3., -  11.,+ 100., -  27.,-   4.,     0.,    0., &    !
           + 7.,- 4., -  78.,-  72., -  26.,+  28.,     0.,    0., &    !
           + 9.,- 5., +  60.,-  15., -   4.,-  17.,     0.,    0., &    !
           +15.,- 8., + 200.,-  30., -   1.,-   6.,     0.,    0./      !
!
!     PERTURBATIONS BY JUPITER
!                  J    I     VC      VS    RHOC    RHOS      BC     BS
data x4 /  + 1.,- 2., - 155.,-  52., -  78.,+ 193., +   7.,    0., &    !
           + 1.,- 1., -7208.,+  59., +  56.,+7067., -   1.,+  17., &    !
           + 1.,  0., - 307.,-2582., + 227.,-  89., +  16.,    0., &    !
           + 1.,+ 1., +   8.,-  73., +  79.,+   9., +   1.,+  23., &    !
           + 2.,- 3., +  11.,+  68., + 102.,-  17.,     0.,    0., &    !
           + 2.,- 2., + 136.,+2728., +4021.,- 203.,     0.,    0., &    !
           + 2.,- 1., - 537.,+1518., +1376.,+ 486., +  13.,+ 166., &    !
           + 3.,- 3., - 162.,+  27., +  43.,+ 278.,     0.,    0., &    !
           + 3.,- 2., +  71.,+ 551., + 796.,- 104., +   6.,-   1., &    !
           + 3.,- 1., -  31.,+ 208., + 172.,+  26., +   1.,+  18./      !
data x5 /  + 4.,- 3., -  43.,+   9., +  13.,+  73.,     0.,    0., &    !
           + 4.,- 2., +  17.,+  78., + 110.,-  24.,     0.,    0., &    !
!
!     PERTURBATIONS BY SATURN
!                  J    I     VC      VS    RHOC    RHOS      BC     BS
           + 1.,- 1., -  77.,+ 412., + 422.,+  79., +   1.,+   6., &    !
           + 1.,  0., -   3.,- 320., +   8.,-   1.,     0.,    0., &    !
           + 2.,- 2., +  38.,- 101., - 152.,-  57.,     0.,    0., &    !
           + 2.,- 1., +  45.,- 103., - 103.,-  44.,     0.,    0./      !
!
!
!***********************************************************************
!
!     PART II   NECESSARY PRELIMINARIES
!
data twopi /6.283185307179586d0/
data str   /206264806.2470964d0/
data rtd   /57.295779513082321d0/
data r     /1296000.0d0/
tr = 1000.0d0 / str
!
!     T  = TIME IN JULIAN CENTURIES FROM 1900 JANUARY 0
t  = (dj - 2415020.d0)/36525.d0
!
!     TP = TIME IN JULIAN YEARS     FROM 1850 JANUARY 0
tp = (dj - 2396758.d0)/365.25d0
!
!     T20= TIME IN JULIAN CENTURIES FROM J2000.0
t20= (dj - 2451545.d0)/36525.d0
!
!
!***********************************************************************
!
!     PART III  COMPUTATION OF ELLIPTIC ELEMENTS AND SECULAR TERMS
!
!     VAN FLANDERN'S EXPRESSIONS FOR MEAN ELEMENTS
el( 1) = 1.00000030007166d0
el( 2) = 0.016708320d0 + (-0.42229d-04 - 0.126d-06 * t20) * t20
el( 5) = 1018578.046d0 + (6190.046d0 + &
                (1.666d0 + 0.012d0 * t20) * t20) * t20
el( 5) = el( 5) * tr
el( 9) = 1009677.850d0 + (100.0d0 * r + 2771.27d0 + &
                1.089d0 * t20) * t20
el( 9) = dmod (el( 9) * tr, twopi)
el(10) = 1287099.804d0 + (99.0d0 * r + 1292581.224d0 + &
                (-0.577d0 - 0.012d0 * t20) * t20) * t20
el(10) = dmod (el(10) * tr, twopi)

!     EXPRESSION FOR OBLIQUITY FROM P03 (IAU 2006) PRECESSION
el(13) = 84381.406d0 + (-46.836769d0 + &
               (-0.0001831d0 + 0.00200340d0 * t20) * t20) * t20
el(13) = el(13) * tr

!     KAPLAN CORRECTION TO SUN'S MEAN LONGITUDE TO FIT DE405 OVER
!     INTERVAL 1800-2200, USING P03 (IAU 2006) PRECESSION
el(9) = el(9) &
      + ( 0.1320d0 - 0.1355d0 * t20 ) * tr

!
!***********************************************************************
!
!     PART IV   LUNAR TERMS
!
!     VAN FLANDERN'S EXPRESSIONS FOR MEAN ELEMENTS
el(14) = 785939.157d0 + (1336.0d0 * r + 1108372.598d0 &
                + (-5.802d0 + 0.019d0 * t20) * t20) * t20
el(14) = dmod (el(14) * tr, twopi)
el(17) = 450160.280d0 + (-5.0d0 * r - 482890.539d0 + &
                (7.455d0 + 0.008d0 * t20) * t20) * t20
el(17) = dmod (el(17) * tr, twopi)
el(21) = 300072.424d0 + (11.0d0 * r + 392449.965d0 + &
                (-37.112d0 - 0.045d0 * t20) * t20) * t20
el(21) = dmod (el(21) * tr, twopi)
!
!     DERIVED ARGUMENTS
el(15) = el(14) - el(21)
el(16) = el(14) - el(17)
el(15) = dmod (el(15),twopi)
el(16) = dmod (el(16),twopi)
!     MEAN ELONGATION
d      = el(14) - el(9)
!
!     COMBINATIONS OF ARGUMENTS AND THE PERTURBATIONS
d = dmod (d,twopi)
arg = d
dl =    +  6469.*sin(arg) +  13.*sin(3.*arg)
dr =    + 13390.*cos(arg) +  30.*cos(3.*arg)
!
dblarg = d + el(15)
dblarg = dmod (dblarg,twopi)
arg = dblarg
dl = dl +  177.*sin(arg)
dr = dr +  370.*cos(arg)
!
dblarg = d - el(15)
dblarg = dmod (dblarg,twopi)
arg = dblarg
dl = dl -  424.*sin(arg)
dr = dr - 1330.*cos(arg)
!
dblarg = 3.d0*d - el(15)
dblarg = dmod (dblarg,twopi)
arg = dblarg
dl = dl +   39.*sin(arg)
dr = dr +   80.*cos(arg)
!
dblarg = d + el(10)
dblarg = dmod (dblarg,twopi)
arg = dblarg
dl = dl -   64.*sin(arg)
dr = dr -  140.*cos(arg)
!
dblarg = d - el(10)
dblarg = dmod (dblarg,twopi)
arg = dblarg
dl = dl +  172.*sin(arg)
dr = dr +  360.*cos(arg)
!
el(16) = dmod (el(16),twopi)
arg = el(16)
db =    + 576.*sin(arg)
!
!
!***********************************************************************
!
!     PART V    COMPUTATION OF PERIODIC PERTURBATIONS
!
!     THE PERTURBING MEAN ANOMALIES
!
gv  = 0.19984020d+01 + .1021322923d+02*tp
gm  = 0.19173489d+01 + .3340556174d+01*tp
gj  = 0.25836283d+01 + .5296346478d+00*tp
gs  = 0.49692316d+01 + .2132432808d+00*tp
gv  = dmod (gv,twopi)
gm  = dmod (gm,twopi)
gj  = dmod (gj,twopi)
gs  = dmod (gs,twopi)
!
!
!     MODIFICATION OF FUNDAMENTAL ARGUMENTS
!
!     APPLICATION OF THE JUPITER-SATURN GREAT INEQUALITY
!     TO JUPITER'S MEAN ANOMALY
!
gj = gj + 0.579904067d-02 * dsin (5.d0*gs - 2.d0*gj &
                 + 1.1719644977d0 - 0.397401726d-03*tp)
gj = dmod (gj,twopi)
!
!     LONG PERIOD PERTURBATIONS OF MEAN ANOMALY
!
st = t
!                ARGUMENT IS ( 4 MARS - 7 EARTH + 3 VENUS )
dg = 266.* sin (0.555015 + 2.076942*st) &
!                ARGUMENT IS ( 3 JUPITER - 8 MARS + 4 EARTH )
    + 6400.* sin (4.035027 + 0.3525565*st) &
!                ARGUMENT IS ( 13 EARTH - 8 VENUS )
    + (1882.-16.*st) * sin (0.9990265 + 2.622706*st)
!
!
!     COMPUTATION OF THE EQUATION OF THE CENTER
!
!     FORM PERTURBED MEAN ANOMALY
el(10) = dg/str + el(10)
el(10) = dmod (el(10),twopi)
el(12) =   dsin(     el(10)) * (6910057.d0 -(17240.d0+52.d0*t)*t) &
         + dsin(2.d0*el(10)) * (  72338.d0 -    361.d0*t) &
         + dsin(3.d0*el(10)) * (   1054.d0 -      1.d0*t)
!
!     THE UNPERTURBED RADIUS VECTOR
ro     =                          30570.d0 -    150.d0*t &
         - dcos(     el(10)) * (7274120.d0 - (18140.d0+50.d0*t)*t) &    !
         - dcos(2.d0*el(10)) * (  91380.d0 -    460.d0*t) &
         - dcos(3.d0*el(10)) * (   1450.d0 -     10.d0*t)
el(11) = 10.d0**(ro*1.d-09)
!
!
!     SELECTED PLANETARY PERTURBATIONS FROM NEWCOMB'S THEORY FOLLOW
!
!     PERTURBATIONS BY VENUS
do 20 k=1,16
!     ARGUMENT J * VENUS +   I * EARTH
dblarg = x(1,k)*gv + x(2,k)*el(10)
dblarg = dmod (dblarg,twopi)
arg = dblarg
cs  = cos(arg)
ss  = sin(arg)
dl  =(x(3,k)*cs  + x(4,k)*ss )+ dl
dr  =(x(5,k)*cs  + x(6,k)*ss )+ dr
db  =(x(7,k)*cs  + x(8,k)*ss )+ db
20 continue
!
!     PERTURBATIONS BY MARS
do 30 k=17,30
!     ARGUMENT  J * MARS +   I * EARTH
dblarg = x(1,k)*gm + x(2,k)*el(10)
dblarg = dmod (dblarg,twopi)
arg = dblarg
cs  = cos(arg)
ss  = sin(arg)
dl  =(x(3,k)*cs  + x(4,k)*ss )+ dl
dr  =(x(5,k)*cs  + x(6,k)*ss )+ dr
db  =(x(7,k)*cs  + x(8,k)*ss )+ db
30 continue
!
!     PERTURBATIONS BY JUPITER
do 40 k=31,42
!     ARGUMENT J*JUPITER +   I * EARTH
dblarg = x(1,k)*gj + x(2,k)*el(10)
dblarg = dmod (dblarg,twopi)
arg = dblarg
cs  = cos(arg)
ss  = sin(arg)
dl  =(x(3,k)*cs  + x(4,k)*ss )+ dl
dr  =(x(5,k)*cs  + x(6,k)*ss )+ dr
db  =(x(7,k)*cs  + x(8,k)*ss )+ db
40 continue
!
!     PERTURBATIONS BY SATURN
do 50 k=43,46
!     ARGUMENT J*SATURN  +   I * EARTH
dblarg = x(1,k)*gs + x(2,k)*el(10)
dblarg = dmod (dblarg,twopi)
arg = dblarg
cs  = cos(arg)
ss  = sin(arg)
dl  =(x(3,k)*cs  + x(4,k)*ss )+ dl
dr  =(x(5,k)*cs  + x(6,k)*ss )+ dr
db  =(x(7,k)*cs  + x(8,k)*ss )+ db
50 continue
!
!
!***********************************************************************
!
!     PART VI   COMPUTATION OF ECLIPTIC AND EQUATORIAL COORDINATES
!
c(1) = el(11)*10.d0**(dr*1.d-09)
c(4) = (dl + dg + el(12))/str + el(9)
c(4) = dmod (c(4),twopi)
c(5) = db/str
c(2) = c(4)*rtd
c(3) = c(5)*rtd
sino = dsin (el(13))
coso = dcos (el(13))
sinl = dsin (c(4))
cosl = dcos (c(4))
sinb = dsin (c(5))
cosb = dcos (c(5))
c(11) = c(1) * (cosb * cosl)
c(12) = c(1) * (cosb * sinl * coso - sinb * sino)
c(13) = c(1) * (cosb * sinl * sino + sinb * coso)

end subroutine sun