satkit 0.2.4__tar.gz
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.
- satkit-0.2.4/Cargo.toml +51 -0
- satkit-0.2.4/LICENSE +21 -0
- satkit-0.2.4/MANIFEST.in +5 -0
- satkit-0.2.4/PKG-INFO +95 -0
- satkit-0.2.4/README.md +76 -0
- satkit-0.2.4/pyproject.toml +105 -0
- satkit-0.2.4/python/satkit/__init__.py +8 -0
- satkit-0.2.4/python/satkit/__init__.pyi +1367 -0
- satkit-0.2.4/python/satkit/astro-data/py.typed +0 -0
- satkit-0.2.4/python/satkit/density/__init__.pyi +74 -0
- satkit-0.2.4/python/satkit/density/py.typed +0 -0
- satkit-0.2.4/python/satkit/frametransform/__init__.pyi +242 -0
- satkit-0.2.4/python/satkit/frametransform/py.typed +0 -0
- satkit-0.2.4/python/satkit/jplephem/__init__.pyi +118 -0
- satkit-0.2.4/python/satkit/jplephem/py.typed +0 -0
- satkit-0.2.4/python/satkit/moon/__init__.py +52 -0
- satkit-0.2.4/python/satkit/moon/py.typed +0 -0
- satkit-0.2.4/python/satkit/py.typed +0 -0
- satkit-0.2.4/python/satkit/satprop/__init__.pyi +327 -0
- satkit-0.2.4/python/satkit/satprop/py.typed +0 -0
- satkit-0.2.4/python/satkit/sun/__init__.pyi +159 -0
- satkit-0.2.4/python/satkit/sun/py.typed +0 -0
- satkit-0.2.4/python/satkit/utils/__init__.pyi +85 -0
- satkit-0.2.4/python/satkit/utils/py.typed +0 -0
- satkit-0.2.4/python/satkit.egg-info/PKG-INFO +95 -0
- satkit-0.2.4/python/satkit.egg-info/SOURCES.txt +116 -0
- satkit-0.2.4/python/satkit.egg-info/dependency_links.txt +1 -0
- satkit-0.2.4/python/satkit.egg-info/requires.txt +1 -0
- satkit-0.2.4/python/satkit.egg-info/top_level.txt +2 -0
- satkit-0.2.4/python/test/download_data.py +27 -0
- satkit-0.2.4/python/test/download_from_json.py +23 -0
- satkit-0.2.4/python/test/download_testvecs.py +27 -0
- satkit-0.2.4/python/test/orbitprop_gps_fit.py +77 -0
- satkit-0.2.4/python/test/sp3file.py +37 -0
- satkit-0.2.4/python/test/test.py +532 -0
- satkit-0.2.4/setup.cfg +4 -0
- satkit-0.2.4/src/astrotime.rs +783 -0
- satkit-0.2.4/src/consts.rs +36 -0
- satkit-0.2.4/src/duration.rs +199 -0
- satkit-0.2.4/src/earth_orientation_params.rs +268 -0
- satkit-0.2.4/src/earthgravity.rs +640 -0
- satkit-0.2.4/src/frametransform/ierstable.rs +120 -0
- satkit-0.2.4/src/frametransform/mod.rs +427 -0
- satkit-0.2.4/src/frametransform/qcirs2gcrs.rs +139 -0
- satkit-0.2.4/src/itrfcoord.rs +620 -0
- satkit-0.2.4/src/jplephem.rs +722 -0
- satkit-0.2.4/src/lib.rs +81 -0
- satkit-0.2.4/src/lpephem/mod.rs +4 -0
- satkit-0.2.4/src/lpephem/moon.rs +92 -0
- satkit-0.2.4/src/lpephem/sun.rs +277 -0
- satkit-0.2.4/src/nrlmsise.rs +179 -0
- satkit-0.2.4/src/ode/harmonic_oscillator.rs +17 -0
- satkit-0.2.4/src/ode/mod.rs +38 -0
- satkit-0.2.4/src/ode/nalgebra.rs +44 -0
- satkit-0.2.4/src/ode/rk_adaptive.rs +296 -0
- satkit-0.2.4/src/ode/rk_adaptive_settings.rs +26 -0
- satkit-0.2.4/src/ode/rk_explicit.rs +113 -0
- satkit-0.2.4/src/ode/rkf45.rs +106 -0
- satkit-0.2.4/src/ode/rkts54.rs +161 -0
- satkit-0.2.4/src/ode/rkv65.rs +76 -0
- satkit-0.2.4/src/ode/rkv65_table.rs +192 -0
- satkit-0.2.4/src/ode/rkv87.rs +76 -0
- satkit-0.2.4/src/ode/rkv87_table.rs +471 -0
- satkit-0.2.4/src/ode/rkv98.rs +100 -0
- satkit-0.2.4/src/ode/rkv98_nointerp.rs +83 -0
- satkit-0.2.4/src/ode/rkv98_nointerp_table.rs +349 -0
- satkit-0.2.4/src/ode/rkv98_table.rs +686 -0
- satkit-0.2.4/src/ode/types.rs +94 -0
- satkit-0.2.4/src/orbitprop/drag.rs +140 -0
- satkit-0.2.4/src/orbitprop/mod.rs +14 -0
- satkit-0.2.4/src/orbitprop/point_gravity.rs +37 -0
- satkit-0.2.4/src/orbitprop/propagator.rs +727 -0
- satkit-0.2.4/src/orbitprop/satproperties.rs +62 -0
- satkit-0.2.4/src/orbitprop/satstate.rs +333 -0
- satkit-0.2.4/src/orbitprop/settings.rs +69 -0
- satkit-0.2.4/src/pybindings/mod.rs +148 -0
- satkit-0.2.4/src/pybindings/mod_utils.rs +105 -0
- satkit-0.2.4/src/pybindings/pyastrotime.rs +565 -0
- satkit-0.2.4/src/pybindings/pyconsts.rs +75 -0
- satkit-0.2.4/src/pybindings/pydensity.rs +95 -0
- satkit-0.2.4/src/pybindings/pyduration.rs +97 -0
- satkit-0.2.4/src/pybindings/pyframetransform.rs +221 -0
- satkit-0.2.4/src/pybindings/pygravity.rs +230 -0
- satkit-0.2.4/src/pybindings/pyitrfcoord.rs +328 -0
- satkit-0.2.4/src/pybindings/pyjplephem.rs +115 -0
- satkit-0.2.4/src/pybindings/pylpephem_moon.rs +26 -0
- satkit-0.2.4/src/pybindings/pylpephem_sun.rs +94 -0
- satkit-0.2.4/src/pybindings/pynrlmsise.rs +56 -0
- satkit-0.2.4/src/pybindings/pypropagate.rs +298 -0
- satkit-0.2.4/src/pybindings/pypropsettings.rs +92 -0
- satkit-0.2.4/src/pybindings/pyquaternion.rs +281 -0
- satkit-0.2.4/src/pybindings/pysatproperties.rs +89 -0
- satkit-0.2.4/src/pybindings/pysatstate.rs +191 -0
- satkit-0.2.4/src/pybindings/pysgp4.rs +294 -0
- satkit-0.2.4/src/pybindings/pysolarsystem.rs +66 -0
- satkit-0.2.4/src/pybindings/pytle.rs +150 -0
- satkit-0.2.4/src/pybindings/pyutils.rs +210 -0
- satkit-0.2.4/src/sgp4/dpper.rs +258 -0
- satkit-0.2.4/src/sgp4/dscom.rs +373 -0
- satkit-0.2.4/src/sgp4/dsinit.rs +393 -0
- satkit-0.2.4/src/sgp4/dspace.rs +265 -0
- satkit-0.2.4/src/sgp4/getgravconst.rs +78 -0
- satkit-0.2.4/src/sgp4/initl.rs +208 -0
- satkit-0.2.4/src/sgp4/mod.rs +36 -0
- satkit-0.2.4/src/sgp4/satrec.rs +270 -0
- satkit-0.2.4/src/sgp4/sgp4.rs +278 -0
- satkit-0.2.4/src/sgp4/sgp4_lowlevel.rs +514 -0
- satkit-0.2.4/src/sgp4/sgp4init.rs +667 -0
- satkit-0.2.4/src/solarsystem.rs +37 -0
- satkit-0.2.4/src/spaceweather.rs +278 -0
- satkit-0.2.4/src/tle.rs +467 -0
- satkit-0.2.4/src/types.rs +2 -0
- satkit-0.2.4/src/utils/datadir.rs +125 -0
- satkit-0.2.4/src/utils/download.rs +67 -0
- satkit-0.2.4/src/utils/mod.rs +34 -0
- satkit-0.2.4/src/utils/skerror.rs +38 -0
- satkit-0.2.4/src/utils/test.rs +31 -0
- satkit-0.2.4/src/utils/update_data.rs +166 -0
satkit-0.2.4/Cargo.toml
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "satkit"
|
|
3
|
+
version = "0.2.4"
|
|
4
|
+
edition = "2021"
|
|
5
|
+
description = "Satellite Toolkit"
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
licence = "MIT"
|
|
8
|
+
license-file = "LICENSE"
|
|
9
|
+
homepage = "https://github.com/ssmichael1/satkit"
|
|
10
|
+
repository = "https://github.com/ssmichael1/satkit"
|
|
11
|
+
documentation = "https://docs.rs/satkit"
|
|
12
|
+
keywords = ["satellite", "orbit", "ephemeris", "tle", "astrodynamics"]
|
|
13
|
+
categories = ["aerospace", "algorithms", "mathematics", "science"]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# See more keys and their definitions at
|
|
17
|
+
# https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
18
|
+
[lib]
|
|
19
|
+
name = "satkit"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
[dependencies]
|
|
23
|
+
nalgebra = "0.32.3"
|
|
24
|
+
ndarray = "0.15.6"
|
|
25
|
+
libc = "0.2"
|
|
26
|
+
chrono = "0.4.19"
|
|
27
|
+
cty = "0.2.2"
|
|
28
|
+
num-traits = "0.2"
|
|
29
|
+
thiserror = "1.0"
|
|
30
|
+
simba = "0.8"
|
|
31
|
+
once_cell = "1.6.0"
|
|
32
|
+
numpy = { version = "0.20.0", optional = true }
|
|
33
|
+
pyo3 = { version = "0.20.0", features = ["extension-module"], optional = true }
|
|
34
|
+
ureq = "2.9.1"
|
|
35
|
+
json = "0.12.4"
|
|
36
|
+
process_path = "0.1.4"
|
|
37
|
+
|
|
38
|
+
[build-dependencies]
|
|
39
|
+
cc = { version = "1.0.74", features = ["parallel"] }
|
|
40
|
+
chrono = "0.4.19"
|
|
41
|
+
pyo3-build-config = { version = "0.20.0", optional = true }
|
|
42
|
+
|
|
43
|
+
[dev-dependencies]
|
|
44
|
+
rand = "0.8.5"
|
|
45
|
+
approx = "0.5.1"
|
|
46
|
+
|
|
47
|
+
[features]
|
|
48
|
+
pybindings = ["pyo3", "numpy", "pyo3-build-config"]
|
|
49
|
+
|
|
50
|
+
[profile.test]
|
|
51
|
+
opt-level = 3
|
satkit-0.2.4/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Steven Michael
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
satkit-0.2.4/MANIFEST.in
ADDED
satkit-0.2.4/PKG-INFO
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: satkit
|
|
3
|
+
Version: 0.2.4
|
|
4
|
+
Summary: Satellite Orbital Dynamics Toolkit
|
|
5
|
+
Author-email: Steven Michael <ssmichael@gmail.com>
|
|
6
|
+
Maintainer-email: Steven Michael <ssmichael@gmail.com>
|
|
7
|
+
Keywords: satellite,orbit,astrodynamics,SGP4,TLE,JPL,Ephemeris
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Requires-Python: >=3.8
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
License-File: LICENSE
|
|
18
|
+
Requires-Dist: numpy>=1.20.0
|
|
19
|
+
|
|
20
|
+
# Satellite Toolkit with Rust
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+

