satkit 0.13.0__tar.gz → 0.14.2__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.13.0 → satkit-0.14.2}/Cargo.toml +2 -6
- {satkit-0.13.0/python/satkit.egg-info → satkit-0.14.2}/PKG-INFO +35 -2
- {satkit-0.13.0 → satkit-0.14.2}/README.md +34 -1
- {satkit-0.13.0 → satkit-0.14.2}/pyproject.toml +1 -1
- {satkit-0.13.0 → satkit-0.14.2}/python/Cargo.toml +2 -3
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/__init__.pyi +1 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/density.pyi +35 -4
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/frametransform.pyi +269 -48
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/jplephem.pyi +7 -7
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/moon.pyi +27 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/satkit.pyi +409 -322
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/sun.pyi +46 -1
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/utils.pyi +18 -18
- {satkit-0.13.0 → satkit-0.14.2/python/satkit.egg-info}/PKG-INFO +35 -2
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit.egg-info/SOURCES.txt +2 -26
- {satkit-0.13.0 → satkit-0.14.2}/python/src/lib.rs +3 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pygravity.rs +5 -5
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyitrfcoord.rs +4 -4
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyjplephem.rs +5 -5
- satkit-0.14.2/python/src/pylambert.rs +80 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pypropagate.rs +3 -6
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pypropresult.rs +10 -8
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyquaternion.rs +70 -48
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pysatstate.rs +16 -16
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pysgp4.rs +14 -14
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyutils.rs +11 -15
- {satkit-0.13.0 → satkit-0.14.2}/src/earthgravity.rs +29 -27
- {satkit-0.13.0 → satkit-0.14.2}/src/frametransform/ierstable.rs +5 -7
- {satkit-0.13.0 → satkit-0.14.2}/src/frametransform/mod.rs +22 -42
- {satkit-0.13.0 → satkit-0.14.2}/src/frametransform/qcirs2gcrs.rs +7 -8
- {satkit-0.13.0 → satkit-0.14.2}/src/itrfcoord.rs +19 -67
- {satkit-0.13.0 → satkit-0.14.2}/src/jplephem.rs +18 -13
- {satkit-0.13.0 → satkit-0.14.2}/src/kepler.rs +18 -18
- satkit-0.14.2/src/lambert.rs +574 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/lib.rs +35 -12
- {satkit-0.13.0 → satkit-0.14.2}/src/lpephem/moon.rs +2 -2
- {satkit-0.13.0 → satkit-0.14.2}/src/lpephem/planets.rs +5 -5
- {satkit-0.13.0 → satkit-0.14.2}/src/lpephem/sun.rs +2 -2
- {satkit-0.13.0 → satkit-0.14.2}/src/mathtypes.rs +5 -7
- satkit-0.14.2/src/nrlmsise.rs +1319 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/orbitprop/drag.rs +22 -23
- {satkit-0.13.0 → satkit-0.14.2}/src/orbitprop/point_gravity.rs +13 -13
- {satkit-0.13.0 → satkit-0.14.2}/src/orbitprop/propagator.rs +199 -139
- {satkit-0.13.0 → satkit-0.14.2}/src/orbitprop/satstate.rs +81 -81
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/sgp4_impl.rs +17 -15
- {satkit-0.13.0 → satkit-0.14.2}/src/solar_cycle_forecast.rs +2 -2
- {satkit-0.13.0 → satkit-0.14.2}/src/spaceweather.rs +2 -2
- {satkit-0.13.0 → satkit-0.14.2}/src/time/duration.rs +14 -7
- {satkit-0.13.0 → satkit-0.14.2}/src/time/instant.rs +10 -17
- {satkit-0.13.0 → satkit-0.14.2}/src/time/instantparse.rs +133 -103
- {satkit-0.13.0 → satkit-0.14.2}/src/time/tests.rs +108 -4
- {satkit-0.13.0 → satkit-0.14.2}/src/time/timescale.rs +1 -1
- {satkit-0.13.0 → satkit-0.14.2}/src/tle/fitting.rs +11 -13
- {satkit-0.13.0 → satkit-0.14.2}/src/tle/mod.rs +4 -3
- satkit-0.13.0/extern/nrlmsise/nrlmsise-00.c +0 -1459
- satkit-0.13.0/extern/nrlmsise/nrlmsise-00.h +0 -222
- satkit-0.13.0/extern/nrlmsise/nrlmsise-00_data.c +0 -740
- satkit-0.13.0/src/filters/mod.rs +0 -1
- satkit-0.13.0/src/filters/ukf.rs +0 -245
- satkit-0.13.0/src/nrlmsise.rs +0 -192
- satkit-0.13.0/src/ode/adaptive_solvers/mod.rs +0 -28
- satkit-0.13.0/src/ode/adaptive_solvers/rkf45.rs +0 -76
- satkit-0.13.0/src/ode/adaptive_solvers/rkts54.rs +0 -119
- satkit-0.13.0/src/ode/adaptive_solvers/rkv65.rs +0 -33
- satkit-0.13.0/src/ode/adaptive_solvers/rkv65_table.rs +0 -192
- satkit-0.13.0/src/ode/adaptive_solvers/rkv87.rs +0 -39
- satkit-0.13.0/src/ode/adaptive_solvers/rkv87_table.rs +0 -563
- satkit-0.13.0/src/ode/adaptive_solvers/rkv98.rs +0 -39
- satkit-0.13.0/src/ode/adaptive_solvers/rkv98_efficient.rs +0 -3
- satkit-0.13.0/src/ode/adaptive_solvers/rkv98_efficient_table.rs +0 -151
- satkit-0.13.0/src/ode/adaptive_solvers/rkv98_nointerp.rs +0 -40
- satkit-0.13.0/src/ode/adaptive_solvers/rkv98_nointerp_table.rs +0 -349
- satkit-0.13.0/src/ode/mod.rs +0 -51
- satkit-0.13.0/src/ode/nalgebra_bindings.rs +0 -44
- satkit-0.13.0/src/ode/ode_tests.rs +0 -174
- satkit-0.13.0/src/ode/rk_adaptive.rs +0 -263
- satkit-0.13.0/src/ode/rk_adaptive_settings.rs +0 -33
- satkit-0.13.0/src/ode/rk_explicit.rs +0 -115
- satkit-0.13.0/src/ode/rodas4.rs +0 -59
- satkit-0.13.0/src/ode/rosenbrock.rs +0 -256
- satkit-0.13.0/src/ode/types.rs +0 -113
- {satkit-0.13.0 → satkit-0.14.2}/LICENSE +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/MANIFEST.in +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/build.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/__init__.py +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/planets.pyi +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit/py.typed +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit.egg-info/dependency_links.txt +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit.egg-info/requires.txt +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/satkit.egg-info/top_level.txt +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/mod_utils.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyconsts.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pydensity.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyduration.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyframes.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyframetransform.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyinstant.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pykepler.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pylpephem_moon.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pylpephem_planets.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pylpephem_sun.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pympsuccess.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pynrlmsise.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pypropsettings.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pysatproperties.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pysolarsystem.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pytle.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/python/src/pyukf.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/setup.cfg +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/consts.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/earth_orientation_params.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/frames.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/lpephem/mod.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/omm/mod.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/omm/xml.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/orbitprop/mod.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/orbitprop/precomputed.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/orbitprop/satproperties.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/orbitprop/settings.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/dpper.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/dscom.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/dsinit.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/dspace.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/getgravconst.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/initl.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/mod.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/satrec.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/sgp4_lowlevel.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/sgp4/sgp4init.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/solarsystem.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/time/chrono.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/time/instant_err.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/time/instant_ops.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/time/mod.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/time/timelike.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/time/weekday.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/utils/datadir.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/utils/download.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/utils/mod.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/utils/test.rs +0 -0
- {satkit-0.13.0 → satkit-0.14.2}/src/utils/update_data.rs +0 -0
|
@@ -3,7 +3,7 @@ members = [".", "python"]
|
|
|
3
3
|
|
|
4
4
|
[package]
|
|
5
5
|
name = "satkit"
|
|
6
|
-
version = "0.
|
|
6
|
+
version = "0.14.2"
|
|
7
7
|
edition = "2021"
|
|
8
8
|
description = "Satellite Toolkit"
|
|
9
9
|
readme = "README.md"
|
|
@@ -22,12 +22,9 @@ name = "satkit"
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
[dependencies]
|
|
25
|
-
|
|
26
|
-
ndarray = "0.17.1"
|
|
27
|
-
cty = "0.2.2"
|
|
25
|
+
numeris = { version = "0.5.6", features = ["serde", "estimate", "ode"] }
|
|
28
26
|
num-traits = "0.2.19"
|
|
29
27
|
thiserror = "2.0"
|
|
30
|
-
once_cell = "1.21"
|
|
31
28
|
ureq = "3.1.2"
|
|
32
29
|
json = "0.12.4"
|
|
33
30
|
process_path = "0.1.4"
|
|
@@ -41,7 +38,6 @@ rmpfit = "0.3.0"
|
|
|
41
38
|
chrono = { version = "0.4", optional = true }
|
|
42
39
|
|
|
43
40
|
[build-dependencies]
|
|
44
|
-
cc = { version = "1.2", features = ["parallel"] }
|
|
45
41
|
chrono = "0.4"
|
|
46
42
|
|
|
47
43
|
[dev-dependencies]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: satkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.2
|
|
4
4
|
Summary: Satellite Orbital Dynamics Toolkit
|
|
5
5
|
Author-email: Steven Michael <ssmichael@gmail.com>
|
|
6
6
|
Maintainer-email: Steven Michael <ssmichael@gmail.com>
|
|
@@ -42,6 +42,9 @@ Satkit is a high-performance orbital mechanics library written in Rust with comp
|
|
|
42
42
|
|
|
43
43
|
**[Documentation and tutorials](https://satkit.dev/)** (Python examples, but the concepts and API apply equally to Rust) | **[Rust API reference](https://docs.rs/satkit/)**
|
|
44
44
|
|
|
45
|
+
> [!NOTE]
|
|
46
|
+
> **Version 0.14.1** replaces `nalgebra` with [`numeris`](https://crates.io/crates/numeris) for all linear algebra (matrices, quaternions, ODE solvers). `numeris` is a standalone library that unifies these in a single crate, making them available to projects beyond satkit. Performance is equivalent, and all tests pass with matching residuals. If your code uses `nalgebra` types, enable the `nalgebra` feature on `numeris` for zero-cost conversions. Please open an issue if you hit any problems.
|
|
47
|
+
|
|
45
48
|
## Installation
|
|
46
49
|
|
|
47
50
|
**Rust:**
|
|
@@ -165,6 +168,14 @@ Seamless conversion between UTC, TAI, TT, TDB, UT1, and GPS time scales with ful
|
|
|
165
168
|
- Fast analytical Sun/Moon models for lower-precision work
|
|
166
169
|
- Sunrise/sunset and Moon phase calculations
|
|
167
170
|
|
|
171
|
+
### Linear Algebra
|
|
172
|
+
|
|
173
|
+
SatKit uses [numeris](https://crates.io/crates/numeris) for all linear algebra (vectors, matrices, quaternions, ODE integration). If you also use nalgebra in your project, enable the `nalgebra` feature on numeris for zero-cost `From`/`Into` conversions between types:
|
|
174
|
+
|
|
175
|
+
```toml
|
|
176
|
+
numeris = { version = "0.5.5", features = ["nalgebra"] }
|
|
177
|
+
```
|
|
178
|
+
|
|
168
179
|
### Cargo Features
|
|
169
180
|
|
|
170
181
|
| Feature | Default | Description |
|
|
@@ -189,7 +200,29 @@ The library is validated against:
|
|
|
189
200
|
- **ICGEM** reference values for gravity field calculations
|
|
190
201
|
- **GPS SP3** precise ephemerides for multi-day numerical propagation
|
|
191
202
|
|
|
192
|
-
106 unit
|
|
203
|
+
142 tests (106 unit + 36 doc-tests) run on every commit across Linux, macOS, and Windows.
|
|
204
|
+
|
|
205
|
+
### Running Tests Locally
|
|
206
|
+
|
|
207
|
+
Tests require two sets of external data: the **astro-data** files (gravity models, ephemerides, etc.) and the **test vectors** (reference outputs for validation). Download both before running:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# Install the download helper
|
|
211
|
+
pip install requests
|
|
212
|
+
|
|
213
|
+
# Download test vectors
|
|
214
|
+
python python/test/download_testvecs.py
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Then run tests with the environment variables pointing to the downloaded directories:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Rust tests
|
|
221
|
+
SATKIT_DATA=astro-data SATKIT_TESTVEC_ROOT=satkit-testvecs cargo test
|
|
222
|
+
|
|
223
|
+
# Python tests
|
|
224
|
+
SATKIT_DATA=astro-data SATKIT_TESTVEC_ROOT=satkit-testvecs pytest python/test/test.py
|
|
225
|
+
```
|
|
193
226
|
|
|
194
227
|
## Documentation
|
|
195
228
|
|
|
@@ -18,6 +18,9 @@ Satkit is a high-performance orbital mechanics library written in Rust with comp
|
|
|
18
18
|
|
|
19
19
|
**[Documentation and tutorials](https://satkit.dev/)** (Python examples, but the concepts and API apply equally to Rust) | **[Rust API reference](https://docs.rs/satkit/)**
|
|
20
20
|
|
|
21
|
+
> [!NOTE]
|
|
22
|
+
> **Version 0.14.1** replaces `nalgebra` with [`numeris`](https://crates.io/crates/numeris) for all linear algebra (matrices, quaternions, ODE solvers). `numeris` is a standalone library that unifies these in a single crate, making them available to projects beyond satkit. Performance is equivalent, and all tests pass with matching residuals. If your code uses `nalgebra` types, enable the `nalgebra` feature on `numeris` for zero-cost conversions. Please open an issue if you hit any problems.
|
|
23
|
+
|
|
21
24
|
## Installation
|
|
22
25
|
|
|
23
26
|
**Rust:**
|
|
@@ -141,6 +144,14 @@ Seamless conversion between UTC, TAI, TT, TDB, UT1, and GPS time scales with ful
|
|
|
141
144
|
- Fast analytical Sun/Moon models for lower-precision work
|
|
142
145
|
- Sunrise/sunset and Moon phase calculations
|
|
143
146
|
|
|
147
|
+
### Linear Algebra
|
|
148
|
+
|
|
149
|
+
SatKit uses [numeris](https://crates.io/crates/numeris) for all linear algebra (vectors, matrices, quaternions, ODE integration). If you also use nalgebra in your project, enable the `nalgebra` feature on numeris for zero-cost `From`/`Into` conversions between types:
|
|
150
|
+
|
|
151
|
+
```toml
|
|
152
|
+
numeris = { version = "0.5.5", features = ["nalgebra"] }
|
|
153
|
+
```
|
|
154
|
+
|
|
144
155
|
### Cargo Features
|
|
145
156
|
|
|
146
157
|
| Feature | Default | Description |
|
|
@@ -165,7 +176,29 @@ The library is validated against:
|
|
|
165
176
|
- **ICGEM** reference values for gravity field calculations
|
|
166
177
|
- **GPS SP3** precise ephemerides for multi-day numerical propagation
|
|
167
178
|
|
|
168
|
-
106 unit
|
|
179
|
+
142 tests (106 unit + 36 doc-tests) run on every commit across Linux, macOS, and Windows.
|
|
180
|
+
|
|
181
|
+
### Running Tests Locally
|
|
182
|
+
|
|
183
|
+
Tests require two sets of external data: the **astro-data** files (gravity models, ephemerides, etc.) and the **test vectors** (reference outputs for validation). Download both before running:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# Install the download helper
|
|
187
|
+
pip install requests
|
|
188
|
+
|
|
189
|
+
# Download test vectors
|
|
190
|
+
python python/test/download_testvecs.py
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Then run tests with the environment variables pointing to the downloaded directories:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
# Rust tests
|
|
197
|
+
SATKIT_DATA=astro-data SATKIT_TESTVEC_ROOT=satkit-testvecs cargo test
|
|
198
|
+
|
|
199
|
+
# Python tests
|
|
200
|
+
SATKIT_DATA=astro-data SATKIT_TESTVEC_ROOT=satkit-testvecs pytest python/test/test.py
|
|
201
|
+
```
|
|
169
202
|
|
|
170
203
|
## Documentation
|
|
171
204
|
|
|
@@ -9,7 +9,7 @@ requires-python = ">= 3.10"
|
|
|
9
9
|
authors = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
|
|
10
10
|
maintainers = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
|
|
11
11
|
readme = "README.md"
|
|
12
|
-
version = "0.
|
|
12
|
+
version = "0.14.2"
|
|
13
13
|
license = "MIT"
|
|
14
14
|
description = "Satellite Orbital Dynamics Toolkit"
|
|
15
15
|
keywords = [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "satkit-python"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.14.2"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
publish = false
|
|
6
6
|
|
|
@@ -12,8 +12,7 @@ crate-type = ["cdylib"]
|
|
|
12
12
|
satkit = { path = ".." }
|
|
13
13
|
pyo3 = { version = "0.28.2", features = ["extension-module", "anyhow"] }
|
|
14
14
|
numpy = "0.28"
|
|
15
|
-
|
|
16
|
-
ndarray = "0.17.1"
|
|
15
|
+
numeris = { version = "0.5.6", features = ["serde", "estimate"] }
|
|
17
16
|
anyhow = "1"
|
|
18
17
|
serde = { version = "1.0", features = ["derive"] }
|
|
19
18
|
serde-pickle = "1.2.0"
|
|
@@ -16,10 +16,10 @@ def nrlmsise(itrf: satkit.itrfcoord, time: satkit.time | None) -> tuple[float, f
|
|
|
16
16
|
"""
|
|
17
17
|
NRL MSISE-00 Atmosphere Density Model
|
|
18
18
|
|
|
19
|
-
https://en.wikipedia.org/wiki/NRLMSISE-00
|
|
19
|
+
<https://en.wikipedia.org/wiki/NRLMSISE-00>
|
|
20
20
|
|
|
21
21
|
or for more detail:
|
|
22
|
-
https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2002JA009430
|
|
22
|
+
<https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2002JA009430>
|
|
23
23
|
|
|
24
24
|
Args:
|
|
25
25
|
|
|
@@ -53,10 +53,10 @@ def nrlmsise(
|
|
|
53
53
|
"""
|
|
54
54
|
NRL MSISE-00 Atmosphere Density Model
|
|
55
55
|
|
|
56
|
-
https://en.wikipedia.org/wiki/NRLMSISE-00
|
|
56
|
+
<https://en.wikipedia.org/wiki/NRLMSISE-00>
|
|
57
57
|
|
|
58
58
|
or for more detail:
|
|
59
|
-
https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2002JA009430
|
|
59
|
+
<https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2002JA009430>
|
|
60
60
|
|
|
61
61
|
Args:
|
|
62
62
|
altitude_meters (float): Altitude in meters
|
|
@@ -71,3 +71,34 @@ def nrlmsise(
|
|
|
71
71
|
tuple: (rho, T) where rho is mass density in kg/m^3 and T is temperature in Kelvin
|
|
72
72
|
"""
|
|
73
73
|
...
|
|
74
|
+
|
|
75
|
+
def nrlmsise(*args, **kwargs):
|
|
76
|
+
"""
|
|
77
|
+
NRL MSISE-00 Atmosphere Density Model
|
|
78
|
+
|
|
79
|
+
<https://en.wikipedia.org/wiki/NRLMSISE-00>
|
|
80
|
+
|
|
81
|
+
or for more detail:
|
|
82
|
+
<https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2002JA009430>
|
|
83
|
+
|
|
84
|
+
Args:
|
|
85
|
+
|
|
86
|
+
itrf (satkit.itrfcoord): position at which to compute density & temperature
|
|
87
|
+
time (satkit.time|numpy.ndarray|list): Optional instant(s) at which to compute density & temperature.
|
|
88
|
+
"Space weather" data at this time will be used in model
|
|
89
|
+
computation. Note: at satellite altitudes, density can
|
|
90
|
+
change by > 10 X depending on solar cycle
|
|
91
|
+
|
|
92
|
+
Returns:
|
|
93
|
+
(rho, T) where rho is mass density in kg/m^3 and T is temperature in Kelvin
|
|
94
|
+
|
|
95
|
+
Example:
|
|
96
|
+
```python
|
|
97
|
+
t = satkit.time(2024, 1, 1)
|
|
98
|
+
coord = satkit.itrfcoord(latitude_deg=0, longitude_deg=0, altitude=400e3)
|
|
99
|
+
rho, temp = satkit.density.nrlmsise(coord, t)
|
|
100
|
+
print(f"Density: {rho:.2e} kg/m^3")
|
|
101
|
+
print(f"Temperature: {temp:.1f} K")
|
|
102
|
+
```
|
|
103
|
+
"""
|
|
104
|
+
...
|