libTheSky
Routines to compute sky positions of Sun, Moon, planets and more
Loading...
Searching...
No Matches
modules.f90
Go to the documentation of this file.
1!> \file modules.f90 Modules used by libTheSky
2
3
4! Copyright (c) 2002-2023 Marc van der Sluys - marc.vandersluys.nl
5!
6! This file is part of the libTheSky package,
7! see: http://libthesky.sf.net/
8!
9! This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
10! as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
11!
12! This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
13! warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14!
15! You should have received a copy of the GNU General Public License along with this code. If not, see
16! <http://www.gnu.org/licenses/>.
17
18
19!***********************************************************************************************************************************
20!> \brief Constants used in libTheSky
21
23 use sufr_kinds, only: double
24 implicit none
25 save
26 private :: double
27
28 integer, parameter :: deltat_nmax = 1000 ! Need ~430 until 2000
32
33 real(double) :: nutationdat(9,63)
34
35 character :: theskydir*(99),library_name*(99)
36
37end module thesky_constants
38!***********************************************************************************************************************************
39
40
41!***********************************************************************************************************************************
42!> \brief Local parameters for libTheSky: location, date, time
43
45 use sufr_kinds, only: double
46 implicit none
47 save
48 private :: double
49
50 integer, parameter :: maxlocs = 100
53
54end module thesky_local
55!***********************************************************************************************************************************
56
57
58!***********************************************************************************************************************************
59!> \brief Planet data, needed to compute planet positions
60
62 use sufr_kinds, only: double, long
63 implicit none
64 save
65 private :: double, long
66
67 integer, parameter :: nplanpos=100
68 integer, parameter :: nasteroids=1000 ! Nasteroids is actually much larger; look at the first Nasteroids asteroids only
69
70 integer(long) :: moonla_lrb(3,60)
71 integer :: pluc(43,3),plul(43,2),plub(43,2),plur(43,2), pl0
72 integer :: moonla_arg(8,60), vsopnls(3,8), vsopnblk(0:5,3,8)
73
74 real(double) :: vsopdat(4,6827,10), vsoptruncs(3,8)
75 real(double) :: plelems(8,6),plelems2000(8,6),plelemdata(2,8,6,0:3)
76 real(double) :: asterelems(nasteroids,9)
77
78 !> \brief Planpos[] is an array with many different types of coordinates and related variables:
79 !!
80 !! Geocentric (mostly) coordinates:
81 !! - 1 = gcl = Apparent geocentric ecliptic longitude
82 !! - 2 = gcb = Apparent geocentric ecliptic latitude
83 !! - 3 = r = True heliocentric distance
84 !! - 4 = delta = Apparent geocentric distance
85 !! - 5 = ra = Apparent geocentric R.A.
86 !! - 6 = dec = Apparent geocentric declination
87 !! - 7 = tau = Geocentric light time in days
88 !! - 8 = hh = Apparent geocentric hour angle
89 !! - 9 = az = Apparent geocentric azimuth
90 !! - 10 = alt = Apparent geocentric altitude
91 !! - 11 = elon = Apparent TOPOCENTRIC elongation, using topocentric altitude and correcting for refraction
92 !! - 12 = diam = Apparent geocentric apparent diameter
93 !!
94 !! Magnitude, phase, parallax:
95 !! - 13 = magn = Apparent visual magnitude
96 !! - 14 = k = Illuminated fraction
97 !! - 15 = pa = Phase angle
98 !! - 16 = parang = Topocentric parallactic angle
99 !! - 17 = hp = Horizontal parallax
100 !!
101 !! Topocentric (mostly) coordinates:
102 !! - 21 = topl = Apparent topocentric ecliptic longitude
103 !! - 22 = topb = Apparent topocentric ecliptic latitude
104 !! - 23 = delta0 = True geocentric distance
105 !! - 24 = topdelta = Apparent topocentric distance
106 !! - 25 = topra = Apparent topocentric R.A.
107 !! - 26 = topdec = Apparent topocentric declination
108 !!
109 !! - 28 = tophh = Apparent topocentric hour angle
110 !! - 29 = topaz = Apparent topocentric azimuth
111 !! - 30 = topalt = Apparent topocentric altitude
112 !! - 31 = topalt + refract = Apparent topocentric altitude, corrected for refraction
113 !! - 32 = topdiam = Apparent topocentric apparent diameter
114 !!
115 !! Heliocentric coordinates:
116 !! - 33 = l = Apparent heliocentric ecliptic longitude
117 !! - 34 = b = Apparent heliocentric ecliptic latitude
118 !! - 35 = r = Apparent heliocentric distance
119 !! - 36 = hcl00 = True heliocentric ecliptic longitude, FK5
120 !! - 37 = hcb00 = True heliocentric ecliptic latitude, FK5
121 !! - 38 = hcr00 = True heliocentric distance
122 !!
123 !! Other variables:
124 !! - 39 = pl = Planet for which data were computed
125 !! - 40 = jde = JDE for the instance of calculation
126 !! - 41 = l0+pi = True geocentric ecliptic longitude for the Sun, in FK5
127 !! - 42 = -b0 = True geocentric ecliptic latitude for the Sun, in FK5
128 !! - 43 = r0 = True geocentric distance for the Sun
129 !! - 44 = lst = Local APPARENT siderial time (radians)
130 !! - 45 = agst = Greenwich APPARENT siderial time (radians)
131 !! - 46 = t0 * 10.d0 = Apparent dynamical time in Julian Centuries since 2000.0
132 !! - 47 = dpsi = Nutation in longitude
133 !! - 48 = eps = True obliquity of the ecliptic, corrected for nutation
134 !! - 49 = gmst = Greenwich MEAN siderial time (radians)
135 !! - 50 = eps0 = Mean obliquity of the ecliptic, without nutation
136 !!
137 !! More geocentric coordinates:
138 !! - 51 = sun_gcl,b = Apparent geocentric longitude of the Sun (variable was treated as if pl.eq.3)
139 !! - 52 = sun_gcl,b = Apparent geocentric latitude of the Sun (variable was treated as if pl.eq.3)
140 !!
141 !! - 61 = gcx = Apparent geocentric x
142 !! - 62 = gcy = Apparent geocentric y
143 !! - 63 = gcz = Apparent geocentric z
144 !!
145 !! - 64 = gcx0 = True geocentric x
146 !! - 65 = gcy0 = True geocentric y
147 !! - 66 = gcz0 = True geocentric z
148 !!
149 !! - 67 = gcl0 = True geocentric ecliptic longitude
150 !! - 68 = gcb0 = True geocentric ecliptic latitude
151 !! - 69 = delta0 = True geocentric distance
152
153 real(double) :: planpos(nplanpos)
154
155 character :: plcon(0:19)*(3),asternames(nasteroids)*(18)
156
157end module thesky_planetdata
158!***********************************************************************************************************************************
159
160
161!***********************************************************************************************************************************
162!> \brief ELP-82B Moon data, needed to compute Moon positions
163
165 use sufr_kinds, only: double
166 implicit none
167 save
168 private :: double
169
170 real(double), parameter :: c1=1.d0/60.d0, c2=1.d0/3600.d0
171 real(double), parameter :: ath=384747.9806743165d0, a0=384747.9806448954d0
172
173 real(double) :: p1,p2,p3,p4,p5, q1,q2,q3,q4,q5
174 real(double) :: w(3,0:4),eart(0:4),peri(0:4),p(8,0:1), del(4,0:4),zeta(0:1),t(0:4)
175 real(double) :: pre(3),coef(7),zone(6), pc1(6,1023),pc2(6,918),pc3(6,704), per1(3,19537),per2(3,6766),per3(3,8924)
176
177 integer :: ilu(4),ipla(11),nterm(3,12),nrang(3,0:12)
178
179 real(double) :: prec0
180 integer :: ideb
181
182 data ideb/0/,prec0/-1.d0/,t/1.d0,4*0.d0/
183
184end module thesky_moondata
185!***********************************************************************************************************************************
186
187
188!***************************************************************************************************
189! \brief Constants for the ELP-MPP02 lunar theory
190
192 use sufr_kinds, only: double
193
194 implicit none
195 real(double) :: w(3,0:4),eart(0:4),peri(0:4), zeta(0:4),del(4,0:4)
196 real(double) :: p(8,0:4),delnu,dele,delg,delnp,delep,dtasm,am, p1,p2,p3,p4,p5,q1,q2,q3,q4,q5
197
199!***************************************************************************************************
200
201
202!***************************************************************************************************
203! \brief Data series for the ELP-MPP02 lunar theory
204
206 use sufr_kinds, only: double
207
208 implicit none
209 integer, parameter, private :: max1=2645, max2=33256
210 integer :: nmpb(3,3), nper(3,0:3,3)
211 real(double) :: cmpb(max1),fmpb(0:4,max1), cper(max2),fper(0:4,max2)
212
214!***************************************************************************************************
215
216
217!***********************************************************************************************************************************
218!> \brief Data to compute comet positions
219
221 use sufr_kinds, only: double
222 implicit none
223 save
224 private :: double
225
226 integer, parameter :: ncometsmax=10000 ! Max. number of comets
228 real(double) :: cometelems(ncometsmax,9), comepoche
229 character :: cometnames(ncometsmax)*(60)
230
231end module thesky_cometdata
232!***********************************************************************************************************************************
233
234
235!***********************************************************************************************************************************
236!> \brief Star and basic constellation data
237
239 use sufr_kinds, only: double
240 implicit none
241 save
242 private :: double
243
244 ! Selected bright stars close to the ecliptic:
245 integer, parameter :: nstars=17,nconstel=88,nconid=357
249
250 ! Constellations:
251 integer :: conid(nconid)
253 character :: conabr(nconstel)*(3), conidabr(nconid)*(3)
255
256end module thesky_stardata
257!***********************************************************************************************************************************
258
259
260!***********************************************************************************************************************************
261!> \brief Data from the Bright Star Catalogue (BSC)
262
264 use sufr_kinds, only: double
265 implicit none
266 save
267 private :: double
268
269 integer, parameter :: n_bsc=9110
274
275end module thesky_bscdata
276!***********************************************************************************************************************************
277
278
Data from the Bright Star Catalogue (BSC)
Definition modules.f90:263
integer, parameter n_bsc
Definition modules.f90:269
real(double), dimension(n_bsc) bsc_bv
Definition modules.f90:272
real(double), dimension(n_bsc) bsc_ub
Definition modules.f90:272
real(double), dimension(n_bsc) bsc_dec
Definition modules.f90:271
real(double), dimension(n_bsc) bsc_par
Definition modules.f90:272
character, dimension(10) bsc_abbr
Definition modules.f90:273
real(double), dimension(n_bsc) bsc_vm
Definition modules.f90:271
character, dimension(n_bsc) bsc_mult
Definition modules.f90:273
real(double), dimension(n_bsc) bsc_pmd
Definition modules.f90:271
character, dimension(20) bsc_sptype
Definition modules.f90:273
character, dimension(10) bsc_name
Definition modules.f90:273
real(double), dimension(n_bsc) bsc_rv
Definition modules.f90:271
real(double), dimension(n_bsc) bsc_pma
Definition modules.f90:271
real(double), dimension(n_bsc) bsc_ra
Definition modules.f90:271
integer, dimension(n_bsc) bsc_sao
Definition modules.f90:270
real(double), dimension(n_bsc) bsc_ri
Definition modules.f90:272
integer, dimension(n_bsc) bsc_vm_indx
Definition modules.f90:270
character, dimension(n_bsc) bsc_var
Definition modules.f90:273
Data to compute comet positions.
Definition modules.f90:220
integer, parameter ncometsmax
Definition modules.f90:226
real(double), dimension(ncometsmax, 9) cometelems
Definition modules.f90:228
real(double) comepoche
Definition modules.f90:228
integer, dimension(ncometsmax) cometdiedatp
Definition modules.f90:227
character, dimension(60) cometnames
Definition modules.f90:229
integer cometdatfile
Definition modules.f90:227
Constants used in libTheSky.
Definition modules.f90:22
character, dimension(99) library_name
Definition modules.f90:35
integer thesky_verbosity
Definition modules.f90:31
real(double) deltat_forced
Definition modules.f90:30
integer, parameter deltat_nmax
Definition modules.f90:28
real(double) deltat_accel
Definition modules.f90:30
integer deltat_minyr
Definition modules.f90:31
real(double) deltat_change
Definition modules.f90:30
character, dimension(99) theskydir
Definition modules.f90:35
real(double) jd1820
Definition modules.f90:30
real(double), dimension(deltat_nmax) deltat_values
Definition modules.f90:29
integer deltat_n
Definition modules.f90:31
real(double) deltat_0
Definition modules.f90:30
real(double), dimension(9, 63) nutationdat
Definition modules.f90:33
real(double), dimension(deltat_nmax) deltat_years
Definition modules.f90:29
integer deltat_maxyr
Definition modules.f90:31
real(double), dimension(0:4) eart
Definition modules.f90:195
real(double), dimension(4, 0:4) del
Definition modules.f90:195
real(double), dimension(0:4) zeta
Definition modules.f90:195
real(double), dimension(3, 0:4) w
Definition modules.f90:195
real(double), dimension(0:4) peri
Definition modules.f90:195
real(double), dimension(8, 0:4) p
Definition modules.f90:196
real(double), dimension(max1) cmpb
Definition modules.f90:211
real(double), dimension(0:4, max1) fmpb
Definition modules.f90:211
real(double), dimension(max2) cper
Definition modules.f90:211
integer, dimension(3, 3) nmpb
Definition modules.f90:210
real(double), dimension(0:4, max2) fper
Definition modules.f90:211
integer, dimension(3, 0:3, 3) nper
Definition modules.f90:210
Local parameters for libTheSky: location, date, time.
Definition modules.f90:44
integer, parameter maxlocs
Definition modules.f90:50
real(double) second
Definition modules.f90:51
integer month
Definition modules.f90:52
integer minute
Definition modules.f90:52
real(double) tz
Definition modules.f90:51
real(double) height
Definition modules.f90:51
real(double) tz0
Definition modules.f90:51
real(double) lon0
Definition modules.f90:51
real(double) deltat
Definition modules.f90:51
real(double) lat0
Definition modules.f90:51
integer hour
Definition modules.f90:52
real(double) day
Definition modules.f90:51
integer dsttp
Definition modules.f90:52
integer year
Definition modules.f90:52
ELP-82B Moon data, needed to compute Moon positions.
Definition modules.f90:164
real(double), parameter a0
Definition modules.f90:171
real(double), dimension(4, 0:4) del
Definition modules.f90:174
real(double) q5
Definition modules.f90:173
real(double) q3
Definition modules.f90:173
real(double), dimension(3, 0:4) w
Definition modules.f90:174
integer, dimension(3, 0:12) nrang
Definition modules.f90:177
real(double), parameter c1
Definition modules.f90:170
real(double) p3
Definition modules.f90:173
real(double) q4
Definition modules.f90:173
real(double), dimension(0:4) peri
Definition modules.f90:174
real(double), dimension(6, 704) pc3
Definition modules.f90:175
real(double), dimension(0:1) zeta
Definition modules.f90:174
real(double) q2
Definition modules.f90:173
real(double), dimension(6, 918) pc2
Definition modules.f90:175
real(double) prec0
Definition modules.f90:179
real(double), dimension(6, 1023) pc1
Definition modules.f90:175
real(double), dimension(3, 19537) per1
Definition modules.f90:175
real(double), parameter ath
Definition modules.f90:171
real(double), dimension(8, 0:1) p
Definition modules.f90:174
real(double), dimension(0:4) t
Definition modules.f90:174
integer, dimension(3, 12) nterm
Definition modules.f90:177
real(double), dimension(3, 6766) per2
Definition modules.f90:175
integer, dimension(4) ilu
Definition modules.f90:177
real(double) p5
Definition modules.f90:173
real(double) p2
Definition modules.f90:173
real(double) p1
Definition modules.f90:173
real(double), dimension(0:4) eart
Definition modules.f90:174
integer, dimension(11) ipla
Definition modules.f90:177
real(double), parameter c2
Definition modules.f90:170
real(double), dimension(6) zone
Definition modules.f90:175
real(double) q1
Definition modules.f90:173
real(double), dimension(7) coef
Definition modules.f90:175
real(double) p4
Definition modules.f90:173
real(double), dimension(3, 8924) per3
Definition modules.f90:175
real(double), dimension(3) pre
Definition modules.f90:175
Planet data, needed to compute planet positions.
Definition modules.f90:61
real(double), dimension(4, 6827, 10) vsopdat
Definition modules.f90:74
integer(long), dimension(3, 60) moonla_lrb
Definition modules.f90:70
character, dimension(18) asternames
Definition modules.f90:155
integer, dimension(43, 2) plub
Definition modules.f90:71
integer, dimension(3, 8) vsopnls
Definition modules.f90:72
integer, parameter nplanpos
Definition modules.f90:67
real(double), dimension(8, 6) plelems
Definition modules.f90:75
character, dimension(3) plcon
Definition modules.f90:155
real(double), dimension(nplanpos) planpos
Planpos[] is an array with many different types of coordinates and related variables:
Definition modules.f90:153
real(double), dimension(8, 6) plelems2000
Definition modules.f90:75
integer, dimension(43, 2) plur
Definition modules.f90:71
real(double), dimension(3, 8) vsoptruncs
Definition modules.f90:74
real(double), dimension(2, 8, 6, 0:3) plelemdata
Definition modules.f90:75
integer, dimension(43, 3) pluc
Definition modules.f90:71
integer, dimension(43, 2) plul
Definition modules.f90:71
integer, dimension(8, 60) moonla_arg
Definition modules.f90:72
integer, parameter nasteroids
Definition modules.f90:68
integer, dimension(0:5, 3, 8) vsopnblk
Definition modules.f90:72
real(double), dimension(nasteroids, 9) asterelems
Definition modules.f90:76
Star and basic constellation data.
Definition modules.f90:238
character, dimension(19) latconnames
Definition modules.f90:254
character, dimension(10) starconsnl
Definition modules.f90:248
character, dimension(3) conidabr
Definition modules.f90:253
character, dimension(17) nlconnames
Definition modules.f90:254
real(double), dimension(nstars) starb
Definition modules.f90:246
real(double), dimension(nstars) starra
Definition modules.f90:246
integer, parameter nconid
Definition modules.f90:245
character, dimension(19) genconnames
Definition modules.f90:254
character, dimension(10) starcons
Definition modules.f90:248
integer, parameter nconstel
Definition modules.f90:245
real, dimension(nstars) starmags
Definition modules.f90:247
real(double), dimension(nconid) coniddecl
Definition modules.f90:252
character, dimension(18) enconnames
Definition modules.f90:254
real, dimension(nstars) starrads
Definition modules.f90:247
real(double), dimension(nconid) conidrau
Definition modules.f90:252
real(double), dimension(nstars) starl
Definition modules.f90:246
real(double), dimension(nstars) stardec
Definition modules.f90:246
character, dimension(10) starnames
Definition modules.f90:248
character, dimension(3) starconsabr
Definition modules.f90:248
integer, dimension(nconid) conid
Definition modules.f90:251
character, dimension(3) conabr
Definition modules.f90:253
integer, parameter nstars
Definition modules.f90:245
character, dimension(11) starnamesnl
Definition modules.f90:248
real(double), dimension(nconid) conidral
Definition modules.f90:252