|
|
24
|
+

|
|
25
|
+
<br/>
|
|
26
|
+
An accurate, high-performance satellite orbital kinematics toolkit, written in Rust with a sensible interface.
|
|
27
|
+
|
|
28
|
+
## Language Bindings
|
|
29
|
+
|
|
30
|
+
- **Native Rust** bindings
|
|
31
|
+
- **Python bindings** for compiled rust code ... speed of Rust with convenience of Python
|
|
32
|
+
|
|
33
|
+
## Features
|
|
34
|
+
|
|
35
|
+
- Timescale transformations (UTC, GPS, UT1, TBD, TT, ...)
|
|
36
|
+
- High-precision coordinate transforms between:
|
|
37
|
+
- International Terrestrial Reference Frame (ITRF)
|
|
38
|
+
- Geocentric Celestial Reference Frame (GCRF) using IAU-2000 reduction
|
|
39
|
+
- True-Equinox Mean Equator (TEME) frame used in SGP4 propagation of TLEs
|
|
40
|
+
- Celestial Intermediate Reference Frame (CIRF)
|
|
41
|
+
- Terrestrial Intermediate Reference Frame (TIRF)
|
|
42
|
+
- Terrestrial Geodetic frame (latitude, longitude)
|
|
43
|
+
- Geodesic distances
|
|
44
|
+
- SGP4, and Keplerian orbit propagation
|
|
45
|
+
- JPL high-precision planetary ephemerides
|
|
46
|
+
- High-order gravity models
|
|
47
|
+
- High-precision, high-speed numerical satellite orbit propagation with high-order efficient Runga-Kutta solvers, ability to solve for state transition matrix, and inclusion following forces:
|
|
48
|
+
- High-order Earth gravity with multiple models
|
|
49
|
+
- Solar gravity
|
|
50
|
+
- Lunar gravity
|
|
51
|
+
- Drag (NRL MISE-00 density model)
|
|
52
|
+
- Radiation pressure
|
|
53
|
+
|
|
54
|
+
## ODE Solvers
|
|
55
|
+
|
|
56
|
+
The high-precision numerical satellite orbit propagation makes use of standard Runga-Kutta methods for integration of ordinary differential equations. The ODE solver is included as part of the library.
|
|
57
|
+
|
|
58
|
+
The methods use Runga-Kutta pairs for ODE integration and error estimation generated by Jim Verner: [https://www.sfu.ca/~jverner/](https://www.sfu.ca/~jverner/)
|
|
59
|
+
|
|
60
|
+
## References, Models, and External Software.
|
|
61
|
+
|
|
62
|
+
### The equations and many of the unit tests underlying this work are drawn from the following sources:
|
|
63
|
+
|
|
64
|
+
- **"Fundamentals of Astrodynamics and Applications, Fourth Edition"**, D. Vallado, Microcosm Press and Springer, 2013.<br>
|
|
65
|
+
[https://celestrak.org/software/vallado-sw.php](https://celestrak.org/software/vallado-sw.php)
|
|
66
|
+
- **"Satellite Orbits: Models, Methods, Applications"**, O. Montenbruck and E. Gill, Springer, 2000.<br>
|
|
67
|
+
[https://doi.org/10.1007/978-3-642-58351-3](https://doi.org/10.1007/978-3-642-58351-3)
|
|
68
|
+
|
|
69
|
+
### This code makes reference to and relies on models generated by the following:
|
|
70
|
+
|
|
71
|
+
- **SGP4 Orbit Propagator** - https://celestrak.org/software/tskelso-sw.php<br/>
|
|
72
|
+
NORAD / SGP4 orbit propagator used to generate position and velocity states from orbital ephemerides described by Two-Line Element Sets (TLEs). This code base includes a pure-rust translation of the SGP4 orbit propagator
|
|
73
|
+
- **NRL MSISE-00 Density Model** - https://ccmc.gsfc.nasa.gov/models/NRLMSIS~00/<br/>
|
|
74
|
+
NRL model of air density, including density at high altitudes, used in to compute satellite drag
|
|
75
|
+
- **Gravity Models** - http://icgem.gfz-potsdam.de/home<br/>
|
|
76
|
+
International Center for Global Earth Models (ICEGM), collection and archive in a common format of all existing global gravity field models
|
|
77
|
+
- **Space Weather** - https://celestrak.org/SpaceData/<br/>
|
|
78
|
+
Space weather used to modulate the air density used in drag calculations
|
|
79
|
+
- **Earth Orientation Parameters** - https://celestrak.org/SpaceData/<br/>
|
|
80
|
+
Time-varying Earth orientation parameters used for time epoch conversions and high-precision rotations between the inertial and Earth-fixed coordinate frames
|
|
81
|
+
- **IERS Conventions** - https://www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html<br/>
|
|
82
|
+
International Earth Rotation and Reference Systems Service Technical Note 36 for rotation between inertial and Earth-fixed coordinate systems.
|
|
83
|
+
|
|
84
|
+
## Verification
|
|
85
|
+
|
|
86
|
+
The code includes rust test modules and python test modules for verification of nearly calculations, including but not limited to:
|
|
87
|
+
|
|
88
|
+
- **JPL Ephemeris** - Via JPL-provided test vectors for Chebychev polynomial calculation
|
|
89
|
+
- **SGP4** - Via SGP4 test vectors provided with original C<sup>++</sup> distribution
|
|
90
|
+
|
|
91
|
+
## Author
|
|
92
|
+
|
|
93
|
+
Steven Michael (ssmichael@gmail.com)
|
|
94
|
+
|
|
95
|
+
Please reach out of you find errors in code or calculations, are interested in contributing to this repository, or have suggestions for improvements to the API.
|
satkit-0.2.4/README.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Satellite Toolkit with Rust
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
<br/>
|
|
7
|
+
An accurate, high-performance satellite orbital kinematics toolkit, written in Rust with a sensible interface.
|
|
8
|
+
|
|
9
|
+
## Language Bindings
|
|
10
|
+
|
|
11
|
+
- **Native Rust** bindings
|
|
12
|
+
- **Python bindings** for compiled rust code ... speed of Rust with convenience of Python
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
|
|
16
|
+
- Timescale transformations (UTC, GPS, UT1, TBD, TT, ...)
|
|
17
|
+
- High-precision coordinate transforms between:
|
|
18
|
+
- International Terrestrial Reference Frame (ITRF)
|
|
19
|
+
- Geocentric Celestial Reference Frame (GCRF) using IAU-2000 reduction
|
|
20
|
+
- True-Equinox Mean Equator (TEME) frame used in SGP4 propagation of TLEs
|
|
21
|
+
- Celestial Intermediate Reference Frame (CIRF)
|
|
22
|
+
- Terrestrial Intermediate Reference Frame (TIRF)
|
|
23
|
+
- Terrestrial Geodetic frame (latitude, longitude)
|
|
24
|
+
- Geodesic distances
|
|
25
|
+
- SGP4, and Keplerian orbit propagation
|
|
26
|
+
- JPL high-precision planetary ephemerides
|
|
27
|
+
- High-order gravity models
|
|
28
|
+
- High-precision, high-speed numerical satellite orbit propagation with high-order efficient Runga-Kutta solvers, ability to solve for state transition matrix, and inclusion following forces:
|
|
29
|
+
- High-order Earth gravity with multiple models
|
|
30
|
+
- Solar gravity
|
|
31
|
+
- Lunar gravity
|
|
32
|
+
- Drag (NRL MISE-00 density model)
|
|
33
|
+
- Radiation pressure
|
|
34
|
+
|
|
35
|
+
## ODE Solvers
|
|
36
|
+
|
|
37
|
+
The high-precision numerical satellite orbit propagation makes use of standard Runga-Kutta methods for integration of ordinary differential equations. The ODE solver is included as part of the library.
|
|
38
|
+
|
|
39
|
+
The methods use Runga-Kutta pairs for ODE integration and error estimation generated by Jim Verner: [https://www.sfu.ca/~jverner/](https://www.sfu.ca/~jverner/)
|
|
40
|
+
|
|
41
|
+
## References, Models, and External Software.
|
|
42
|
+
|
|
43
|
+
### The equations and many of the unit tests underlying this work are drawn from the following sources:
|
|
44
|
+
|
|
45
|
+
- **"Fundamentals of Astrodynamics and Applications, Fourth Edition"**, D. Vallado, Microcosm Press and Springer, 2013.<br>
|
|
46
|
+
[https://celestrak.org/software/vallado-sw.php](https://celestrak.org/software/vallado-sw.php)
|
|
47
|
+
- **"Satellite Orbits: Models, Methods, Applications"**, O. Montenbruck and E. Gill, Springer, 2000.<br>
|
|
48
|
+
[https://doi.org/10.1007/978-3-642-58351-3](https://doi.org/10.1007/978-3-642-58351-3)
|
|
49
|
+
|
|
50
|
+
### This code makes reference to and relies on models generated by the following:
|
|
51
|
+
|
|
52
|
+
- **SGP4 Orbit Propagator** - https://celestrak.org/software/tskelso-sw.php<br/>
|
|
53
|
+
NORAD / SGP4 orbit propagator used to generate position and velocity states from orbital ephemerides described by Two-Line Element Sets (TLEs). This code base includes a pure-rust translation of the SGP4 orbit propagator
|
|
54
|
+
- **NRL MSISE-00 Density Model** - https://ccmc.gsfc.nasa.gov/models/NRLMSIS~00/<br/>
|
|
55
|
+
NRL model of air density, including density at high altitudes, used in to compute satellite drag
|
|
56
|
+
- **Gravity Models** - http://icgem.gfz-potsdam.de/home<br/>
|
|
57
|
+
International Center for Global Earth Models (ICEGM), collection and archive in a common format of all existing global gravity field models
|
|
58
|
+
- **Space Weather** - https://celestrak.org/SpaceData/<br/>
|
|
59
|
+
Space weather used to modulate the air density used in drag calculations
|
|
60
|
+
- **Earth Orientation Parameters** - https://celestrak.org/SpaceData/<br/>
|
|
61
|
+
Time-varying Earth orientation parameters used for time epoch conversions and high-precision rotations between the inertial and Earth-fixed coordinate frames
|
|
62
|
+
- **IERS Conventions** - https://www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html<br/>
|
|
63
|
+
International Earth Rotation and Reference Systems Service Technical Note 36 for rotation between inertial and Earth-fixed coordinate systems.
|
|
64
|
+
|
|
65
|
+
## Verification
|
|
66
|
+
|
|
67
|
+
The code includes rust test modules and python test modules for verification of nearly calculations, including but not limited to:
|
|
68
|
+
|
|
69
|
+
- **JPL Ephemeris** - Via JPL-provided test vectors for Chebychev polynomial calculation
|
|
70
|
+
- **SGP4** - Via SGP4 test vectors provided with original C<sup>++</sup> distribution
|
|
71
|
+
|
|
72
|
+
## Author
|
|
73
|
+
|
|
74
|
+
Steven Michael (ssmichael@gmail.com)
|
|
75
|
+
|
|
76
|
+
Please reach out of you find errors in code or calculations, are interested in contributing to this repository, or have suggestions for improvements to the API.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools", "setuptools-rust"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "satkit"
|
|
7
|
+
version = "0.2.4"
|
|
8
|
+
dependencies = ["numpy>=1.20.0"]
|
|
9
|
+
requires-python = ">= 3.8"
|
|
10
|
+
authors = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
|
|
11
|
+
maintainers = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
description = "Satellite Orbital Dynamics Toolkit"
|
|
14
|
+
keywords = [
|
|
15
|
+
"satellite",
|
|
16
|
+
"orbit",
|
|
17
|
+
"astrodynamics",
|
|
18
|
+
"SGP4",
|
|
19
|
+
"TLE",
|
|
20
|
+
"JPL",
|
|
21
|
+
"Ephemeris",
|
|
22
|
+
]
|
|
23
|
+
classifiers = [
|
|
24
|
+
# How mature is this project? Common values are
|
|
25
|
+
# 3 - Alpha
|
|
26
|
+
# 4 - Beta
|
|
27
|
+
# 5 - Production/Stable
|
|
28
|
+
"Development Status :: 3 - Alpha",
|
|
29
|
+
|
|
30
|
+
# Pick your license as you wish (see also "license" above)
|
|
31
|
+
"License :: OSI Approved :: MIT License",
|
|
32
|
+
|
|
33
|
+
# Specify the Python versions you support here.
|
|
34
|
+
"Programming Language :: Python :: 3.8",
|
|
35
|
+
"Programming Language :: Python :: 3.9",
|
|
36
|
+
"Programming Language :: Python :: 3.10",
|
|
37
|
+
"Programming Language :: Python :: 3.11",
|
|
38
|
+
"Programming Language :: Python :: 3.12",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[tool.setuptools.packages]
|
|
42
|
+
find = { where = ["python"] }
|
|
43
|
+
|
|
44
|
+
[tool.cibuildwheel]
|
|
45
|
+
build = ["cp312-*", "cp311-* cp310-* cp39-* cp38-*"]
|
|
46
|
+
|
|
47
|
+
[tool.cibuildwheel.macos]
|
|
48
|
+
archs = ["x86_64", "arm64"]
|
|
49
|
+
before-build = [
|
|
50
|
+
"pip install -U setuptools-rust",
|
|
51
|
+
"rustup default stable",
|
|
52
|
+
"rustup target add aarch64-apple-darwin",
|
|
53
|
+
"rustup show",
|
|
54
|
+
]
|
|
55
|
+
environment = { PATH = "$PATH:$HOME/.cargo/bin" }
|
|
56
|
+
# Skip trying to test arm64 builds on Intel Macs
|
|
57
|
+
test-skip = "*-macosx_arm64 *-macosx_universal2:arm64"
|
|
58
|
+
test-requires = "pytest"
|
|
59
|
+
test-command = [
|
|
60
|
+
"ASTRO_DATA={package}/astro-data SATKIT_TESTVEC_ROOT={package}/satkit-testvecs pytest {project}/python/test/test.py",
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
[tool.cibuildwheel.linux]
|
|
65
|
+
environment = { PATH = "$PATH:$HOME/.cargo/bin" }
|
|
66
|
+
archs = ["x86_64"]
|
|
67
|
+
skip = ["pp*", "*_i686", "*_s390x", "*_aarch64", "*_ppc64le", "*-musllinux*"]
|
|
68
|
+
before-build = [
|
|
69
|
+
"pip install -U setuptools-rust",
|
|
70
|
+
"curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=stable --profile=minimal -y",
|
|
71
|
+
"rustup show",
|
|
72
|
+
]
|
|
73
|
+
test-requires = "pytest"
|
|
74
|
+
test-command = [
|
|
75
|
+
"ASTRO_DATA={package}/astro-data SATKIT_TESTVEC_ROOT={package}/satkit-testvecs pytest {project}/python/test/test.py",
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
[tool.cibuildwheel.windows]
|
|
79
|
+
environment = { PATH = '$UserProfile\.cargo\bin;$PATH' }
|
|
80
|
+
before-build = [
|
|
81
|
+
"pip install -U setuptools-rust",
|
|
82
|
+
"rustup toolchain install stable-x86_64-pc-windows-msvc",
|
|
83
|
+
"rustup default stable-x86_64-pc-windows-msvc",
|
|
84
|
+
"rustup override set stable-x86_64-pc-windows-msvc",
|
|
85
|
+
"rustup show",
|
|
86
|
+
]
|
|
87
|
+
archs = ["AMD64"]
|
|
88
|
+
skip = ["pp*"]
|
|
89
|
+
test-requires = "pytest"
|
|
90
|
+
before-test = [
|
|
91
|
+
"set ASTRO_DATA={package}\\astro-data",
|
|
92
|
+
"set SATKIT_TESTVEC_ROOT={package}\\satkit-testvecs",
|
|
93
|
+
]
|
|
94
|
+
test-command = [
|
|
95
|
+
"set ASTRO_DATA={package}\\astro-data&&set SATKIT_TESTVEC_ROOT={package}\\satkit-testvecs&&pytest {project}\\python\\test\\test.py",
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
[[tool.setuptools-rust.ext-modules]]
|
|
100
|
+
features = ["pybindings"]
|
|
101
|
+
args = ["--crate-type", "cdylib"]
|
|
102
|
+
target = "satkit/satkit"
|
|
103
|
+
path = "Cargo.toml"
|
|
104
|
+
binding = "PyO3"
|
|
105
|
+
py-limited-api = "auto"
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from .satkit import *
|
|
2
|
+
|
|
3
|
+
if utils.datadir() == None:
|
|
4
|
+
print(f"Could not find necessary data files.")
|
|
5
|
+
print(f'Run "satkit.utils.update_datafiles()" to download necessary files')
|
|
6
|
+
print(f"This includes JPL ephemeris, gravity, space weather, ")
|
|
7
|
+
print(f"Earth orientation parameters, leap seconds, and coefficients")
|
|
8
|
+
print(f"for inertial-to-Earth-fixed transforms")
|