open-space-toolkit-astrodynamics 2.3.0__py311-none-any.whl → 2.4.1__py311-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.
- {open_space_toolkit_astrodynamics-2.3.0.dist-info → open_space_toolkit_astrodynamics-2.4.1.dist-info}/METADATA +1 -1
- {open_space_toolkit_astrodynamics-2.3.0.dist-info → open_space_toolkit_astrodynamics-2.4.1.dist-info}/RECORD +10 -10
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so +0 -0
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.2 +0 -0
- ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py +22 -23
- ostk/astrodynamics/test/trajectory/test_propagator.py +80 -5
- ostk/astrodynamics/test/trajectory/test_state.py +2 -0
- {open_space_toolkit_astrodynamics-2.3.0.dist-info → open_space_toolkit_astrodynamics-2.4.1.dist-info}/WHEEL +0 -0
- {open_space_toolkit_astrodynamics-2.3.0.dist-info → open_space_toolkit_astrodynamics-2.4.1.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-2.3.0.dist-info → open_space_toolkit_astrodynamics-2.4.1.dist-info}/zip-safe +0 -0
@@ -1,9 +1,9 @@
|
|
1
1
|
ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
2
|
-
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so,sha256=
|
2
|
+
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so,sha256=Z2xE9q-OIGIYm85CZRigSJodPG6Ej3aRUIEam_i2taY,1410488
|
3
3
|
ostk/astrodynamics/__init__.py,sha256=BE7yyrOnPqFCTPT3GhYEI4IWR5nzs96VSjKphhQ09ew,97
|
4
4
|
ostk/astrodynamics/converters.py,sha256=sBZ3_JMjowWbQ9gBPA2cSEkbBfAwXmt1IBbLks76-Vk,3502
|
5
5
|
ostk/astrodynamics/display.py,sha256=y9FnoQbPFGM6LzkUdgXgeqtuVGhv57GuTKbeDdcFPgw,6306
|
6
|
-
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.2,sha256=
|
6
|
+
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.2,sha256=T_TuCtec8GdjMD4y6RUGDQwbF-YE-opFdCWDAajjo3o,69733560
|
7
7
|
ostk/astrodynamics/utilities.py,sha256=NbeKN_CtcCRHIinhoNWTEosBMR7xc924S-ZFD97mduw,4478
|
8
8
|
ostk/astrodynamics/viewer.py,sha256=_4uucNtZrIADtKtEYHbiu91RVVvKRG3vPULUAshPLJU,8912
|
9
9
|
ostk/astrodynamics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
@@ -38,7 +38,7 @@ ostk/astrodynamics/test/flight/system/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5n
|
|
38
38
|
ostk/astrodynamics/test/flight/system/test_propulsion_system.py,sha256=ei-25MZczwzhiV5QVB9LXdmBY3VnBHr1DEVn_Zqtb1A,1027
|
39
39
|
ostk/astrodynamics/test/flight/system/test_satellite_system.py,sha256=-5KOGVTWRIpY1jcRc0xGX6N9oRbUT_EexzB9jZFsZQg,2208
|
40
40
|
ostk/astrodynamics/test/flight/system/dynamics/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
41
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py,sha256=
|
41
|
+
ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py,sha256=bTFDvI1riLFlgKzs3TRt8dafFtb--L_AMEDuuRWEgGc,3793
|
42
42
|
ostk/astrodynamics/test/flight/system/dynamics/test_central_body_gravity.py,sha256=r3JIIX7cD63BhrgvLtjFaK7ew1BqHdKP5_VxwGmuv1Q,1818
|
43
43
|
ostk/astrodynamics/test/flight/system/dynamics/test_dynamics.py,sha256=arNkAOj2y4CDmc9CXxItbFtC4QYjaByuJefdi5S6alw,914
|
44
44
|
ostk/astrodynamics/test/flight/system/dynamics/test_position_derivative.py,sha256=ZVVewpqZwqiBLDqoNQDHDgDodtj6_M0J6ZmgHe_1gz8,1646
|
@@ -51,8 +51,8 @@ ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py,sha256=
|
|
51
51
|
ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=FziYh9XxD2FEuj6WhnqOe5mF9twLTQtvcem8KzQZKXg,1864
|
52
52
|
ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
53
53
|
ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=SlCBZ_broPaJ6L8khMuvbdPem9-zmqG6IZwxr9cECB4,3155
|
54
|
-
ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=
|
55
|
-
ostk/astrodynamics/test/trajectory/test_state.py,sha256=
|
54
|
+
ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=e_fmvvaoMhYs0ApqCgbzfBYrYPaGOIuzouo-6x2jbK4,12504
|
55
|
+
ostk/astrodynamics/test/trajectory/test_state.py,sha256=Kr4IbGBc1TNGdEOsXFLGSQGC9SwCER-lJ6E-xumqgN4,3829
|
56
56
|
ostk/astrodynamics/test/trajectory/test_trajectory_segment.py,sha256=eOCI9GLcAnMrwXkdaHbd0thnyNDCyBgAemhuMO6B7xY,3863
|
57
57
|
ostk/astrodynamics/test/trajectory/orbit/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
58
58
|
ostk/astrodynamics/test/trajectory/orbit/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
@@ -76,8 +76,8 @@ ostk/astrodynamics/test/trajectory/state/test_coordinates_subset.py,sha256=eMmif
|
|
76
76
|
ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py,sha256=ZTWRSVFOJnjzQP7JDsHZxvZ4ldyDHmXTptG2csC7_ic,7480
|
77
77
|
ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_position.py,sha256=V5d7UnV6KIJjJvh5R0i3imRfyN04JCDvCUsKdvfKmhE,2708
|
78
78
|
ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py,sha256=5a7yeOVt7gY4oQdINSElb_U2jznJmuWPrT_YJrI6KaM,3070
|
79
|
-
open_space_toolkit_astrodynamics-2.
|
80
|
-
open_space_toolkit_astrodynamics-2.
|
81
|
-
open_space_toolkit_astrodynamics-2.
|
82
|
-
open_space_toolkit_astrodynamics-2.
|
83
|
-
open_space_toolkit_astrodynamics-2.
|
79
|
+
open_space_toolkit_astrodynamics-2.4.1.dist-info/METADATA,sha256=DAXVfJGTx8JV0XG2LD28nREtjAXnKGISMsDbD7P4HTY,1779
|
80
|
+
open_space_toolkit_astrodynamics-2.4.1.dist-info/WHEEL,sha256=LypFpa2XcEE7xO2Jrj0iI4pUztksD6mL7bVYmw0rTlI,94
|
81
|
+
open_space_toolkit_astrodynamics-2.4.1.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
|
82
|
+
open_space_toolkit_astrodynamics-2.4.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
83
|
+
open_space_toolkit_astrodynamics-2.4.1.dist-info/RECORD,,
|
Binary file
|
Binary file
|
@@ -26,7 +26,11 @@ from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianVelo
|
|
26
26
|
from ostk.astrodynamics.trajectory.state import CoordinatesBroker
|
27
27
|
|
28
28
|
from ostk.astrodynamics.trajectory import State
|
29
|
-
from ostk.astrodynamics.
|
29
|
+
from ostk.astrodynamics.trajectory.state import CoordinatesSubset, CoordinatesBroker
|
30
|
+
from ostk.astrodynamics.trajectory.state.coordinates_subset import (
|
31
|
+
CartesianPosition,
|
32
|
+
CartesianVelocity,
|
33
|
+
)
|
30
34
|
from ostk.astrodynamics.flight.system import Dynamics
|
31
35
|
from ostk.astrodynamics.flight.system.dynamics import AtmosphericDrag
|
32
36
|
|
@@ -46,27 +50,18 @@ def dry_mass() -> float:
|
|
46
50
|
|
47
51
|
|
48
52
|
@pytest.fixture
|
49
|
-
def
|
50
|
-
|
51
|
-
satellite_geometry = Composite(
|
52
|
-
Cuboid(
|
53
|
-
Point(0.0, 0.0, 0.0),
|
54
|
-
[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]],
|
55
|
-
[1.0, 0.0, 0.0],
|
56
|
-
)
|
57
|
-
)
|
58
|
-
inertia_tensor = np.ndarray(shape=(3, 3))
|
59
|
-
surface_area = 500.0
|
60
|
-
drag_coefficient = 2.1
|
53
|
+
def surface_area() -> float:
|
54
|
+
return 500.0
|
61
55
|
|
62
|
-
|
63
|
-
|
64
|
-
|
56
|
+
|
57
|
+
@pytest.fixture
|
58
|
+
def drag_coefficient() -> float:
|
59
|
+
return 2.1
|
65
60
|
|
66
61
|
|
67
62
|
@pytest.fixture
|
68
|
-
def dynamics(earth: Earth
|
69
|
-
return AtmosphericDrag(earth
|
63
|
+
def dynamics(earth: Earth) -> AtmosphericDrag:
|
64
|
+
return AtmosphericDrag(earth)
|
70
65
|
|
71
66
|
|
72
67
|
@pytest.fixture
|
@@ -76,6 +71,8 @@ def coordinates_broker() -> CoordinatesBroker:
|
|
76
71
|
CartesianPosition.default(),
|
77
72
|
CartesianVelocity.default(),
|
78
73
|
CoordinatesSubset.mass(),
|
74
|
+
CoordinatesSubset.surface_area(),
|
75
|
+
CoordinatesSubset.drag_coefficient(),
|
79
76
|
]
|
80
77
|
)
|
81
78
|
|
@@ -101,10 +98,15 @@ def state(
|
|
101
98
|
position_coordinates: list,
|
102
99
|
velocity_coordinates: list,
|
103
100
|
dry_mass: float,
|
101
|
+
surface_area: float,
|
102
|
+
drag_coefficient: float,
|
104
103
|
coordinates_broker: CoordinatesBroker,
|
105
104
|
) -> State:
|
106
|
-
|
107
|
-
|
105
|
+
coordinates = (
|
106
|
+
position_coordinates
|
107
|
+
+ velocity_coordinates
|
108
|
+
+ [dry_mass, surface_area, drag_coefficient]
|
109
|
+
)
|
108
110
|
return State(instant, coordinates, Frame.GCRF(), coordinates_broker)
|
109
111
|
|
110
112
|
|
@@ -124,6 +126,3 @@ class TestAtmosphericDrag:
|
|
124
126
|
)
|
125
127
|
|
126
128
|
assert len(contribution) == 3
|
127
|
-
assert contribution == pytest.approx(
|
128
|
-
[0.0, -2.53370345e-05, 3.57473816e-12], abs=5e-11
|
129
|
-
)
|
@@ -17,7 +17,10 @@ from ostk.physics.time import Duration
|
|
17
17
|
from ostk.physics.coordinate import Position
|
18
18
|
from ostk.physics.coordinate import Velocity
|
19
19
|
from ostk.physics.coordinate import Frame
|
20
|
-
from ostk.physics.environment.objects.celestial_bodies import Earth
|
20
|
+
from ostk.physics.environment.objects.celestial_bodies import Earth, Sun
|
21
|
+
from ostk.physics.environment.gravitational import Earth as EarthGravitationalModel
|
22
|
+
from ostk.physics.environment.magnetic import Earth as EarthMagneticModel
|
23
|
+
from ostk.physics.environment.atmospheric import Earth as EarthAtmosphericModel
|
21
24
|
|
22
25
|
from ostk.astrodynamics.trajectory import LocalOrbitalFrameFactory
|
23
26
|
from ostk.astrodynamics.trajectory import LocalOrbitalFrameDirection
|
@@ -34,7 +37,13 @@ from ostk.astrodynamics.flight.system import Dynamics
|
|
34
37
|
from ostk.astrodynamics.flight.system.dynamics import CentralBodyGravity
|
35
38
|
from ostk.astrodynamics.flight.system.dynamics.thruster import ConstantThrust
|
36
39
|
from ostk.astrodynamics.flight.system.dynamics import PositionDerivative
|
40
|
+
from ostk.astrodynamics.flight.system.dynamics import AtmosphericDrag
|
37
41
|
from ostk.astrodynamics.trajectory import State
|
42
|
+
from ostk.astrodynamics.trajectory.state import CoordinatesSubset, CoordinatesBroker
|
43
|
+
from ostk.astrodynamics.trajectory.state.coordinates_subset import (
|
44
|
+
CartesianPosition,
|
45
|
+
CartesianVelocity,
|
46
|
+
)
|
38
47
|
from ostk.astrodynamics.trajectory import Propagator
|
39
48
|
|
40
49
|
from ostk.astrodynamics.event_condition import InstantCondition
|
@@ -73,17 +82,30 @@ def satellite_system(propulsion_system: PropulsionSystem) -> SatelliteSystem:
|
|
73
82
|
|
74
83
|
|
75
84
|
@pytest.fixture
|
76
|
-
def
|
77
|
-
return
|
85
|
+
def earth() -> Earth:
|
86
|
+
return Earth.from_models(
|
87
|
+
EarthGravitationalModel(EarthGravitationalModel.Type.EGM96),
|
88
|
+
EarthMagneticModel(EarthMagneticModel.Type.Undefined),
|
89
|
+
EarthAtmosphericModel(EarthAtmosphericModel.Type.Exponential),
|
90
|
+
)
|
91
|
+
|
92
|
+
|
93
|
+
@pytest.fixture
|
94
|
+
def environment(earth) -> Environment:
|
95
|
+
sun = Sun.default()
|
96
|
+
|
97
|
+
return Environment(Instant.J2000(), [earth, sun])
|
78
98
|
|
79
99
|
|
80
100
|
@pytest.fixture
|
81
|
-
def coordinates_broker()
|
101
|
+
def coordinates_broker():
|
82
102
|
return CoordinatesBroker(
|
83
103
|
[
|
84
104
|
CartesianPosition.default(),
|
85
105
|
CartesianVelocity.default(),
|
86
106
|
CoordinatesSubset.mass(),
|
107
|
+
CoordinatesSubset.surface_area(),
|
108
|
+
CoordinatesSubset.drag_coefficient(),
|
87
109
|
]
|
88
110
|
)
|
89
111
|
|
@@ -93,7 +115,9 @@ def state(
|
|
93
115
|
satellite_system: SatelliteSystem, coordinates_broker: CoordinatesBroker
|
94
116
|
) -> State:
|
95
117
|
instant: Instant = Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC)
|
118
|
+
|
96
119
|
propellant_mass: float = 10.0
|
120
|
+
|
97
121
|
coordinates: list = [
|
98
122
|
7500000.0,
|
99
123
|
0.0,
|
@@ -107,11 +131,41 @@ def state(
|
|
107
131
|
return State(instant, coordinates, Frame.GCRF(), coordinates_broker)
|
108
132
|
|
109
133
|
|
134
|
+
@pytest.fixture
|
135
|
+
def state_low_altitude(
|
136
|
+
satellite_system: SatelliteSystem, coordinates_broker: CoordinatesBroker
|
137
|
+
) -> State:
|
138
|
+
instant: Instant = Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC)
|
139
|
+
|
140
|
+
propellant_mass: float = 10.0
|
141
|
+
area: float = satellite_system.get_cross_sectional_surface_area()
|
142
|
+
cd: float = satellite_system.get_drag_coefficient()
|
143
|
+
|
144
|
+
coordinates: list = [
|
145
|
+
7000000.0,
|
146
|
+
0.0,
|
147
|
+
0.0,
|
148
|
+
0.0,
|
149
|
+
5335.865450622126,
|
150
|
+
5335.865450622126,
|
151
|
+
satellite_system.get_mass().in_kilograms() + propellant_mass,
|
152
|
+
area,
|
153
|
+
cd,
|
154
|
+
]
|
155
|
+
|
156
|
+
return State(instant, coordinates, Frame.GCRF(), coordinates_broker)
|
157
|
+
|
158
|
+
|
110
159
|
@pytest.fixture
|
111
160
|
def central_body_gravity() -> CentralBodyGravity:
|
112
161
|
return CentralBodyGravity(Earth.WGS84(20, 0))
|
113
162
|
|
114
163
|
|
164
|
+
@pytest.fixture
|
165
|
+
def atmospheric_drag(environment, satellite_system) -> AtmosphericDrag:
|
166
|
+
return AtmosphericDrag(environment.access_celestial_object_with_name("Earth"))
|
167
|
+
|
168
|
+
|
115
169
|
@pytest.fixture
|
116
170
|
def position_derivative() -> PositionDerivative:
|
117
171
|
return PositionDerivative()
|
@@ -135,7 +189,8 @@ def constant_thrust(
|
|
135
189
|
|
136
190
|
@pytest.fixture
|
137
191
|
def dynamics(
|
138
|
-
position_derivative: PositionDerivative,
|
192
|
+
position_derivative: PositionDerivative,
|
193
|
+
central_body_gravity: CentralBodyGravity,
|
139
194
|
) -> list:
|
140
195
|
return [position_derivative, central_body_gravity]
|
141
196
|
|
@@ -273,6 +328,26 @@ class TestPropagator:
|
|
273
328
|
instant_array.reverse()
|
274
329
|
propagator.calculate_states_at(state, instant_array)
|
275
330
|
|
331
|
+
def test_calculate_states_at_with_drag(
|
332
|
+
self,
|
333
|
+
numerical_solver: NumericalSolver,
|
334
|
+
dynamics: list[Dynamics],
|
335
|
+
atmospheric_drag: AtmosphericDrag,
|
336
|
+
state_low_altitude: State,
|
337
|
+
):
|
338
|
+
propagator: Propagator = Propagator(
|
339
|
+
numerical_solver, dynamics + [atmospheric_drag]
|
340
|
+
)
|
341
|
+
|
342
|
+
instant_array = [
|
343
|
+
Instant.date_time(DateTime(2018, 1, 1, 0, 10, 0), Scale.UTC),
|
344
|
+
Instant.date_time(DateTime(2018, 1, 1, 0, 20, 0), Scale.UTC),
|
345
|
+
Instant.date_time(DateTime(2018, 1, 1, 0, 30, 0), Scale.UTC),
|
346
|
+
Instant.date_time(DateTime(2018, 1, 1, 0, 40, 0), Scale.UTC),
|
347
|
+
]
|
348
|
+
|
349
|
+
_ = propagator.calculate_states_at(state_low_altitude, instant_array)
|
350
|
+
|
276
351
|
def test_calculate_states_at_with_thrust(
|
277
352
|
self,
|
278
353
|
numerical_solver: NumericalSolver,
|
@@ -102,6 +102,7 @@ class TestState:
|
|
102
102
|
position: Position,
|
103
103
|
velocity: Velocity,
|
104
104
|
frame: Frame,
|
105
|
+
coordinates_broker: CoordinatesBroker,
|
105
106
|
):
|
106
107
|
assert state.get_instant() == instant
|
107
108
|
assert state.get_position() == position
|
@@ -111,6 +112,7 @@ class TestState:
|
|
111
112
|
state.get_coordinates()
|
112
113
|
== np.append(position.get_coordinates(), velocity.get_coordinates())
|
113
114
|
).all()
|
115
|
+
assert state.get_coordinates_subsets() == coordinates_broker.get_subsets()
|
114
116
|
|
115
117
|
def test_in_frame(
|
116
118
|
self,
|
File without changes
|
File without changes
|
File without changes
|