elp-mpp02 0.0.4__py3-none-any.whl → 0.0.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- elp_mpp02/__init__.py +26 -0
- elp_mpp02/mpp02.py +70 -72
- {elp_mpp02-0.0.4.dist-info → elp_mpp02-0.0.6.dist-info}/METADATA +16 -11
- elp_mpp02-0.0.6.dist-info/RECORD +7 -0
- {elp_mpp02-0.0.4.dist-info → elp_mpp02-0.0.6.dist-info}/WHEEL +1 -1
- elp_mpp02-0.0.6.dist-info/licenses/LICENCE +287 -0
- elp_mpp02-0.0.4.dist-info/LICENCE +0 -674
- elp_mpp02-0.0.4.dist-info/RECORD +0 -7
- {elp_mpp02-0.0.4.dist-info → elp_mpp02-0.0.6.dist-info}/top_level.txt +0 -0
elp_mpp02/__init__.py
CHANGED
@@ -1 +1,27 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# SPDX-License-Identifier: EUPL-1.2
|
3
|
+
#
|
4
|
+
# Copyright (c) 2019-2025 Marc van der Sluys - Nikhef/Utrecht University - marc.vandersluys.nl
|
5
|
+
#
|
6
|
+
# This file is part of the evTool Python package:
|
7
|
+
# Analyse and display output from the binary stellar-evolution code ev (a.k.a. STARS or TWIN).
|
8
|
+
# See: https://github.com/MarcvdSluys/evTool
|
9
|
+
#
|
10
|
+
# This is free software: you can redistribute it and/or modify it under the terms of the European Union
|
11
|
+
# Public Licence 1.2 (EUPL 1.2). This software is distributed in the hope that it will be useful, but
|
12
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE. See the EU Public Licence for more details. You should have received a copy of the European
|
14
|
+
# Union Public Licence along with this code. If not, see <https://www.eupl.eu/1.2/en/>.
|
15
|
+
|
16
|
+
|
17
|
+
"""Accurate Moon positions using the Lunar solution ELP/MPP02
|
18
|
+
|
19
|
+
This module uses the semi-analytical Lunar solution ELP2000/MPP02 to compute the geocentric position of the
|
20
|
+
Moon in the dynamical mean ecliptic and equinox of J2000. This Python code has been adapted from the Fortran
|
21
|
+
version in libTheSky.
|
22
|
+
|
23
|
+
"""
|
24
|
+
|
25
|
+
|
1
26
|
name = "elp-mpp02"
|
27
|
+
__author__ = 'Marc van der Sluys - Nikhef/Utrecht University - marc.vandersluys.nl'
|
elp_mpp02/mpp02.py
CHANGED
@@ -27,7 +27,7 @@ References:
|
|
27
27
|
|
28
28
|
- Refereed article: Chapront J., Francou G., A&A 404, 735 (2003)
|
29
29
|
|
30
|
-
- libTheSky:
|
30
|
+
- libTheSky: https://libthesky.sourceforge.net/
|
31
31
|
|
32
32
|
|
33
33
|
Dependencies:
|
@@ -37,29 +37,31 @@ Apart from the standard Python modules math and sys, numpy and fortranformat mus
|
|
37
37
|
|
38
38
|
Copyright:
|
39
39
|
|
40
|
-
Copyright (c) 2019 Marc van der Sluys,
|
41
|
-
|
40
|
+
Copyright (c) 2019-2025 Marc van der Sluys, Department of Physics, Utrecht University, The Netherlands
|
41
|
+
and Nikhef (Netherlands institute for high-energy physics and gravitational waves), Amsterdam, The Netherlands -
|
42
|
+
https://www.nikhef.nl/~sluys/ (this Python code)
|
42
43
|
|
43
44
|
This file is part of the ELP/MPP02 Python package,
|
44
|
-
see:
|
45
|
+
see: https://pypi.org/project/elp_mpp02/ / https://github.com/MarcvdSluys/ELP-MPP02
|
45
46
|
|
46
|
-
This is free software: you can redistribute it and/or modify it under the terms of the
|
47
|
-
|
47
|
+
This is free software: you can redistribute it and/or modify it under the terms of the European Union Public
|
48
|
+
Licence 1.2 (EUPL 1.2). This software is distributed in the hope that it will be useful, but WITHOUT ANY
|
49
|
+
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
50
|
+
EU Public Licence for more details. You should have received a copy of the European Union Public Licence
|
51
|
+
along with this code. If not, see <https://www.eupl.eu/1.2/en/>.
|
48
52
|
|
49
|
-
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
50
|
-
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
51
53
|
|
52
|
-
|
53
|
-
|
54
|
+
Acknowledgements:
|
55
|
+
- Thanks to A. Vähäkangas for bug reports.
|
54
56
|
|
55
57
|
"""
|
56
58
|
|
57
59
|
|
58
|
-
##############################################################################################################
|
59
60
|
import math as m
|
60
61
|
import numpy.core as np
|
61
62
|
import sys
|
62
63
|
|
64
|
+
|
63
65
|
# Global constants:
|
64
66
|
d2r = m.radians(1) # Degrees to radians
|
65
67
|
r2d = m.degrees(1) # Radians to degrees
|
@@ -69,6 +71,7 @@ pi2 = pi*2
|
|
69
71
|
pio2 = pi/2
|
70
72
|
jd2000 = 2451545
|
71
73
|
|
74
|
+
|
72
75
|
# Global variables:
|
73
76
|
modeInit = 999 # := uninitialised
|
74
77
|
dataDir = '.' # Directory where the data files are located (default '.': the current directory)
|
@@ -91,8 +94,6 @@ p = np.zeros((8,5))
|
|
91
94
|
delnu=0.; dele=0.; delg=0.; delnp=0.; delep=0.; dtasm=0.; am=0.
|
92
95
|
|
93
96
|
|
94
|
-
|
95
|
-
##############################################################################################################
|
96
97
|
def initialise_and_read_files(mode=0):
|
97
98
|
"""Initialise ELP/MPP02 constants and read the data files if necessary
|
98
99
|
|
@@ -104,24 +105,23 @@ def initialise_and_read_files(mode=0):
|
|
104
105
|
"""
|
105
106
|
|
106
107
|
global modeInit
|
107
|
-
#print("Initialise and read files:", modeInit)
|
108
|
+
# print("Initialise and read files:", modeInit)
|
108
109
|
|
109
110
|
# Initializing of constants and reading the files:
|
110
111
|
ierr = 0
|
111
|
-
if
|
112
|
+
if mode!=modeInit:
|
112
113
|
initialise(mode)
|
113
114
|
ierr = read_files()
|
114
|
-
if
|
115
|
+
if ierr!=0: return ierr
|
115
116
|
|
116
117
|
modeInit = mode # Indicate that the data have been initialised
|
117
|
-
#print("modeInit:", modeInit)
|
118
|
+
# print("modeInit:", modeInit)
|
118
119
|
return ierr
|
119
120
|
|
120
121
|
return ierr
|
121
122
|
|
122
123
|
|
123
124
|
|
124
|
-
##############################################################################################################
|
125
125
|
def initialise(mode=0):
|
126
126
|
"""Initialization of the constants and parameters used for the evaluation of the ELP/MPP02 series
|
127
127
|
|
@@ -135,15 +135,19 @@ def initialise(mode=0):
|
|
135
135
|
|
136
136
|
global modeInit, w,eart,peri, dela,zeta, p,delnu,dele,delg,delnp,delep,dtasm,am
|
137
137
|
global p1,p2,p3,p4,p5, q1,q2,q3,q4,q5
|
138
|
-
#print("Initialise:", modeInit)
|
138
|
+
# print("Initialise:", modeInit)
|
139
139
|
|
140
140
|
Dprec = -0.29965 # Constant for the correction to the constant of precession - source: IAU 2000A
|
141
141
|
|
142
|
+
bp = np.array([
|
143
|
+
[ 0.311079095, -0.103837907 ],
|
144
|
+
[ -0.4482398e-2, 0.668287e-3 ],
|
145
|
+
[ -0.1102485e-2, -0.1298072e-2 ],
|
146
|
+
[ 0.1056062e-2, -0.178028e-3 ],
|
147
|
+
[ 0.50928e-4, -0.37342e-4 ]
|
148
|
+
]) # (2,5)
|
142
149
|
|
143
|
-
|
144
|
-
[0.6682870e-3,-0.129807200e-2], [-0.1780280e-3,-0.37342e-4]]) # (5,2)
|
145
|
-
|
146
|
-
if(mode<0 or mode>1): sys.exit('elp_mpp02.mpp02.initialise(): mode must have value 0 or 1, not %i' % mode)
|
150
|
+
if mode<0 or mode>1: sys.exit('elp_mpp02.mpp02.initialise(): mode must have value 0 or 1, not %i' % mode)
|
147
151
|
|
148
152
|
# Constants for the evaluation of the partial derivatives:
|
149
153
|
am = 0.074801329 # Ratio of the mean motions (EMB / Moon)
|
@@ -153,7 +157,7 @@ def initialise(mode=0):
|
|
153
157
|
|
154
158
|
|
155
159
|
# Corrections to constants:
|
156
|
-
if
|
160
|
+
if mode==0: # LLR
|
157
161
|
# Values of the corrections to the constants fitted to LLR. Fit 13-05-02 (2 iterations) except Phi
|
158
162
|
# and eps w2_1 and w3_1. See ELPdoc, Table 3 and paper, Table 1
|
159
163
|
Dw1_0 = -0.10525
|
@@ -224,16 +228,16 @@ def initialise(mode=0):
|
|
224
228
|
|
225
229
|
# Corrections to the secular terms of Moon angles. This gives a better (long-term?) fit
|
226
230
|
# to DE 406. See ELPdoc, Table 6/paper, Table 4, line 2:
|
227
|
-
if
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
231
|
+
if mode==1: # DE 405 / DE 406
|
232
|
+
w[0,3] -= 0.00018865/r2as
|
233
|
+
w[0,4] -= 0.00001024/r2as
|
234
|
+
|
235
|
+
w[1,2] += 0.00470602/r2as
|
236
|
+
w[1,3] -= 0.00025213/r2as
|
237
|
+
|
238
|
+
w[2,2] -= 0.00261070/r2as
|
239
|
+
w[2,3] -= 0.00010712/r2as
|
240
|
+
|
237
241
|
|
238
242
|
# Corrections to the mean motions of the Moon angles W2 and W3, infered from the modifications of the
|
239
243
|
# constants:
|
@@ -262,10 +266,10 @@ def initialise(mode=0):
|
|
262
266
|
|
263
267
|
# Arguments of Delaunay:
|
264
268
|
for iD in range(5):
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
+
dela[0,iD] = w[0,iD] - eart[iD] # D = W1 - Te + 180 degrees
|
270
|
+
dela[1,iD] = w[0,iD] - w[2,iD] # F = W1 - W3
|
271
|
+
dela[2,iD] = w[0,iD] - w[1,iD] # l = W1 - W2 mean anomaly of the Moon
|
272
|
+
dela[3,iD] = eart[iD] - peri[iD] # l' = Te - Pip mean anomaly of EMB
|
269
273
|
|
270
274
|
dela[0,0] += pi
|
271
275
|
|
@@ -325,8 +329,6 @@ def initialise(mode=0):
|
|
325
329
|
return
|
326
330
|
|
327
331
|
|
328
|
-
|
329
|
-
##############################################################################################################
|
330
332
|
def read_files():
|
331
333
|
"""Read the six data files containing the ELP/MPP02 series
|
332
334
|
|
@@ -336,7 +338,7 @@ def read_files():
|
|
336
338
|
|
337
339
|
"""
|
338
340
|
|
339
|
-
#print("Read files:")
|
341
|
+
# print("Read files:")
|
340
342
|
global nmpb,cmpb,fmpb, nper,cper,fper
|
341
343
|
global w,eart,peri, dela,zeta, p,delnu,dele,delg,delnp,delep,dtasm,am
|
342
344
|
|
@@ -345,8 +347,8 @@ def read_files():
|
|
345
347
|
ilu = np.zeros(4) # will contain ints
|
346
348
|
a = 0.
|
347
349
|
b = np.zeros(5)
|
348
|
-
#ierr=1
|
349
|
-
#nerr=0
|
350
|
+
# ierr=1
|
351
|
+
# nerr=0
|
350
352
|
|
351
353
|
import fortranformat as ff
|
352
354
|
formatMainHeader = ff.FortranRecordReader('(25x,I10)') # Block header format
|
@@ -357,8 +359,9 @@ def read_files():
|
|
357
359
|
fileName = dataDir+'/ELP_MAIN.S'+str(iFile+1)
|
358
360
|
try:
|
359
361
|
inFile = open(fileName,'r')
|
360
|
-
except:
|
361
|
-
sys.stderr.write(
|
362
|
+
except Exception as err:
|
363
|
+
sys.stderr.write(str(err)+'\n\n')
|
364
|
+
sys.stderr.write('Please ensure that:\n')
|
362
365
|
sys.stderr.write(' 1) you downloaded the data files ELP_*.S[123] from '+
|
363
366
|
'ftp://cyrano-se.obspm.fr/pub/2_lunar_solutions/2_elpmpp02/\n')
|
364
367
|
sys.stderr.write(' 2) you set the variable mpp.dataDir to the correct value\n')
|
@@ -366,7 +369,7 @@ def read_files():
|
|
366
369
|
|
367
370
|
line = inFile.readline()
|
368
371
|
nmpb[iFile,0] = formatMainHeader.read(line)[0]
|
369
|
-
#if
|
372
|
+
# if nerr!=0: return 3
|
370
373
|
|
371
374
|
nmpb[iFile,1] = ir+1
|
372
375
|
nmpb[iFile,2] = nmpb[iFile,0] + nmpb[iFile,1] - 1
|
@@ -375,10 +378,10 @@ def read_files():
|
|
375
378
|
for iLine in range(nLines):
|
376
379
|
line = inFile.readline()
|
377
380
|
ilu[0],ilu[1],ilu[2],ilu[3], a, b[0],b[1],b[2],b[3],b[4] = formatMainBody.read(line)
|
378
|
-
#if
|
381
|
+
# if nerr!=0: return 4
|
379
382
|
|
380
383
|
tgv = b[0] + dtasm*b[4]
|
381
|
-
if
|
384
|
+
if iFile==2: a -= 2*a*delnu/3
|
382
385
|
cmpb[ir] = a + tgv*(delnp-am*delnu) + b[1]*delg + b[2]*dele + b[3]*delep
|
383
386
|
|
384
387
|
for k in range(5):
|
@@ -386,7 +389,7 @@ def read_files():
|
|
386
389
|
for i in range(4):
|
387
390
|
fmpb[k,ir] += ilu[i] * dela[i,k]
|
388
391
|
|
389
|
-
if
|
392
|
+
if iFile==2: fmpb[0,ir] += pio2
|
390
393
|
ir += 1
|
391
394
|
|
392
395
|
inFile.close()
|
@@ -407,33 +410,33 @@ def read_files():
|
|
407
410
|
fileName = dataDir+'/ELP_PERT.S'+str(iFile+1)
|
408
411
|
try:
|
409
412
|
inFile = open(fileName,'r')
|
410
|
-
except:
|
411
|
-
sys.stderr.write(
|
413
|
+
except Exception as err:
|
414
|
+
sys.stderr.write(str(err)+'\n')
|
412
415
|
exit(1)
|
413
416
|
|
414
417
|
for it in range(4):
|
415
|
-
#if
|
418
|
+
# if nerr!=0: return 6
|
416
419
|
line = inFile.readline()
|
417
420
|
nper[iFile,it,0],ipt = formatPertHeader.read(line)
|
418
421
|
|
419
422
|
nper[iFile,it,1] = ir+1
|
420
423
|
nper[iFile,it,2] = nper[iFile,it,0] + nper[iFile,it,1] - 1
|
421
|
-
if
|
424
|
+
if nper[iFile,it,0]==0: continue # cycle to next it
|
422
425
|
|
423
426
|
nLines = int(round(nper[iFile,it,0]))
|
424
427
|
for iLine in range(nLines):
|
425
428
|
line = inFile.readline()
|
426
429
|
( icount,s,c,ifi[0],ifi[1],ifi[2],ifi[3],ifi[4],ifi[5],ifi[6],ifi[7],ifi[8],ifi[9],ifi[10],
|
427
430
|
ifi[11],ifi[12],ifi[13],ifi[14],ifi[15] ) = formatPertBody.read(line)
|
428
|
-
#if
|
431
|
+
# if nerr!=0: return 7
|
429
432
|
|
430
433
|
cper[ir] = m.sqrt(c**2+s**2)
|
431
434
|
pha = m.atan2(c,s)
|
432
|
-
if
|
435
|
+
if pha<0: pha = pha+pi2
|
433
436
|
|
434
437
|
for k in range(5):
|
435
438
|
fper[k,ir] = 0
|
436
|
-
if
|
439
|
+
if k==0: fper[k,ir] = pha
|
437
440
|
for i in range(4):
|
438
441
|
fper[k,ir] += ifi[i] * dela[i,k]
|
439
442
|
|
@@ -449,7 +452,6 @@ def read_files():
|
|
449
452
|
|
450
453
|
|
451
454
|
|
452
|
-
##############################################################################################################
|
453
455
|
def elp_dms2rad(deg,min,sec):
|
454
456
|
"""Function for the conversion sexagesimal degrees -> radians in initialise()"""
|
455
457
|
|
@@ -457,8 +459,6 @@ def elp_dms2rad(deg,min,sec):
|
|
457
459
|
|
458
460
|
|
459
461
|
|
460
|
-
|
461
|
-
##############################################################################################################
|
462
462
|
def compute_lbr(jd, mode=0):
|
463
463
|
"""Compute the spherical lunar coordinates using the ELP2000/MPP02 lunar theory in the dynamical mean ecliptic
|
464
464
|
and equinox of J2000.
|
@@ -480,7 +480,7 @@ def compute_lbr(jd, mode=0):
|
|
480
480
|
|
481
481
|
"""
|
482
482
|
|
483
|
-
#print("Compute lbr:")
|
483
|
+
# print("Compute lbr:")
|
484
484
|
|
485
485
|
xyz,vxyz, ierr = compute_xyz(jd, mode)
|
486
486
|
|
@@ -489,17 +489,15 @@ def compute_lbr(jd, mode=0):
|
|
489
489
|
lon = m.atan2(xyz[1], xyz[0])
|
490
490
|
lat = m.asin(xyz[2]/rad)
|
491
491
|
|
492
|
-
#rad = rad/1.49597870700e8 # km -> AU
|
492
|
+
# rad = rad/1.49597870700e8 # km -> AU
|
493
493
|
|
494
|
-
#print('jd, xyz: ', jd, xyz[0:3])
|
494
|
+
# print('jd, xyz: ', jd, xyz[0:3])
|
495
495
|
# print(jd, (lon%pi2)*r2d, lat*r2d, rad)
|
496
496
|
|
497
497
|
return lon,lat,rad
|
498
498
|
|
499
499
|
|
500
500
|
|
501
|
-
|
502
|
-
##############################################################################################################
|
503
501
|
def compute_xyz(jd, mode=0):
|
504
502
|
"""Compute the rectangular lunar coordinates using the ELP/MPP02 lunar theory in the dynamical mean ecliptic
|
505
503
|
and equinox of J2000.
|
@@ -521,7 +519,7 @@ def compute_xyz(jd, mode=0):
|
|
521
519
|
|
522
520
|
"""
|
523
521
|
|
524
|
-
#print("Compute xyz:")
|
522
|
+
# print("Compute xyz:")
|
525
523
|
global nmpb,cmpb,fmpb, nper,cper,fper
|
526
524
|
global w, p1,p2,p3,p4,p5, q1,q2,q3,q4,q5
|
527
525
|
|
@@ -532,7 +530,7 @@ def compute_xyz(jd, mode=0):
|
|
532
530
|
|
533
531
|
# Initialise data and read files if needed:
|
534
532
|
ierr = initialise_and_read_files(mode)
|
535
|
-
if
|
533
|
+
if ierr!=0: sys.exit('Could not read ELP-MPP02 files')
|
536
534
|
|
537
535
|
|
538
536
|
# Initialization of time powers:
|
@@ -573,7 +571,7 @@ def compute_xyz(jd, mode=0):
|
|
573
571
|
y = fper[0,iLine]
|
574
572
|
xp = 0
|
575
573
|
yp = 0
|
576
|
-
if
|
574
|
+
if it!=0: xp = it * x * t[it-1]
|
577
575
|
|
578
576
|
for k in range(1,5): # k=1,4
|
579
577
|
y += fper[k,iLine] * t[k]
|
@@ -590,8 +588,8 @@ def compute_xyz(jd, mode=0):
|
|
590
588
|
|
591
589
|
# v[0] = v[0] % pi2
|
592
590
|
|
593
|
-
#print('t: ', t[0],t[1],t[2],t[3],t[4])
|
594
|
-
#print('v: ', v[0]*r2d,v[1]*r2d,v[2], v[3],v[4],v[5])
|
591
|
+
# print('t: ', t[0],t[1],t[2],t[3],t[4])
|
592
|
+
# print('v: ', v[0]*r2d,v[1]*r2d,v[2], v[3],v[4],v[5])
|
595
593
|
|
596
594
|
# compute the rectangular coordinates (for the EoD?):
|
597
595
|
clamb = m.cos(v[0])
|
@@ -600,13 +598,13 @@ def compute_xyz(jd, mode=0):
|
|
600
598
|
sbeta = m.sin(v[1])
|
601
599
|
cw = v[2]*cbeta
|
602
600
|
sw = v[2]*sbeta
|
603
|
-
#print("c/s l/b: ", clamb,slamb, cbeta,sbeta)
|
601
|
+
# print("c/s l/b: ", clamb,slamb, cbeta,sbeta)
|
604
602
|
|
605
603
|
x0 = cw*clamb
|
606
604
|
x1 = cw*slamb
|
607
605
|
x2 = sw
|
608
|
-
#print("x1,x2,x3: ", x0,x1,x2)
|
609
|
-
#print("p,q: ", p1,p2,p3,p4,p5, q1,q2,q3,q4,q5)
|
606
|
+
# print("x1,x2,x3: ", x0,x1,x2)
|
607
|
+
# print("p,q: ", p1,p2,p3,p4,p5, q1,q2,q3,q4,q5)
|
610
608
|
|
611
609
|
# Is this simply precession in rectangular coordinates to J2000? From?
|
612
610
|
pw = (p1 + p2*t[1] + p3*t[2] + p4*t[3] + p5*t[4]) * t[1]
|
@@ -1,9 +1,9 @@
|
|
1
|
-
Metadata-Version: 2.
|
2
|
-
Name:
|
3
|
-
Version: 0.0.
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: elp_mpp02
|
3
|
+
Version: 0.0.6
|
4
4
|
Summary: Accurate Moon positions using the Lunar solution ELP/MPP02 in Python
|
5
5
|
Author-email: Marc van der Sluys <git@vandersluys.nl>
|
6
|
-
License:
|
6
|
+
License-Expression: GPL-3.0-or-later
|
7
7
|
Project-URL: GitHub, https://github.com/MarcvdSluys/ELP-MPP02
|
8
8
|
Project-URL: ReadTheDocs, https://readthedocs.org/projects/elp-mpp02/
|
9
9
|
Keywords: Moon,astronomy,ephemeris
|
@@ -11,7 +11,6 @@ Classifier: Development Status :: 3 - Alpha
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
12
12
|
Classifier: Intended Audience :: Education
|
13
13
|
Classifier: Intended Audience :: Science/Research
|
14
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
15
14
|
Classifier: Natural Language :: English
|
16
15
|
Classifier: Operating System :: OS Independent
|
17
16
|
Classifier: Programming Language :: Python :: 3
|
@@ -20,6 +19,7 @@ Description-Content-Type: text/markdown
|
|
20
19
|
License-File: LICENCE
|
21
20
|
Requires-Dist: numpy
|
22
21
|
Requires-Dist: fortranformat
|
22
|
+
Dynamic: license-file
|
23
23
|
|
24
24
|
# ELP_MPP02: accurate Moon positions using the lunar solution ELP/MPP02 in Python #
|
25
25
|
|
@@ -67,16 +67,21 @@ initialised and the data files need to be read, which can take ~10s. If `mode`
|
|
67
67
|
data must be reinitialised.
|
68
68
|
|
69
69
|
|
70
|
-
##
|
70
|
+
## Copyright and licence ##
|
71
71
|
|
72
|
-
*
|
73
|
-
* Contact:
|
74
|
-
* Website:
|
75
|
-
* Licence:
|
72
|
+
* Copyright: 2019-2025 Marc van der Sluys, Department of Physics, Utrecht University and Nikhef (institute for high-energy physics and gravitational waves), Amsterdam (NL)
|
73
|
+
* Contact: https://marc.vandersluys.nl
|
74
|
+
* Website: [Github](https://github.com/MarcvdSluys/ELP-MPP02), [PyPI](https://pypi.org/project/elp_mpp02/)
|
75
|
+
* Licence: [EUPL 1.2](https://www.eupl.eu/1.2/en/)
|
76
|
+
|
77
|
+
|
78
|
+
## Acknowledgements ##
|
79
|
+
|
80
|
+
* Thanks to A. Vähäkangas for bug reports!
|
76
81
|
|
77
82
|
|
78
83
|
## References ##
|
79
84
|
|
80
85
|
* [Chapront & Francou (2003)](https://ui.adsabs.harvard.edu/abs/2003A%26A...404..735C/abstract)
|
81
86
|
* [FTP data files](ftp://cyrano-se.obspm.fr/pub/2_lunar_solutions/2_elpmpp02) — in case [FTP urls don't work in Markdown](https://github.com/gollum/gollum/issues/759): ftp://cyrano-se.obspm.fr/pub/2_lunar_solutions/2_elpmpp02
|
82
|
-
* This Python code is adapted from the Fortran implementation in [libTheSky](
|
87
|
+
* This Python code is adapted from the Fortran implementation in [libTheSky](https://libthesky.sourceforge.net/)
|
@@ -0,0 +1,7 @@
|
|
1
|
+
elp_mpp02/__init__.py,sha256=1ZEQgZRpa0mDJQo3UCl9ZDrrUUeenPAKSAVmLIsROm8,1290
|
2
|
+
elp_mpp02/mpp02.py,sha256=UOjrUlSHZOGBN5BJjrhKweaYJfgRW4ywdrSFhihDxdE,22927
|
3
|
+
elp_mpp02-0.0.6.dist-info/licenses/LICENCE,sha256=b8nnCcy_4Nd_v_okJ6mDKCvi64jkexzbSfIag7TR5mU,13827
|
4
|
+
elp_mpp02-0.0.6.dist-info/METADATA,sha256=GQs3BznVLJLbRKDlz28VNMKYjEOvQVZTdc2Rp8dLPZE,3573
|
5
|
+
elp_mpp02-0.0.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
6
|
+
elp_mpp02-0.0.6.dist-info/top_level.txt,sha256=rGLE8HZyORfVOogfp3wdPIT3wdHzLoFFWz3KL3o6TKE,10
|
7
|
+
elp_mpp02-0.0.6.dist-info/RECORD,,
|