open-space-toolkit-astrodynamics 17.2.0__py312-none-manylinux2014_x86_64.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.
Files changed (151) hide show
  1. open_space_toolkit_astrodynamics-17.2.0.dist-info/METADATA +30 -0
  2. open_space_toolkit_astrodynamics-17.2.0.dist-info/RECORD +151 -0
  3. open_space_toolkit_astrodynamics-17.2.0.dist-info/WHEEL +5 -0
  4. open_space_toolkit_astrodynamics-17.2.0.dist-info/top_level.txt +1 -0
  5. open_space_toolkit_astrodynamics-17.2.0.dist-info/zip-safe +1 -0
  6. ostk/__init__.py +1 -0
  7. ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-312-x86_64-linux-gnu.so +0 -0
  8. ostk/astrodynamics/__init__.py +11 -0
  9. ostk/astrodynamics/__init__.pyi +720 -0
  10. ostk/astrodynamics/access.pyi +577 -0
  11. ostk/astrodynamics/conjunction/__init__.pyi +121 -0
  12. ostk/astrodynamics/conjunction/close_approach.pyi +89 -0
  13. ostk/astrodynamics/conjunction/message/__init__.pyi +3 -0
  14. ostk/astrodynamics/conjunction/message/ccsds.pyi +705 -0
  15. ostk/astrodynamics/converters.py +130 -0
  16. ostk/astrodynamics/converters.pyi +58 -0
  17. ostk/astrodynamics/data/__init__.pyi +3 -0
  18. ostk/astrodynamics/data/provider.pyi +22 -0
  19. ostk/astrodynamics/dataframe.py +597 -0
  20. ostk/astrodynamics/display.py +281 -0
  21. ostk/astrodynamics/dynamics.pyi +311 -0
  22. ostk/astrodynamics/eclipse.pyi +70 -0
  23. ostk/astrodynamics/estimator.pyi +268 -0
  24. ostk/astrodynamics/event_condition.pyi +910 -0
  25. ostk/astrodynamics/flight/__init__.pyi +626 -0
  26. ostk/astrodynamics/flight/profile/__init__.pyi +99 -0
  27. ostk/astrodynamics/flight/profile/model.pyi +179 -0
  28. ostk/astrodynamics/flight/system.pyi +268 -0
  29. ostk/astrodynamics/guidance_law.pyi +416 -0
  30. ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.17 +0 -0
  31. ostk/astrodynamics/pytrajectory/__init__.py +1 -0
  32. ostk/astrodynamics/pytrajectory/__init__.pyi +3 -0
  33. ostk/astrodynamics/pytrajectory/pystate.py +263 -0
  34. ostk/astrodynamics/pytrajectory/pystate.pyi +66 -0
  35. ostk/astrodynamics/solver.pyi +432 -0
  36. ostk/astrodynamics/test/__init__.py +1 -0
  37. ostk/astrodynamics/test/access/__init__.py +1 -0
  38. ostk/astrodynamics/test/access/test_generator.py +319 -0
  39. ostk/astrodynamics/test/access/test_visibility_criterion.py +201 -0
  40. ostk/astrodynamics/test/conftest.py +119 -0
  41. ostk/astrodynamics/test/conjunction/close_approach/__init__.py +0 -0
  42. ostk/astrodynamics/test/conjunction/close_approach/test_generator.py +228 -0
  43. ostk/astrodynamics/test/conjunction/message/ccsds/__init__.py +1 -0
  44. ostk/astrodynamics/test/conjunction/message/ccsds/conftest.py +325 -0
  45. ostk/astrodynamics/test/conjunction/message/ccsds/data/cdm.json +303 -0
  46. ostk/astrodynamics/test/conjunction/message/ccsds/test_cdm.py +416 -0
  47. ostk/astrodynamics/test/conjunction/test_close_approach.py +244 -0
  48. ostk/astrodynamics/test/data/provider/test_off_nadir.py +58 -0
  49. ostk/astrodynamics/test/dynamics/__init__.py +1 -0
  50. ostk/astrodynamics/test/dynamics/data/Tabulated_Earth_Gravity.csv +565 -0
  51. ostk/astrodynamics/test/dynamics/data/Tabulated_Earth_Gravity_Truth.csv +100 -0
  52. ostk/astrodynamics/test/dynamics/test_atmospheric_drag.py +128 -0
  53. ostk/astrodynamics/test/dynamics/test_central_body_gravity.py +58 -0
  54. ostk/astrodynamics/test/dynamics/test_dynamics.py +50 -0
  55. ostk/astrodynamics/test/dynamics/test_position_derivative.py +51 -0
  56. ostk/astrodynamics/test/dynamics/test_tabulated.py +138 -0
  57. ostk/astrodynamics/test/dynamics/test_third_body_gravity.py +67 -0
  58. ostk/astrodynamics/test/dynamics/test_thruster.py +157 -0
  59. ostk/astrodynamics/test/eclipse/__init__.py +1 -0
  60. ostk/astrodynamics/test/eclipse/test_generator.py +138 -0
  61. ostk/astrodynamics/test/estimator/test_orbit_determination_solver.py +261 -0
  62. ostk/astrodynamics/test/estimator/test_tle_solver.py +216 -0
  63. ostk/astrodynamics/test/event_condition/test_angular_condition.py +113 -0
  64. ostk/astrodynamics/test/event_condition/test_boolean_condition.py +55 -0
  65. ostk/astrodynamics/test/event_condition/test_brouwer_lyddane_mean_long_condition.py +135 -0
  66. ostk/astrodynamics/test/event_condition/test_coe_condition.py +135 -0
  67. ostk/astrodynamics/test/event_condition/test_instant_condition.py +48 -0
  68. ostk/astrodynamics/test/event_condition/test_logical_condition.py +120 -0
  69. ostk/astrodynamics/test/event_condition/test_real_condition.py +50 -0
  70. ostk/astrodynamics/test/flight/__init__.py +1 -0
  71. ostk/astrodynamics/test/flight/profile/model/test_tabulated_profile.py +115 -0
  72. ostk/astrodynamics/test/flight/system/__init__.py +1 -0
  73. ostk/astrodynamics/test/flight/system/test_propulsion_system.py +64 -0
  74. ostk/astrodynamics/test/flight/system/test_satellite_system.py +83 -0
  75. ostk/astrodynamics/test/flight/system/test_satellite_system_builder.py +71 -0
  76. ostk/astrodynamics/test/flight/test_maneuver.py +231 -0
  77. ostk/astrodynamics/test/flight/test_profile.py +293 -0
  78. ostk/astrodynamics/test/flight/test_system.py +45 -0
  79. ostk/astrodynamics/test/guidance_law/test_constant_thrust.py +177 -0
  80. ostk/astrodynamics/test/guidance_law/test_guidance_law.py +60 -0
  81. ostk/astrodynamics/test/guidance_law/test_heterogeneous_guidance_law.py +164 -0
  82. ostk/astrodynamics/test/guidance_law/test_qlaw.py +209 -0
  83. ostk/astrodynamics/test/solvers/__init__.py +1 -0
  84. ostk/astrodynamics/test/solvers/test_finite_difference_solver.py +196 -0
  85. ostk/astrodynamics/test/solvers/test_least_squares_solver.py +334 -0
  86. ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +161 -0
  87. ostk/astrodynamics/test/test_access.py +128 -0
  88. ostk/astrodynamics/test/test_converters.py +290 -0
  89. ostk/astrodynamics/test/test_dataframe.py +1355 -0
  90. ostk/astrodynamics/test/test_display.py +184 -0
  91. ostk/astrodynamics/test/test_event_condition.py +80 -0
  92. ostk/astrodynamics/test/test_import.py +26 -0
  93. ostk/astrodynamics/test/test_root_solver.py +70 -0
  94. ostk/astrodynamics/test/test_trajectory.py +126 -0
  95. ostk/astrodynamics/test/test_utilities.py +338 -0
  96. ostk/astrodynamics/test/test_viewer.py +318 -0
  97. ostk/astrodynamics/test/trajectory/__init__.py +1 -0
  98. ostk/astrodynamics/test/trajectory/model/test_nadir_trajectory.py +87 -0
  99. ostk/astrodynamics/test/trajectory/model/test_tabulated_trajectory.py +303 -0
  100. ostk/astrodynamics/test/trajectory/model/test_target_scan_trajectory.py +126 -0
  101. ostk/astrodynamics/test/trajectory/orbit/__init__.py +1 -0
  102. ostk/astrodynamics/test/trajectory/orbit/message/__init__.py +1 -0
  103. ostk/astrodynamics/test/trajectory/orbit/message/spacex/__init__.py +1 -0
  104. ostk/astrodynamics/test/trajectory/orbit/message/spacex/conftest.py +18 -0
  105. ostk/astrodynamics/test/trajectory/orbit/message/spacex/data/opm_1.yaml +44 -0
  106. ostk/astrodynamics/test/trajectory/orbit/message/spacex/test_opm.py +108 -0
  107. ostk/astrodynamics/test/trajectory/orbit/models/__init__.py +1 -0
  108. ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py +1 -0
  109. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean.py +65 -0
  110. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_long.py +102 -0
  111. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_short.py +102 -0
  112. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py +305 -0
  113. ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py +1 -0
  114. ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py +337 -0
  115. ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py +130 -0
  116. ostk/astrodynamics/test/trajectory/orbit/models/test_modified_equinoctial.py +142 -0
  117. ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py +234 -0
  118. ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py +1 -0
  119. ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py +380 -0
  120. ostk/astrodynamics/test/trajectory/orbit/test_model.py +1 -0
  121. ostk/astrodynamics/test/trajectory/orbit/test_pass.py +75 -0
  122. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_angular_velocity.py +30 -0
  123. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_attitude_quaternion.py +18 -0
  124. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_acceleration.py +136 -0
  125. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_position.py +107 -0
  126. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py +115 -0
  127. ostk/astrodynamics/test/trajectory/state/test_coordinate_broker.py +84 -0
  128. ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py +58 -0
  129. ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +316 -0
  130. ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py +81 -0
  131. ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +119 -0
  132. ostk/astrodynamics/test/trajectory/test_model.py +1 -0
  133. ostk/astrodynamics/test/trajectory/test_orbit.py +212 -0
  134. ostk/astrodynamics/test/trajectory/test_propagator.py +452 -0
  135. ostk/astrodynamics/test/trajectory/test_segment.py +694 -0
  136. ostk/astrodynamics/test/trajectory/test_sequence.py +550 -0
  137. ostk/astrodynamics/test/trajectory/test_state.py +629 -0
  138. ostk/astrodynamics/test/trajectory/test_state_builder.py +172 -0
  139. ostk/astrodynamics/trajectory/__init__.pyi +1982 -0
  140. ostk/astrodynamics/trajectory/model.pyi +259 -0
  141. ostk/astrodynamics/trajectory/orbit/__init__.pyi +349 -0
  142. ostk/astrodynamics/trajectory/orbit/message/__init__.pyi +3 -0
  143. ostk/astrodynamics/trajectory/orbit/message/spacex.pyi +264 -0
  144. ostk/astrodynamics/trajectory/orbit/model/__init__.pyi +648 -0
  145. ostk/astrodynamics/trajectory/orbit/model/brouwerLyddaneMean.pyi +121 -0
  146. ostk/astrodynamics/trajectory/orbit/model/kepler.pyi +709 -0
  147. ostk/astrodynamics/trajectory/orbit/model/sgp4.pyi +330 -0
  148. ostk/astrodynamics/trajectory/state/__init__.pyi +402 -0
  149. ostk/astrodynamics/trajectory/state/coordinate_subset.pyi +208 -0
  150. ostk/astrodynamics/utilities.py +396 -0
  151. ostk/astrodynamics/viewer.py +851 -0
@@ -0,0 +1,1982 @@
1
+ from __future__ import annotations
2
+ import numpy
3
+ import ostk.astrodynamics
4
+ import ostk.core.type
5
+ import ostk.mathematics.curve_fitting
6
+ import ostk.mathematics.geometry.d3.transformation.rotation
7
+ import ostk.physics
8
+ import ostk.physics.coordinate
9
+ import ostk.physics.environment.object
10
+ import ostk.physics.time
11
+ import ostk.physics.unit
12
+ import typing
13
+ from . import model
14
+ from . import orbit
15
+ from . import state
16
+ __all__ = ['LocalOrbitalFrameDirection', 'LocalOrbitalFrameFactory', 'LocalOrbitalFrameTransformProvider', 'Model', 'Orbit', 'Propagator', 'Segment', 'Sequence', 'State', 'StateBuilder', 'model', 'orbit', 'state']
17
+ class LocalOrbitalFrameDirection:
18
+ """
19
+
20
+ A local orbital frame direction.
21
+
22
+
23
+ """
24
+ __hash__: typing.ClassVar[None] = None
25
+ @staticmethod
26
+ def undefined() -> LocalOrbitalFrameDirection:
27
+ """
28
+ Get an undefined local orbital frame direction.
29
+
30
+ Returns:
31
+ LocalOrbitalFrameDirection: The undefined local orbital frame direction.
32
+ """
33
+ def __eq__(self, arg0: LocalOrbitalFrameDirection) -> bool:
34
+ ...
35
+ def __init__(self, vector: numpy.ndarray[numpy.float64[3, 1]], local_orbital_frame_factory: LocalOrbitalFrameFactory) -> None:
36
+ """
37
+ Construct a new `LocalOrbitalFrameDirection` object.
38
+
39
+ Args:
40
+ vector (numpy.ndarray): The vector expressed in the local orbital frame.
41
+ local_orbital_frame_factory (LocalOrbitalFrameFactory): The local orbital frame factory that defines the frame.
42
+
43
+ Returns:
44
+ LocalOrbitalFrameDirection: The new `LocalOrbitalFrameDirection` object.
45
+ """
46
+ def __ne__(self, arg0: LocalOrbitalFrameDirection) -> bool:
47
+ ...
48
+ def get_local_orbital_frame_factory(self) -> LocalOrbitalFrameFactory:
49
+ """
50
+ Get the local orbital frame factory that defines the frame.
51
+
52
+ Returns:
53
+ LocalOrbitalFrameFactory: The local orbital frame factory that defines the frame.
54
+ """
55
+ def get_value(self) -> numpy.ndarray[numpy.float64[3, 1]]:
56
+ """
57
+ Get the vector expressed in the local orbital frame.
58
+
59
+ Returns:
60
+ Vector3d: The vector expressed in the local orbital frame.
61
+ """
62
+ def is_defined(self) -> bool:
63
+ """
64
+ Check if the local orbital frame direction is defined.
65
+
66
+ Returns:
67
+ bool: True if the local orbital frame direction is defined, False otherwise.
68
+ """
69
+ class LocalOrbitalFrameFactory:
70
+ """
71
+
72
+ The local orbital frame factory.
73
+
74
+
75
+ """
76
+ @staticmethod
77
+ def LVLH(parent_frame: ostk.physics.coordinate.Frame) -> LocalOrbitalFrameFactory:
78
+ """
79
+ Get a Local Vertical Local Horizontal (LVLH) local orbital frame factory.
80
+
81
+ Args:
82
+ parent_frame (Frame): The parent frame.
83
+
84
+ Returns:
85
+ LocalOrbitalFrameFactory: The LVLH local orbital frame factory.
86
+ """
87
+ @staticmethod
88
+ def NED(parent_frame: ostk.physics.coordinate.Frame) -> LocalOrbitalFrameFactory:
89
+ """
90
+ Get a North-East-Down (NED) local orbital frame factory.
91
+
92
+ Args:
93
+ parent_frame (Frame): The parent frame.
94
+
95
+ Returns:
96
+ LocalOrbitalFrameFactory: The NED local orbital frame factory.
97
+ """
98
+ @staticmethod
99
+ def QSW(parent_frame: ostk.physics.coordinate.Frame) -> LocalOrbitalFrameFactory:
100
+ """
101
+ Get a Quasi-Satellite World (QSW) local orbital frame factory.
102
+
103
+ Args:
104
+ parent_frame (Frame): The parent frame.
105
+
106
+ Returns:
107
+ LocalOrbitalFrameFactory: The QSW local orbital frame factory.
108
+ """
109
+ @staticmethod
110
+ def TNW(parent_frame: ostk.physics.coordinate.Frame) -> LocalOrbitalFrameFactory:
111
+ """
112
+ Get a Tangent-Normal-Wideband (TNW) local orbital frame factory.
113
+
114
+ Args:
115
+ parent_frame (Frame): The parent frame.
116
+
117
+ Returns:
118
+ LocalOrbitalFrameFactory: The TNW local orbital frame factory.
119
+ """
120
+ @staticmethod
121
+ def VNC(parent_frame: ostk.physics.coordinate.Frame) -> LocalOrbitalFrameFactory:
122
+ """
123
+ Get a Velocity-Normal-Co-normal (VNC) local orbital frame factory.
124
+
125
+ Args:
126
+ parent_frame (Frame): The parent frame.
127
+
128
+ Returns:
129
+ LocalOrbitalFrameFactory: The VNC local orbital frame factory.
130
+ """
131
+ @staticmethod
132
+ def VVLH(parent_frame: ostk.physics.coordinate.Frame) -> LocalOrbitalFrameFactory:
133
+ """
134
+ Get a Velocity Local Vertical Local Horizontal (VVLH) local orbital frame factory.
135
+
136
+ Args:
137
+ parent_frame (Frame): The parent frame.
138
+
139
+ Returns:
140
+ LocalOrbitalFrameFactory: The VVLH local orbital frame factory.
141
+ """
142
+ @staticmethod
143
+ @typing.overload
144
+ def construct(type: LocalOrbitalFrameTransformProvider.Type, parent_frame: ostk.physics.coordinate.Frame) -> LocalOrbitalFrameFactory:
145
+ """
146
+ Construct a local orbital frame factory for the provided type.
147
+
148
+ Args:
149
+ type (LocalOrbitalFrameTransformProvider.Type): The type of local orbital frame transform provider.
150
+ parent_frame (Frame): The parent frame.
151
+
152
+ Returns:
153
+ LocalOrbitalFrameFactory: The local orbital frame factory.
154
+ """
155
+ @staticmethod
156
+ @typing.overload
157
+ def construct(transform_generator: typing.Callable[[...], ostk.physics.coordinate.Transform], parent_frame: ostk.physics.coordinate.Frame) -> LocalOrbitalFrameFactory:
158
+ """
159
+ Construct a local orbital frame factory for a custom type, using the provided transform generator.
160
+
161
+ Args:
162
+ transform_generator (callable[[State], Transform]): The transform generator.
163
+ parent_frame (Frame): The parent frame.
164
+
165
+ Returns:
166
+ LocalOrbitalFrameFactory: The local orbital frame factory.
167
+ """
168
+ @staticmethod
169
+ def undefined() -> LocalOrbitalFrameFactory:
170
+ """
171
+ Get an undefined local orbital frame factory.
172
+
173
+ Returns:
174
+ LocalOrbitalFrameFactory: The undefined local orbital frame factory.
175
+ """
176
+ def access_parent_frame(self) -> ostk.physics.coordinate.Frame:
177
+ """
178
+ Get the parent frame.
179
+
180
+ Returns:
181
+ Frame: The parent frame.
182
+ """
183
+ def generate_frame(self, state: typing.Any) -> ostk.physics.coordinate.Frame:
184
+ """
185
+ Generate a local orbital frame.
186
+
187
+ Args:
188
+ state (State): The state.
189
+
190
+ Returns:
191
+ Frame: The local orbital frame.
192
+ """
193
+ def get_provider_type(self) -> LocalOrbitalFrameTransformProvider.Type:
194
+ """
195
+ Get the provider type.
196
+
197
+ Returns:
198
+ LocalOrbitalFrameTransformProvider.Type: The provider type.
199
+ """
200
+ def is_defined(self) -> bool:
201
+ """
202
+ Check if the local orbital frame factory is defined.
203
+
204
+ Returns:
205
+ Frame: True if the local orbital frame factory is defined, False otherwise.
206
+ """
207
+ class LocalOrbitalFrameTransformProvider:
208
+ """
209
+
210
+ Local orbital frame transform provider, frame provider.
211
+ Generates a specific transform based on a State (instant, position, velocity) and a LOF type.
212
+
213
+
214
+ """
215
+ class Type:
216
+ """
217
+
218
+ The local orbital frame type.
219
+
220
+
221
+ Members:
222
+
223
+ Undefined : Undefined
224
+
225
+ NED : North-East-Down
226
+
227
+ LVLH : Local Vertical-Local Horizontal
228
+
229
+ LVLHGD : Local Vertical-Local Horizontal Geodetic
230
+
231
+ VVLH : Vertical-Local Horizontal
232
+
233
+ QSW : Quasi-Satellite West
234
+
235
+ TNW : Tangent-Normal-Wideband
236
+
237
+ VNC : Velocity-Normal-Conormal
238
+ """
239
+ LVLH: typing.ClassVar[LocalOrbitalFrameTransformProvider.Type] # value = <Type.LVLH: 2>
240
+ LVLHGD: typing.ClassVar[LocalOrbitalFrameTransformProvider.Type] # value = <Type.LVLHGD: 4>
241
+ NED: typing.ClassVar[LocalOrbitalFrameTransformProvider.Type] # value = <Type.NED: 1>
242
+ QSW: typing.ClassVar[LocalOrbitalFrameTransformProvider.Type] # value = <Type.QSW: 5>
243
+ TNW: typing.ClassVar[LocalOrbitalFrameTransformProvider.Type] # value = <Type.TNW: 6>
244
+ Undefined: typing.ClassVar[LocalOrbitalFrameTransformProvider.Type] # value = <Type.Undefined: 0>
245
+ VNC: typing.ClassVar[LocalOrbitalFrameTransformProvider.Type] # value = <Type.VNC: 7>
246
+ VVLH: typing.ClassVar[LocalOrbitalFrameTransformProvider.Type] # value = <Type.VVLH: 3>
247
+ __members__: typing.ClassVar[dict[str, LocalOrbitalFrameTransformProvider.Type]] # value = {'Undefined': <Type.Undefined: 0>, 'NED': <Type.NED: 1>, 'LVLH': <Type.LVLH: 2>, 'LVLHGD': <Type.LVLHGD: 4>, 'VVLH': <Type.VVLH: 3>, 'QSW': <Type.QSW: 5>, 'TNW': <Type.TNW: 6>, 'VNC': <Type.VNC: 7>}
248
+ def __eq__(self, other: typing.Any) -> bool:
249
+ ...
250
+ def __getstate__(self) -> int:
251
+ ...
252
+ def __hash__(self) -> int:
253
+ ...
254
+ def __index__(self) -> int:
255
+ ...
256
+ def __init__(self, value: int) -> None:
257
+ ...
258
+ def __int__(self) -> int:
259
+ ...
260
+ def __ne__(self, other: typing.Any) -> bool:
261
+ ...
262
+ def __repr__(self) -> str:
263
+ ...
264
+ def __setstate__(self, state: int) -> None:
265
+ ...
266
+ def __str__(self) -> str:
267
+ ...
268
+ @property
269
+ def name(self) -> str:
270
+ ...
271
+ @property
272
+ def value(self) -> int:
273
+ ...
274
+ @staticmethod
275
+ def construct(type: LocalOrbitalFrameTransformProvider.Type, state: typing.Any) -> LocalOrbitalFrameTransformProvider:
276
+ """
277
+ Constructs a local orbital frame transform provider for the provided type.
278
+
279
+ Args:
280
+ type (LocalOrbitalFrameTransformProvider.Type): The local orbital frame provider type.
281
+ state (State): The state.
282
+
283
+ Returns:
284
+ LocalOrbitalFrameTransformProvider: The provider.
285
+ """
286
+ @staticmethod
287
+ def get_transform_generator(type: LocalOrbitalFrameTransformProvider.Type) -> typing.Callable[[...], ostk.physics.coordinate.Transform]:
288
+ """
289
+ Returns the transform generator function for a given type.
290
+
291
+ Args:
292
+ type (LocalOrbitalFrameTransformProvider.Type): The local orbital frame provider type.
293
+
294
+ Returns:
295
+ callable[[State], Transform]: The transform generator function.
296
+ """
297
+ def __init__(self, transform: ostk.physics.coordinate.Transform) -> None:
298
+ """
299
+ Constructs a local orbital frame transform provider.
300
+
301
+ Args:
302
+ transform (Transform): The transform.
303
+
304
+ Returns:
305
+ LocalOrbitalFrameTransformProvider: The provider.
306
+ """
307
+ def get_transform_at(self, instant: ostk.physics.time.Instant) -> ostk.physics.coordinate.Transform:
308
+ """
309
+ Returns the transform at a given instant.
310
+
311
+ Args:
312
+ instant (Instant): The instant.
313
+
314
+ Returns:
315
+ Transform: The transform at the given instant.
316
+ """
317
+ def is_defined(self) -> bool:
318
+ """
319
+ Returns true if the provider is defined.
320
+
321
+ Returns:
322
+ bool: True if the provider is defined.
323
+ """
324
+ class Model:
325
+ """
326
+
327
+ Trajectory model.
328
+
329
+
330
+ """
331
+ __hash__: typing.ClassVar[None] = None
332
+ def __eq__(self, arg0: Model) -> bool:
333
+ ...
334
+ def __ne__(self, arg0: Model) -> bool:
335
+ ...
336
+ def __repr__(self) -> str:
337
+ ...
338
+ def __str__(self) -> str:
339
+ ...
340
+ def calculate_state_at(self, instant: ostk.physics.time.Instant) -> State:
341
+ """
342
+ Calculate the state at a given instant.
343
+
344
+ Args:
345
+ instant (Instant): The instant.
346
+
347
+ Returns:
348
+ State: The state at the given instant.
349
+ """
350
+ def calculate_states_at(self, instants: list[ostk.physics.time.Instant]) -> list[State]:
351
+ """
352
+ Calculate the states at given instants. It can be more performant than looping `calculate_state_at` for multiple instants.
353
+
354
+ @param instants The instants.
355
+
356
+ Returns:
357
+ Array<State>: The states at the given instants.
358
+ """
359
+ def is_defined(self) -> bool:
360
+ """
361
+ Check if the model is defined.
362
+
363
+ Returns:
364
+ bool: True if the model is defined, False otherwise.
365
+ """
366
+ class Orbit(ostk.astrodynamics.Trajectory):
367
+ """
368
+
369
+ Gravitationally curved trajectory of an object.
370
+
371
+
372
+ """
373
+ class FrameType:
374
+ """
375
+
376
+ The local orbital frame type.
377
+
378
+
379
+ Members:
380
+
381
+ Undefined : Undefined
382
+
383
+ NED : North-East-Down
384
+
385
+ LVLH : Local Vertical-Local Horizontal
386
+
387
+ LVLHGD : Local Vertical-Local Horizontal GeoDetic
388
+
389
+ LVLHGDGT : Local Vertical-Local Horizontal GeoDetic Ground Track
390
+
391
+ VVLH : Vertical-Local Horizontal
392
+
393
+ QSW : Quasi-Satellite West
394
+
395
+ TNW : Tangent-Normal-Wideband
396
+
397
+ VNC : Velocity-Normal-Conormal
398
+ """
399
+ LVLH: typing.ClassVar[Orbit.FrameType] # value = <FrameType.LVLH: 2>
400
+ LVLHGD: typing.ClassVar[Orbit.FrameType] # value = <FrameType.LVLHGD: 4>
401
+ LVLHGDGT: typing.ClassVar[Orbit.FrameType] # value = <FrameType.LVLHGDGT: 5>
402
+ NED: typing.ClassVar[Orbit.FrameType] # value = <FrameType.NED: 1>
403
+ QSW: typing.ClassVar[Orbit.FrameType] # value = <FrameType.QSW: 6>
404
+ TNW: typing.ClassVar[Orbit.FrameType] # value = <FrameType.TNW: 7>
405
+ Undefined: typing.ClassVar[Orbit.FrameType] # value = <FrameType.Undefined: 0>
406
+ VNC: typing.ClassVar[Orbit.FrameType] # value = <FrameType.VNC: 8>
407
+ VVLH: typing.ClassVar[Orbit.FrameType] # value = <FrameType.VVLH: 3>
408
+ __members__: typing.ClassVar[dict[str, Orbit.FrameType]] # value = {'Undefined': <FrameType.Undefined: 0>, 'NED': <FrameType.NED: 1>, 'LVLH': <FrameType.LVLH: 2>, 'LVLHGD': <FrameType.LVLHGD: 4>, 'LVLHGDGT': <FrameType.LVLHGDGT: 5>, 'VVLH': <FrameType.VVLH: 3>, 'QSW': <FrameType.QSW: 6>, 'TNW': <FrameType.TNW: 7>, 'VNC': <FrameType.VNC: 8>}
409
+ def __eq__(self, other: typing.Any) -> bool:
410
+ ...
411
+ def __getstate__(self) -> int:
412
+ ...
413
+ def __hash__(self) -> int:
414
+ ...
415
+ def __index__(self) -> int:
416
+ ...
417
+ def __init__(self, value: int) -> None:
418
+ ...
419
+ def __int__(self) -> int:
420
+ ...
421
+ def __ne__(self, other: typing.Any) -> bool:
422
+ ...
423
+ def __repr__(self) -> str:
424
+ ...
425
+ def __setstate__(self, state: int) -> None:
426
+ ...
427
+ def __str__(self) -> str:
428
+ ...
429
+ @property
430
+ def name(self) -> str:
431
+ ...
432
+ @property
433
+ def value(self) -> int:
434
+ ...
435
+ __hash__: typing.ClassVar[None] = None
436
+ @staticmethod
437
+ def circular(epoch: ostk.physics.time.Instant, altitude: ostk.physics.unit.Length, inclination: ostk.physics.unit.Angle, celestial_object: ostk.physics.environment.object.Celestial) -> Orbit:
438
+ """
439
+ Create a circular `Orbit` object.
440
+
441
+ Args:
442
+ epoch (Instant): The epoch.
443
+ altitude (Length): The altitude (wrt. equatorial radius).
444
+ inclination (Angle): The inclination.
445
+ celestial_object (Celestial): The celestial object.
446
+
447
+ Returns:
448
+ Orbit: The circular `Orbit` object.
449
+ """
450
+ @staticmethod
451
+ def circular_equatorial(epoch: ostk.physics.time.Instant, altitude: ostk.physics.unit.Length, celestial_object: ostk.physics.environment.object.Celestial) -> Orbit:
452
+ """
453
+ Create a circular equatorial `Orbit` object.
454
+
455
+ Args:
456
+ epoch (Instant): The epoch.
457
+ altitude (Length): The altitude (wrt. equatorial radius).
458
+ celestial_object (Celestial): The celestial object.
459
+
460
+ Returns:
461
+ Orbit: The circular equatorial `Orbit` object.
462
+ """
463
+ @staticmethod
464
+ def compute_passes(states: list[State], initial_revolution_number: ostk.core.type.Integer) -> list[tuple[int, ...]]:
465
+ """
466
+ Compute passes from a set of states.
467
+
468
+ Args:
469
+ states (Array<State>): The states.
470
+ initial_revolution_number (Integer): The initial revolution number.
471
+
472
+ Returns:
473
+ list[tuple[int, Pass]]: List of index-pass pairs.
474
+ """
475
+ @staticmethod
476
+ def compute_passes_with_model(model: typing.Any, start_instant: ostk.physics.time.Instant, end_instant: ostk.physics.time.Instant, initial_revolution_number: ostk.core.type.Integer) -> list[...]:
477
+ """
478
+ Compute passes with the given model for the provided interval.
479
+
480
+ Args:
481
+ model (orbit.Model): The model.
482
+ start_instant (Instant): The start instant.
483
+ end_instant (Instant): The end instant.
484
+ initial_revolution_number (int): The initial revolution number.
485
+
486
+ Returns:
487
+ list[Pass]: List of passes.
488
+ """
489
+ @staticmethod
490
+ def equatorial(epoch: ostk.physics.time.Instant, apoapsis_altitude: ostk.physics.unit.Length, periapsis_altitude: ostk.physics.unit.Length, celestial_object: ostk.physics.environment.object.Celestial) -> Orbit:
491
+ """
492
+ Create an equatorial `Orbit` object.
493
+
494
+ Args:
495
+ epoch (Instant): The epoch.
496
+ apoapsis_altitude (Length): The apoapsis altitude (wrt. equatorial radius).
497
+ periapsis_altitude (Length): The periapsis altitude (wrt. equatorial radius).
498
+ celestial_object (Celestial): The celestial object.
499
+
500
+ Returns:
501
+ Orbit: The equatorial `Orbit` object.
502
+ """
503
+ @staticmethod
504
+ def frozen(epoch: ostk.physics.time.Instant, altitude: ostk.physics.unit.Length, celestial_object: ostk.physics.environment.object.Celestial, eccentricity: ostk.core.type.Real = ..., inclination: ostk.physics.unit.Angle = ..., raan: ostk.physics.unit.Angle = ..., aop: ostk.physics.unit.Angle = ..., true_anomaly: ostk.physics.unit.Angle = ...) -> Orbit:
505
+ """
506
+ Create a frozen `Orbit` object.
507
+
508
+ The critical angles for inclination are 63.4349 degrees and 116.5651 degrees.
509
+ The critical angles for AoP are 90.0 degrees and 270.0 degrees.
510
+
511
+ At a minimum, an epoch, altitude, and celestial body with a defined J2 and J3 must be provided.
512
+ In this case, the inclination and AoP are set to critical angles, and the eccentricity is derived
513
+ from inclination. RAAN and true anomaly default to zero degrees.
514
+
515
+ Additionally, the following combinations of inputs are supported:
516
+ - AoP (inclination set to critical value, eccentricity derived)
517
+ - AoP and eccentricity (inclination derived)
518
+ - AoP and inclination, but at least one of them must be a critical value (eccentricity derived)
519
+ - Inclination (AoP set to critical value, eccentricity derived)
520
+ - Eccentricity (AoP set to critical value, inclination derived)
521
+
522
+ Note that inclination and eccentricity cannot both be provided.
523
+
524
+ RAAN and True Anomaly may be provided alongside any of these arguments, and will be passed through
525
+ to the resulting Orbit as they do not impact the frozen orbit condition.
526
+
527
+ Args:
528
+ epoch (Instant): The epoch.
529
+ altitude (Length): The altitude (wrt. equatorial radius).
530
+ celestial_object (Celestial): The celestial object.
531
+ eccentricity (float): The eccentricity.
532
+ inclination (Angle): The inclination.
533
+ raan (Angle): The right ascension of the ascending node.
534
+ aop (Angle): The argument of periapsis.
535
+ true_anomaly (Angle): The true anomaly.
536
+
537
+ Returns:
538
+ Orbit: The frozen `Orbit` object.
539
+ """
540
+ @staticmethod
541
+ def geo_synchronous(epoch: ostk.physics.time.Instant, inclination: ostk.physics.unit.Angle, longitude: ostk.physics.unit.Angle, celestial_object: ostk.physics.environment.object.Celestial) -> Orbit:
542
+ """
543
+ Create a geosynchronous `Orbit` object.
544
+
545
+ Args:
546
+ epoch (Instant): The epoch.
547
+ inclination (Angle): The inclination.
548
+ longitude (Angle): The longitude.
549
+ celestial_object (Celestial): The celestial object.
550
+
551
+ Returns:
552
+ Orbit: The geosynchronous `Orbit` object.
553
+ """
554
+ @staticmethod
555
+ def sun_synchronous(epoch: ostk.physics.time.Instant, altitude: ostk.physics.unit.Length, local_time_at_descending_node: ostk.physics.time.Time, celestial_object: ostk.physics.environment.object.Celestial, argument_of_latitude: ostk.physics.unit.Angle = ...) -> Orbit:
556
+ """
557
+ Create a sun-synchronous `Orbit` object.
558
+
559
+ Args:
560
+ epoch (Instant): The epoch.
561
+ altitude (Length): The altitude (wrt. equatorial radius).
562
+ local_time_at_descending_node (Time): The local time at descending node.
563
+ celestial_object (Celestial): The celestial object.
564
+ argument_of_latitude (Angle, optional): The argument of latitude. Defaults to Angle.zero().
565
+
566
+ Returns:
567
+ Orbit: The sun-synchronous `Orbit` object.
568
+ """
569
+ @staticmethod
570
+ def undefined() -> Orbit:
571
+ """
572
+ Get an undefined `Orbit` object.
573
+
574
+ Returns:
575
+ Orbit: The undefined `Orbit` object.
576
+ """
577
+ def __eq__(self, arg0: Orbit) -> bool:
578
+ ...
579
+ @typing.overload
580
+ def __init__(self, model: typing.Any, celestial_object: ostk.physics.environment.object.Celestial) -> None:
581
+ """
582
+ Constructs an `Orbit` object.
583
+
584
+ Args:
585
+ model (orbit.Model): The orbit model.
586
+ celestial_object (Celestial): The celestial object.
587
+ """
588
+ @typing.overload
589
+ def __init__(self, states: list[State], initial_revolution_number: ostk.core.type.Integer, celestial_object: ostk.physics.environment.object.Celestial) -> None:
590
+ """
591
+ Constructs an `Orbit` object.
592
+
593
+ Args:
594
+ states (Array<State>): The states.
595
+ initial_revolution_number (Integer): The initial revolution number.
596
+ celestial_object (Celestial): The celestial object.
597
+ """
598
+ def __ne__(self, arg0: Orbit) -> bool:
599
+ ...
600
+ def __repr__(self) -> str:
601
+ ...
602
+ def __str__(self) -> str:
603
+ ...
604
+ def access_celestial_object(self) -> ostk.physics.environment.object.Celestial:
605
+ """
606
+ Access the celestial object.
607
+
608
+ Returns:
609
+ Celestial: The celestial object.
610
+ """
611
+ def access_kepler_model(self) -> ...:
612
+ """
613
+ Access the Kepler orbit model.
614
+
615
+ Returns:
616
+ Kepler: The Kepler orbit model.
617
+ """
618
+ def access_model(self) -> ...:
619
+ """
620
+ Access the orbit model.
621
+
622
+ Returns:
623
+ orbit.Model: The orbit model.
624
+ """
625
+ def access_propagated_model(self) -> ...:
626
+ """
627
+ Access the propagated orbit model.
628
+
629
+ Returns:
630
+ Propagated: The propagated orbit model.
631
+ """
632
+ def access_sgp4_model(self) -> ...:
633
+ """
634
+ Access the SGP4 orbit model.
635
+
636
+ Returns:
637
+ SGP4: The SGP4 orbit model.
638
+ """
639
+ def access_tabulated_model(self) -> ...:
640
+ """
641
+ Access the tabulated orbit model.
642
+
643
+ Returns:
644
+ Tabulated: The tabulated orbit model.
645
+ """
646
+ def get_orbital_frame(self, frame_type: Orbit.FrameType) -> ostk.physics.coordinate.Frame:
647
+ """
648
+ Get the orbital frame.
649
+
650
+ Args:
651
+ frame_type (Orbit::FrameType): The frame type.
652
+
653
+ Returns:
654
+ Frame: The orbital frame.
655
+ """
656
+ def get_pass_at(self, instant: ostk.physics.time.Instant) -> ...:
657
+ """
658
+ Get the pass at a given instant.
659
+
660
+ Args:
661
+ instant (Instant): The instant.
662
+
663
+ Returns:
664
+ ostk::astrodynamics::trajectory::orbit::Pass: The pass.
665
+ """
666
+ def get_pass_with_revolution_number(self, revolution_number: ostk.core.type.Integer, step_duration: ostk.physics.time.Duration = ...) -> ...:
667
+ """
668
+ Get the pass with a given revolution number.
669
+
670
+ Args:
671
+ revolution_number (int): The revolution number.
672
+ step_duration (Duration): The initial step duration used for the pass computation algorithm.
673
+
674
+ Returns:
675
+ Pass: The pass.
676
+ """
677
+ def get_passes_within_interval(self, interval: ostk.physics.time.Interval) -> list[...]:
678
+ """
679
+ Get the passes within a given interval.
680
+
681
+ Args:
682
+ interval (Interval): The interval.
683
+
684
+ Returns:
685
+ list[Pass]: The passes.
686
+ """
687
+ def get_revolution_number_at(self, instant: ostk.physics.time.Instant) -> ostk.core.type.Integer:
688
+ """
689
+ Get the revolution number at a given instant.
690
+
691
+ Args:
692
+ instant (Instant): The instant.
693
+
694
+ Returns:
695
+ int: The revolution number.
696
+ """
697
+ def is_defined(self) -> bool:
698
+ """
699
+ Check if the `Orbit` object is defined.
700
+
701
+ Returns:
702
+ bool: True if the `Orbit` object is defined, False otherwise.
703
+ """
704
+ class Propagator:
705
+ """
706
+
707
+ A `Propagator` that propagates the provided `State` using it's `NumericalSolver` under the set `Dynamics`.
708
+
709
+
710
+ """
711
+ __hash__: typing.ClassVar[None] = None
712
+ @staticmethod
713
+ @typing.overload
714
+ def default() -> Propagator:
715
+ """
716
+ Get the default propagator.
717
+
718
+ Returns:
719
+ Propagator: The default propagator.
720
+ """
721
+ @staticmethod
722
+ @typing.overload
723
+ def default(environment: ostk.physics.Environment) -> Propagator:
724
+ """
725
+ Get the default propagator for a given environment.
726
+
727
+ Args:
728
+ environment (Environment) The environment.
729
+
730
+ Returns:
731
+ Propagator: The default propagator for the given environment.
732
+ """
733
+ @staticmethod
734
+ def from_environment(numerical_solver: state.NumericalSolver, environment: ostk.physics.Environment) -> Propagator:
735
+ """
736
+ Create a propagator from an environment.
737
+
738
+ Args:
739
+ numerical_solver (NumericalSolver) The numerical solver.
740
+ environment (Environment) The environment.
741
+
742
+ Returns:
743
+ Propagator: The propagator.
744
+ """
745
+ def __eq__(self, arg0: Propagator) -> bool:
746
+ ...
747
+ @typing.overload
748
+ def __init__(self, numerical_solver: state.NumericalSolver, dynamics: list[...] = []) -> None:
749
+ """
750
+ Construct a new `Propagator` object.
751
+
752
+ Args:
753
+ numerical_solver (NumericalSolver) The numerical solver.
754
+ dynamics (list[Dynamics], optional) The dynamics.
755
+
756
+ Returns:
757
+ Propagator: The new `Propagator` object.
758
+ """
759
+ @typing.overload
760
+ def __init__(self, numerical_solver: state.NumericalSolver, dynamics: list[...], maneuvers: list[...], interpolation_type: ostk.mathematics.curve_fitting.Interpolator.Type = ...) -> None:
761
+ """
762
+ Construct a new `Propagator` object with maneuvers.
763
+
764
+ Args:
765
+ numerical_solver (NumericalSolver) The numerical solver.
766
+ dynamics (list[Dynamics]) The dynamics.
767
+ maneuvers (list[Maneuver]) The maneuvers.
768
+ interpolation_type (Interpolator.Type, optional) The interpolation type. Defaults to Barycentric Rational.
769
+
770
+ Returns:
771
+ Propagator: The new `Propagator` object.
772
+ """
773
+ def __ne__(self, arg0: Propagator) -> bool:
774
+ ...
775
+ def __repr__(self) -> str:
776
+ ...
777
+ def __str__(self) -> str:
778
+ ...
779
+ def access_numerical_solver(self) -> state.NumericalSolver:
780
+ """
781
+ Access the numerical solver.
782
+
783
+ Returns:
784
+ NumericalSolver&: The numerical solver.
785
+ """
786
+ def add_dynamics(self, dynamics: typing.Any) -> None:
787
+ """
788
+ Add dynamics.
789
+
790
+ Args:
791
+ dynamics (Dynamics) The dynamics.
792
+ """
793
+ def add_maneuver(self, maneuver: typing.Any, interpolation_type: ostk.mathematics.curve_fitting.Interpolator.Type = ...) -> None:
794
+ """
795
+ Add a maneuver.
796
+
797
+ Args:
798
+ maneuver (Maneuver) The maneuver.
799
+ interpolation_type (Interpolator.Type, optional) The interpolation type. Defaults to Barycentric Rational.
800
+ """
801
+ def calculate_state_at(self, state: State, instant: ostk.physics.time.Instant) -> State:
802
+ """
803
+ Calculate the state at a given instant.
804
+
805
+ Args:
806
+ state (State) The state.
807
+ instant (Instant) The instant.
808
+
809
+ Returns:
810
+ State: The state at the given instant.
811
+ """
812
+ def calculate_state_to_condition(self, state: State, instant: ostk.physics.time.Instant, event_condition: typing.Any) -> state.NumericalSolver.ConditionSolution:
813
+ """
814
+ Calculate the state up to a given event condition.
815
+
816
+ Args:
817
+ state (State) The state.
818
+ instant (Instant) The instant.
819
+ event_condition (EventCondition) The event condition.
820
+
821
+ Returns:
822
+ State: The state up to the given event condition.
823
+ """
824
+ def calculate_states_at(self, state: State, instants: list[ostk.physics.time.Instant]) -> list[State]:
825
+ """
826
+ Calculate the states at given instants. It is more performant than looping `calculate_state_at` for multiple instants.
827
+
828
+ Args:
829
+ state (State) The state.
830
+ instants (list[Instant]) The instants.
831
+
832
+ Returns:
833
+ list[State]: The states at the given instants.
834
+ """
835
+ def clear_dynamics(self) -> None:
836
+ """
837
+ Clear the dynamics.
838
+ """
839
+ def get_dynamics(self) -> list[...]:
840
+ """
841
+ Get the dynamics.
842
+
843
+ Returns:
844
+ list[Dynamics]: The dynamics.
845
+ """
846
+ def get_number_of_coordinates(self) -> int:
847
+ """
848
+ Get the number of coordinates.
849
+
850
+ Returns:
851
+ int: The number of coordinates.
852
+ """
853
+ def is_defined(self) -> bool:
854
+ """
855
+ Check if the propagator is defined.
856
+
857
+ Returns:
858
+ bool: True if the propagator is defined, False otherwise.
859
+ """
860
+ def set_dynamics(self, dynamics: list[...]) -> None:
861
+ """
862
+ Set the dynamics.
863
+
864
+ Args:
865
+ dynamics (list[Dynamics]) The dynamics.
866
+ """
867
+ class Segment:
868
+ """
869
+
870
+ A `Segment` that can be solved provided an initial `State` and termination `Event Condition`.
871
+
872
+
873
+ """
874
+ class ManeuverConstraints:
875
+ """
876
+
877
+ Constraints for maneuver segments.
878
+
879
+ """
880
+ @typing.overload
881
+ def __init__(self) -> None:
882
+ """
883
+ Default constructor. All durations are undefined and strategy is Fail.
884
+ """
885
+ @typing.overload
886
+ def __init__(self, minimum_duration: ostk.physics.time.Duration = ..., maximum_duration: ostk.physics.time.Duration = ..., minimum_separation: ostk.physics.time.Duration = ..., maximum_duration_strategy: Segment.MaximumManeuverDurationViolationStrategy = ...) -> None:
887
+ """
888
+ Construct ManeuverConstraints with specific parameters.
889
+
890
+ Args:
891
+ minimum_duration (Duration, optional): The minimum duration for a maneuver. Defaults to Duration.undefined().
892
+ maximum_duration (Duration, optional): The maximum duration for a maneuver. Defaults to Duration.undefined().
893
+ minimum_separation (Duration, optional): The minimum separation between maneuvers. Defaults to Duration.undefined().
894
+ maximum_duration_strategy (MaximumManeuverDurationViolationStrategy, optional): The strategy when maximum duration is violated. Defaults to Segment.MaximumManeuverDurationViolationStrategy.Fail.
895
+ """
896
+ def __repr__(self) -> str:
897
+ ...
898
+ def __str__(self) -> str:
899
+ ...
900
+ def interval_has_valid_maximum_duration(self, interval: ostk.physics.time.Interval) -> bool:
901
+ """
902
+ Check if the interval has a valid maximum duration.
903
+ """
904
+ def interval_has_valid_minimum_duration(self, interval: ostk.physics.time.Interval) -> bool:
905
+ """
906
+ Check if the interval has a valid minimum duration.
907
+ """
908
+ def is_defined(self) -> bool:
909
+ """
910
+ Check if any of the constraints are defined.
911
+
912
+ Returns:
913
+ bool: True if at least one constraint is defined, False otherwise.
914
+ """
915
+ @property
916
+ def maximum_duration(self) -> ostk.physics.time.Duration:
917
+ """
918
+ The maximum duration for a maneuver.
919
+
920
+ :type: Duration
921
+ """
922
+ @maximum_duration.setter
923
+ def maximum_duration(self, arg0: ostk.physics.time.Duration) -> None:
924
+ ...
925
+ @property
926
+ def maximum_duration_strategy(self) -> Segment.MaximumManeuverDurationViolationStrategy:
927
+ """
928
+ The strategy to use when a maneuver exceeds the maximum duration.
929
+
930
+ :type: MaximumManeuverDurationViolationStrategy
931
+ """
932
+ @maximum_duration_strategy.setter
933
+ def maximum_duration_strategy(self, arg0: Segment.MaximumManeuverDurationViolationStrategy) -> None:
934
+ ...
935
+ @property
936
+ def minimum_duration(self) -> ostk.physics.time.Duration:
937
+ """
938
+ The minimum duration for a maneuver.
939
+
940
+ :type: Duration
941
+ """
942
+ @minimum_duration.setter
943
+ def minimum_duration(self, arg0: ostk.physics.time.Duration) -> None:
944
+ ...
945
+ @property
946
+ def minimum_separation(self) -> ostk.physics.time.Duration:
947
+ """
948
+ The minimum separation between maneuvers.
949
+
950
+ :type: Duration
951
+ """
952
+ @minimum_separation.setter
953
+ def minimum_separation(self, arg0: ostk.physics.time.Duration) -> None:
954
+ ...
955
+ class MaximumManeuverDurationViolationStrategy:
956
+ """
957
+
958
+ Strategy to use when a maneuver exceeds the maximum duration constraint.
959
+
960
+ Fail: Will throw a RuntimeError if a maneuver exceeds the maximum duration.
961
+ Skip: The maneuver will be skipped entirely.
962
+ TruncateEnd: The maneuver will be shortened to the maximum duration, truncating the end segment.
963
+ TruncateStart: The maneuver will be shortened to the maximum duration, truncating the start segment.
964
+ Center: The maneuver will be shortened to the maximum duration, truncating the edges, keeping the centered part of the maneuver.
965
+
966
+ Proposed maneuver: [--------------------|------------]
967
+ TruncateEnd: [--------------------]
968
+ TruncateStart: [--------------------]
969
+ Center: [--------------------]
970
+
971
+
972
+ Members:
973
+
974
+ Fail : Will throw an exception if a maneuver exceeds the maximum duration.
975
+
976
+ Skip : The maneuver will be skipped entirely.
977
+
978
+ TruncateEnd : The maneuver will be shortened to the maximum duration, truncating the end segment.
979
+
980
+ TruncateStart : The maneuver will be shortened to the maximum duration, truncating the start segment.
981
+
982
+ Center : The maneuver will be shortened to the maximum duration, truncating the edges, keeping the centered part of the maneuver.
983
+ """
984
+ Center: typing.ClassVar[Segment.MaximumManeuverDurationViolationStrategy] # value = <MaximumManeuverDurationViolationStrategy.Center: 4>
985
+ Fail: typing.ClassVar[Segment.MaximumManeuverDurationViolationStrategy] # value = <MaximumManeuverDurationViolationStrategy.Fail: 0>
986
+ Skip: typing.ClassVar[Segment.MaximumManeuverDurationViolationStrategy] # value = <MaximumManeuverDurationViolationStrategy.Skip: 1>
987
+ TruncateEnd: typing.ClassVar[Segment.MaximumManeuverDurationViolationStrategy] # value = <MaximumManeuverDurationViolationStrategy.TruncateEnd: 2>
988
+ TruncateStart: typing.ClassVar[Segment.MaximumManeuverDurationViolationStrategy] # value = <MaximumManeuverDurationViolationStrategy.TruncateStart: 3>
989
+ __members__: typing.ClassVar[dict[str, Segment.MaximumManeuverDurationViolationStrategy]] # value = {'Fail': <MaximumManeuverDurationViolationStrategy.Fail: 0>, 'Skip': <MaximumManeuverDurationViolationStrategy.Skip: 1>, 'TruncateEnd': <MaximumManeuverDurationViolationStrategy.TruncateEnd: 2>, 'TruncateStart': <MaximumManeuverDurationViolationStrategy.TruncateStart: 3>, 'Center': <MaximumManeuverDurationViolationStrategy.Center: 4>}
990
+ def __eq__(self, other: typing.Any) -> bool:
991
+ ...
992
+ def __getstate__(self) -> int:
993
+ ...
994
+ def __hash__(self) -> int:
995
+ ...
996
+ def __index__(self) -> int:
997
+ ...
998
+ def __init__(self, value: int) -> None:
999
+ ...
1000
+ def __int__(self) -> int:
1001
+ ...
1002
+ def __ne__(self, other: typing.Any) -> bool:
1003
+ ...
1004
+ def __repr__(self) -> str:
1005
+ ...
1006
+ def __setstate__(self, state: int) -> None:
1007
+ ...
1008
+ def __str__(self) -> str:
1009
+ ...
1010
+ @property
1011
+ def name(self) -> str:
1012
+ ...
1013
+ @property
1014
+ def value(self) -> int:
1015
+ ...
1016
+ class Solution:
1017
+ """
1018
+
1019
+ The Solution object returned when a `Segment` is solved.
1020
+
1021
+
1022
+ """
1023
+ def __init__(self, name: ostk.core.type.String, dynamics: list[...], states: list[State], condition_is_satisfied: bool, segment_type: Segment.Type) -> None:
1024
+ """
1025
+ Construct a Segment Solution.
1026
+
1027
+ Args:
1028
+ name (str): The name of the segment.
1029
+ dynamics (list[Dynamics]): The dynamics.
1030
+ states (list[State]): The states.
1031
+ condition_is_satisfied (bool): Whether the event condition is satisfied.
1032
+ segment_type (Type): The type of the segment.
1033
+ """
1034
+ def __repr__(self) -> str:
1035
+ ...
1036
+ def __str__(self) -> str:
1037
+ ...
1038
+ def access_end_instant(self) -> ostk.physics.time.Instant:
1039
+ """
1040
+ Get the instant at which the segment ends.
1041
+
1042
+ Returns:
1043
+ Instant: The instant at which the segment ends.
1044
+ """
1045
+ def access_start_instant(self) -> ostk.physics.time.Instant:
1046
+ """
1047
+ Get the instant at which the segment starts.
1048
+
1049
+ Returns:
1050
+ Instant: The instant at which the segment starts.
1051
+ """
1052
+ def calculate_states_at(self, instants: list[ostk.physics.time.Instant], numerical_solver: state.NumericalSolver) -> list[State]:
1053
+ """
1054
+ Calculate the states in this segment's solution at the given instants.
1055
+
1056
+ Args:
1057
+ instants (list[Instant]): The instants at which the states will be calculated.
1058
+ numerical_solver (NumericalSolver): The numerical solver used to calculate the states.
1059
+
1060
+ Returns:
1061
+ list[State]: The states at the provided instants.
1062
+ """
1063
+ def compute_delta_mass(self) -> ostk.physics.unit.Mass:
1064
+ """
1065
+ Compute the delta mass.
1066
+
1067
+ Returns:
1068
+ Mass: The delta mass.
1069
+ """
1070
+ def compute_delta_v(self, specific_impulse: ostk.core.type.Real) -> ostk.core.type.Real:
1071
+ """
1072
+ Compute the delta V.
1073
+
1074
+ Args:
1075
+ specific_impulse (float): The specific impulse.
1076
+
1077
+ Returns:
1078
+ float: The delta V (m/s).
1079
+ """
1080
+ def extract_maneuvers(self, frame: ostk.physics.coordinate.Frame) -> list[...]:
1081
+ """
1082
+ Extract maneuvers from the (maneuvering) segment.
1083
+
1084
+ Returns:
1085
+ list[Maneuver]: The list of maneuvers.
1086
+ """
1087
+ def get_all_dynamics_contributions(self, frame: ostk.physics.coordinate.Frame) -> dict[..., numpy.ndarray[numpy.float64[m, n]]]:
1088
+ """
1089
+ Compute the contributions of all segment's dynamics in the provided frame for all states assocated with the segment.
1090
+
1091
+ Args:
1092
+ frame (Frame): The frame.
1093
+
1094
+ Returns:
1095
+ dict[Dynamics, np.ndarray]: The list of matrices with individual dynamics contributions.
1096
+ """
1097
+ def get_dynamics_acceleration_contribution(self, dynamics: typing.Any, frame: ostk.physics.coordinate.Frame) -> numpy.ndarray[numpy.float64[m, n]]:
1098
+ """
1099
+ Compute the contribution of the provided dynamics to the acceleration in the provided frame for all states associated with the segment.
1100
+
1101
+ Args:
1102
+ dynamics (Dynamics): The dynamics.
1103
+ frame (Frame): The frame.
1104
+
1105
+ Returns:
1106
+ np.ndarray: The matrix of dynamics contributions to acceleration.
1107
+ """
1108
+ def get_dynamics_contribution(self, dynamics: typing.Any, frame: ostk.physics.coordinate.Frame, coordinate_subsets: list[state.CoordinateSubset] = []) -> numpy.ndarray[numpy.float64[m, n]]:
1109
+ """
1110
+ Compute the contribution of the provided dynamics in the provided frame for all states associated with the segment.
1111
+
1112
+ Args:
1113
+ dynamics (Dynamics): The dynamics.
1114
+ frame (Frame): The frame.
1115
+ coordinate_subsets (list[CoordinateSubset], optional): A subset of the dynamics writing coordinate subsets to consider.
1116
+
1117
+ Returns:
1118
+ MatrixXd: The matrix of dynamics contributions for the selected coordinate subsets of the dynamics.
1119
+ """
1120
+ def get_final_mass(self) -> ostk.physics.unit.Mass:
1121
+ """
1122
+ Get the final mass.
1123
+
1124
+ Returns:
1125
+ Mass: The final mass.
1126
+ """
1127
+ def get_initial_mass(self) -> ostk.physics.unit.Mass:
1128
+ """
1129
+ Get the initial mass.
1130
+
1131
+ Returns:
1132
+ Mass: The initial mass.
1133
+ """
1134
+ def get_interval(self) -> ostk.physics.time.Interval:
1135
+ """
1136
+ Get the time interval of the solution.
1137
+
1138
+ Returns:
1139
+ Interval: The interval.
1140
+ """
1141
+ def get_propagation_duration(self) -> ostk.physics.time.Duration:
1142
+ """
1143
+ Get the propagation duration.
1144
+
1145
+ Returns:
1146
+ Duration: The propagation duration.
1147
+ """
1148
+ def get_thruster_dynamics(self) -> ...:
1149
+ """
1150
+ Get the thruster dynamics from the solution.
1151
+
1152
+ Returns:
1153
+ Thruster: The thruster dynamics.
1154
+ """
1155
+ @property
1156
+ def condition_is_satisfied(self) -> bool:
1157
+ """
1158
+ Whether the event condition is satisfied.
1159
+
1160
+ :type: bool
1161
+ """
1162
+ @property
1163
+ def dynamics(self) -> list[...]:
1164
+ """
1165
+ The dynamics.
1166
+
1167
+ :type: Dynamics
1168
+ """
1169
+ @property
1170
+ def name(self) -> ostk.core.type.String:
1171
+ """
1172
+ The name of the segment.
1173
+
1174
+ :type: str
1175
+ """
1176
+ @property
1177
+ def segment_type(self) -> Segment.Type:
1178
+ """
1179
+ The type of the segment.
1180
+
1181
+ :type: Type
1182
+ """
1183
+ @property
1184
+ def states(self) -> list[State]:
1185
+ """
1186
+ The states.
1187
+
1188
+ :type: list[State]
1189
+ """
1190
+ class Type:
1191
+ """
1192
+
1193
+ Segment type.
1194
+
1195
+
1196
+ Members:
1197
+
1198
+ Coast : Coast
1199
+
1200
+ Maneuver : Maneuver
1201
+ """
1202
+ Coast: typing.ClassVar[Segment.Type] # value = <Type.Coast: 0>
1203
+ Maneuver: typing.ClassVar[Segment.Type] # value = <Type.Maneuver: 1>
1204
+ __members__: typing.ClassVar[dict[str, Segment.Type]] # value = {'Coast': <Type.Coast: 0>, 'Maneuver': <Type.Maneuver: 1>}
1205
+ def __eq__(self, other: typing.Any) -> bool:
1206
+ ...
1207
+ def __getstate__(self) -> int:
1208
+ ...
1209
+ def __hash__(self) -> int:
1210
+ ...
1211
+ def __index__(self) -> int:
1212
+ ...
1213
+ def __init__(self, value: int) -> None:
1214
+ ...
1215
+ def __int__(self) -> int:
1216
+ ...
1217
+ def __ne__(self, other: typing.Any) -> bool:
1218
+ ...
1219
+ def __repr__(self) -> str:
1220
+ ...
1221
+ def __setstate__(self, state: int) -> None:
1222
+ ...
1223
+ def __str__(self) -> str:
1224
+ ...
1225
+ @property
1226
+ def name(self) -> str:
1227
+ ...
1228
+ @property
1229
+ def value(self) -> int:
1230
+ ...
1231
+ @staticmethod
1232
+ def coast(name: ostk.core.type.String, event_condition: typing.Any, dynamics: list[...], numerical_solver: state.NumericalSolver) -> Segment:
1233
+ """
1234
+ Create a coast segment.
1235
+
1236
+ Args:
1237
+ name (str): The name of the segment.
1238
+ event_condition (EventCondition): The event condition.
1239
+ dynamics (Dynamics): The dynamics.
1240
+ numerical_solver (NumericalSolver): The numerical solver.
1241
+
1242
+ Returns:
1243
+ Segment: The coast segment.
1244
+ """
1245
+ @staticmethod
1246
+ def constant_local_orbital_frame_direction_maneuver(name: ostk.core.type.String, event_condition: typing.Any, thruster_dynamics: typing.Any, dynamics: list[...], numerical_solver: state.NumericalSolver, local_orbital_frame_factory: LocalOrbitalFrameFactory, maximum_allowed_angular_offset: ostk.physics.unit.Angle = ..., maneuver_constraints: Segment.ManeuverConstraints = ...) -> Segment:
1247
+ """
1248
+ Create a maneuvering segment that produces maneuvers with a constant direction in the local orbital frame.
1249
+
1250
+ The provided thruster dynamics are used to solve the segment at first. The maneuvers produced by this segement solution
1251
+ are then used to create a new thruster dynamics with a constant direction in the local orbital frame. This new thruster dynamics
1252
+ is then used to actually solve the segment.
1253
+
1254
+ If defined, a runtime error will be thrown if the maximum allowed angular offset between the original thruster dynamics
1255
+ and the mean thrust direction is violated.
1256
+
1257
+ Args:
1258
+ name (str): The name of the segment.
1259
+ event_condition (EventCondition): The event condition.
1260
+ thruster_dynamics (ThrusterDynamics): The thruster dynamics.
1261
+ dynamics (Dynamics): The dynamics.
1262
+ numerical_solver (NumericalSolver): The numerical solver.
1263
+ local_orbital_frame_factory (LocalOrbitalFrameFactory): The local orbital frame factory.
1264
+ maximum_allowed_angular_offset (Angle, optional): The maximum allowed angular offset to consider (if any). Defaults to Angle.undefined().
1265
+ maneuver_constraints (ManeuverConstraints, optional): The maneuver constraints. Defaults to empty constraints.
1266
+
1267
+ Returns:
1268
+ Segment: The maneuver segment.
1269
+ """
1270
+ @staticmethod
1271
+ def maneuver(name: ostk.core.type.String, event_condition: typing.Any, thruster_dynamics: typing.Any, dynamics: list[...], numerical_solver: state.NumericalSolver, maneuver_constraints: Segment.ManeuverConstraints = ...) -> Segment:
1272
+ """
1273
+ Create a maneuver segment.
1274
+
1275
+ Args:
1276
+ name (str): The name of the segment.
1277
+ event_condition (EventCondition): The event condition.
1278
+ thruster_dynamics (ThrusterDynamics): The thruster dynamics.
1279
+ dynamics (Dynamics): The dynamics.
1280
+ numerical_solver (NumericalSolver): The numerical solver.
1281
+ maneuver_constraints (ManeuverConstraints, optional): The maneuver constraints. Defaults to empty constraints.
1282
+
1283
+ Returns:
1284
+ Segment: The maneuver segment.
1285
+ """
1286
+ def __repr__(self) -> str:
1287
+ ...
1288
+ def __str__(self) -> str:
1289
+ ...
1290
+ def get_dynamics(self) -> list[...]:
1291
+ """
1292
+ Get the dynamics.
1293
+
1294
+ Returns:
1295
+ Dynamics: The dynamics.
1296
+ """
1297
+ def get_event_condition(self) -> ...:
1298
+ """
1299
+ Get the event condition.
1300
+
1301
+ Returns:
1302
+ EventCondition: The event condition.
1303
+ """
1304
+ def get_free_dynamics(self) -> list[...]:
1305
+ """
1306
+ Get the free dynamics array, devoid of any thruster dynamics.
1307
+
1308
+ Returns:
1309
+ list[Dynamics]: The free dynamics array.
1310
+ """
1311
+ def get_maneuver_constraints(self) -> Segment.ManeuverConstraints:
1312
+ """
1313
+ Get the maneuver constraints.
1314
+
1315
+ Returns:
1316
+ ManeuverConstraints: The maneuver constraints.
1317
+ """
1318
+ def get_name(self) -> ostk.core.type.String:
1319
+ """
1320
+ Get the name of the segment.
1321
+
1322
+ Returns:
1323
+ str: The name of the segment.
1324
+ """
1325
+ def get_numerical_solver(self) -> state.NumericalSolver:
1326
+ """
1327
+ Get the numerical solver.
1328
+
1329
+ Returns:
1330
+ NumericalSolver: The numerical solver.
1331
+ """
1332
+ def get_thruster_dynamics(self) -> ...:
1333
+ """
1334
+ Get the thruster dynamics.
1335
+
1336
+ Returns:
1337
+ Thruster: The thruster dynamics.
1338
+ """
1339
+ def get_type(self) -> Segment.Type:
1340
+ """
1341
+ Get the type of the segment.
1342
+
1343
+ Returns:
1344
+ Type: The type of the segment.
1345
+ """
1346
+ def solve(self, state: State, maximum_propagation_duration: ostk.physics.time.Duration = ..., previous_maneuver_interval: ostk.physics.time.Interval = ...) -> Segment.Solution:
1347
+ """
1348
+ Solve the segment until its event condition is satisfied or the maximum propagation duration is reached.
1349
+
1350
+ Args:
1351
+ state (State): The state.
1352
+ maximum_propagation_duration (Duration, optional): The maximum propagation duration. Defaults to 30 days.
1353
+ previous_maneuver_interval (Interval, optional): The previous maneuver interval prior to this segment. Defaults to Interval.undefined().
1354
+
1355
+ Returns:
1356
+ SegmentSolution: The segment solution.
1357
+ """
1358
+ class Sequence:
1359
+ """
1360
+
1361
+ A mission `Sequence`. Consists of a list of `Segment` objects and various configuration parameters.
1362
+
1363
+
1364
+ """
1365
+ class Solution:
1366
+ """
1367
+
1368
+ The Solution object that is returned when a `Sequence` is solved.
1369
+
1370
+
1371
+ """
1372
+ def __init__(self, segment_solutions: list[Segment.Solution], execution_is_complete: bool) -> None:
1373
+ """
1374
+ Construct a new `Sequence.Solution` object.
1375
+
1376
+ Args:
1377
+ segment_solutions (list[Segment.Solution]): The segment solutions.
1378
+ execution_is_complete (bool): Whether the execution is complete.
1379
+
1380
+ Returns:
1381
+ Sequence: The new `Sequence.Solution` object.
1382
+ """
1383
+ def __repr__(self) -> str:
1384
+ ...
1385
+ def __str__(self) -> str:
1386
+ ...
1387
+ def access_end_instant(self) -> ostk.physics.time.Instant:
1388
+ """
1389
+ Get the instant at which the access ends.
1390
+
1391
+ Returns:
1392
+ Instant: The instant at which the access ends.
1393
+ """
1394
+ def access_start_instant(self) -> ostk.physics.time.Instant:
1395
+ """
1396
+ Get the instant at which the access starts.
1397
+
1398
+ Returns:
1399
+ Instant: The instant at which the access starts.
1400
+ """
1401
+ def calculate_states_at(self, instants: list[ostk.physics.time.Instant], numerical_solver: state.NumericalSolver) -> list[State]:
1402
+ """
1403
+ Calculate states in this sequence's solution at provided instants.
1404
+
1405
+ Args:
1406
+ instants (list[Instant]): The instants at which the states will be calculated.
1407
+ numerical_solver (NumericalSolver): The numerical solver used to calculate the states.
1408
+
1409
+ Returns:
1410
+ list[State]: The states at the provided instants.
1411
+ """
1412
+ def compute_delta_mass(self) -> ostk.physics.unit.Mass:
1413
+ """
1414
+ Compute the delta mass.
1415
+
1416
+ Returns:
1417
+ float: The delta mass.
1418
+ """
1419
+ def compute_delta_v(self, specific_impulse: ostk.core.type.Real) -> ostk.core.type.Real:
1420
+ """
1421
+ Compute the delta V.
1422
+
1423
+ Args:
1424
+ specific_impulse (float): The specific impulse.
1425
+
1426
+ Returns:
1427
+ float: The delta V (m/s).
1428
+ """
1429
+ def extract_maneuvers(self, frame: ostk.physics.coordinate.Frame) -> list[...]:
1430
+ """
1431
+ Extract maneuvers from all segment solutions.
1432
+
1433
+ Args:
1434
+ frame (Frame): The frame.
1435
+
1436
+ Returns:
1437
+ list[Maneuver]: The list of maneuvers.
1438
+ """
1439
+ def get_final_mass(self) -> ostk.physics.unit.Mass:
1440
+ """
1441
+ Get the final mass.
1442
+
1443
+ Returns:
1444
+ float: The final mass.
1445
+ """
1446
+ def get_initial_mass(self) -> ostk.physics.unit.Mass:
1447
+ """
1448
+ Get the initial mass.
1449
+
1450
+ Returns:
1451
+ float: The initial mass.
1452
+ """
1453
+ def get_interval(self) -> ostk.physics.time.Interval:
1454
+ """
1455
+ Get the interval.
1456
+
1457
+ Returns:
1458
+ Interval: The interval.
1459
+ """
1460
+ def get_propagation_duration(self) -> ostk.physics.time.Duration:
1461
+ """
1462
+ Get the propagation duration.
1463
+
1464
+ Returns:
1465
+ Duration: The propagation duration.
1466
+ """
1467
+ def get_states(self) -> list[State]:
1468
+ """
1469
+ Get the states.
1470
+
1471
+ Returns:
1472
+ list[State]: The states.
1473
+ """
1474
+ @property
1475
+ def execution_is_complete(self) -> bool:
1476
+ """
1477
+ Whether the execution is complete.
1478
+
1479
+ :type: bool
1480
+ """
1481
+ @property
1482
+ def segment_solutions(self) -> list[Segment.Solution]:
1483
+ """
1484
+ The solutions for each segment.
1485
+
1486
+ :type: list[SegmentSolution]
1487
+ """
1488
+ def __init__(self: typing.Sequence, segments: list[Segment] = [], numerical_solver: state.NumericalSolver = ..., dynamics: list[...] = [], maximum_propagation_duration: ostk.physics.time.Duration = ..., verbosity: int = 1) -> None:
1489
+ """
1490
+ Construct a new `Sequence` object.
1491
+
1492
+ Args:
1493
+ segments (list[Segment], optional): The segments. Defaults to an empty list.
1494
+ numerical_solver (NumericalSolver, optional): The numerical solver. Defaults to the default conditional numerical solver.
1495
+ dynamics (list[Dynamics], optional): The dynamics. Defaults to an empty list.
1496
+ maximum_propagation_duration (Duration, optional): The maximum propagation duration. Defaults to 30 days.
1497
+ verbosity (int, optional): The verbosity level. Defaults to 1.
1498
+
1499
+ Returns:
1500
+ Sequence: The new `Sequence` object.
1501
+ """
1502
+ def __repr__(self: typing.Sequence) -> str:
1503
+ ...
1504
+ def __str__(self: typing.Sequence) -> str:
1505
+ ...
1506
+ def add_coast_segment(self: typing.Sequence, event_condition: typing.Any) -> None:
1507
+ """
1508
+ Add a coast segment.
1509
+
1510
+ Args:
1511
+ event_condition (EventCondition): The event condition.
1512
+ """
1513
+ def add_maneuver_segment(self: typing.Sequence, event_condition: typing.Any, thruster_dynamics: typing.Any) -> None:
1514
+ """
1515
+ Add a maneuver segment.
1516
+
1517
+ Args:
1518
+ event_condition (EventCondition): The event condition.
1519
+ thruster_dynamics (Thruster): The thruster dynamics.
1520
+ """
1521
+ def add_segment(self: typing.Sequence, segment: Segment) -> None:
1522
+ """
1523
+ Add a segment.
1524
+
1525
+ Args:
1526
+ segment (Segment): The segment.
1527
+ """
1528
+ def add_segments(self: typing.Sequence, segments: list[Segment]) -> None:
1529
+ """
1530
+ Add segments.
1531
+
1532
+ Args:
1533
+ segments (list[Segment]): The segments.
1534
+ """
1535
+ def get_dynamics(self: typing.Sequence) -> list[...]:
1536
+ """
1537
+ Get the dynamics.
1538
+
1539
+ Returns:
1540
+ list[Dynamics]: The dynamics.
1541
+ """
1542
+ def get_maximum_propagation_duration(self: typing.Sequence) -> ostk.physics.time.Duration:
1543
+ """
1544
+ Get the maximum propagation duration.
1545
+
1546
+ Returns:
1547
+ Duration: The maximum propagation duration.
1548
+ """
1549
+ def get_numerical_solver(self: typing.Sequence) -> state.NumericalSolver:
1550
+ """
1551
+ Get the numerical solver.
1552
+
1553
+ Returns:
1554
+ NumericalSolver: The numerical solver.
1555
+ """
1556
+ def get_segments(self: typing.Sequence) -> list[Segment]:
1557
+ """
1558
+ Get the segments.
1559
+
1560
+ Returns:
1561
+ list[Segment]: The segments.
1562
+ """
1563
+ def solve(self: typing.Sequence, state: State, repetition_count: int = 1) -> Sequence.Solution:
1564
+ """
1565
+ Solve the sequence.
1566
+
1567
+ Args:
1568
+ state (State): The state.
1569
+ repetition_count (int, optional): The repetition count. Defaults to 1.
1570
+
1571
+ Returns:
1572
+ SequenceSolution: The sequence solution.
1573
+ """
1574
+ def solve_to_condition(self: typing.Sequence, state: State, event_condition: typing.Any, maximum_propagation_duration_limit: ostk.physics.time.Duration = ...) -> Sequence.Solution:
1575
+ """
1576
+ Solve the sequence until the event condition is met.
1577
+
1578
+ In the case that the event condition is not met due to maximum propagation duration limit,
1579
+ it will return the `SequenceSolution` with `executionIsComplete` set to `False`.
1580
+
1581
+ Args:
1582
+ state (State): The state.
1583
+ event_condition (EventCondition): The event condition.
1584
+ maximum_propagation_duration_limit (Duration, optional): The maximum propagation duration limit for the sequence. Defaults to 30 days.
1585
+
1586
+ Returns:
1587
+ SequenceSolution: The sequence solution.
1588
+ """
1589
+ class State:
1590
+ """
1591
+
1592
+ This class represents the physical state of an object.
1593
+
1594
+
1595
+ """
1596
+ __hash__: typing.ClassVar[None] = None
1597
+ @staticmethod
1598
+ def from_dict(data: dict) -> State:
1599
+ """
1600
+
1601
+ Create a State from a dictionary.
1602
+
1603
+ Note: Implicit assumption that ECEF = ITRF, and ECI = GCRF.
1604
+
1605
+ The dictionary must contain the following:
1606
+ - 'timestamp': The timestamp of the state.
1607
+ - 'r_ITRF_x'/'rx'/'rx_eci'/'rx_ecef': The x-coordinate of the position.
1608
+ - 'r_ITRF_y'/'ry'/'ry_eci'/'ry_ecef': The y-coordinate of the position.
1609
+ - 'r_ITRF_z'/'rz'/'rz_eci'/'rz_ecef': The z-coordinate of the position.
1610
+ - 'v_ITRF_x'/'vx'/'vx_eci'/'vx_ecef': The x-coordinate of the velocity.
1611
+ - 'v_ITRF_y'/'vy'/'vy_eci'/'vy_ecef': The y-coordinate of the velocity.
1612
+ - 'v_ITRF_z'/'vz'/'vz_eci'/'vz_ecef': The z-coordinate of the velocity.
1613
+ - 'frame': The frame of the state. Required if 'rx', 'ry', 'rz', 'vx', 'vy', 'vz' are provided.
1614
+ - 'q_B_ECI_x': The x-coordinate of the quaternion. Optional.
1615
+ - 'q_B_ECI_y': The y-coordinate of the quaternion. Optional.
1616
+ - 'q_B_ECI_z': The z-coordinate of the quaternion. Optional.
1617
+ - 'q_B_ECI_s': The s-coordinate of the quaternion. Optional.
1618
+ - 'w_B_ECI_in_B_x': The x-coordinate of the angular velocity. Optional.
1619
+ - 'w_B_ECI_in_B_y': The y-coordinate of the angular velocity. Optional.
1620
+ - 'w_B_ECI_in_B_z': The z-coordinate of the angular velocity. Optional.
1621
+ - 'drag_coefficient'/'cd': The drag coefficient. Optional.
1622
+ - 'cross_sectional_area'/'surface_area': The cross-sectional area. Optional.
1623
+ - 'mass': The mass. Optional.
1624
+ - 'ballistic_coefficient'/'bc': The ballistic coefficient. Optional.
1625
+
1626
+ Args:
1627
+ data (dict): The dictionary.
1628
+
1629
+ Returns:
1630
+ State: The State.
1631
+
1632
+ """
1633
+ @staticmethod
1634
+ def template(frame: ostk.physics.coordinate.Frame, coordinate_subsets: list) -> type:
1635
+ """
1636
+
1637
+ Emit a custom class type for States. This is meta-programming syntactic sugar on top of the StateBuilder class.
1638
+
1639
+ StateType = State.template(frame, coordinate_subsets)
1640
+ state = StateType(instant, coordinates)
1641
+
1642
+ is equivalent to
1643
+
1644
+ state_builder = StateBuilder(frame, coordinate_subsets)
1645
+ state = state_builder.build(instant, coordinates)
1646
+
1647
+ """
1648
+ @staticmethod
1649
+ def undefined() -> State:
1650
+ """
1651
+ Get an undefined state.
1652
+
1653
+ Returns:
1654
+ State: An undefined state.
1655
+ """
1656
+ def __add__(self, arg0: State) -> State:
1657
+ ...
1658
+ def __eq__(self, arg0: State) -> bool:
1659
+ ...
1660
+ @typing.overload
1661
+ def __init__(self, instant: ostk.physics.time.Instant, position: ostk.physics.coordinate.Position, velocity: ostk.physics.coordinate.Velocity) -> None:
1662
+ """
1663
+ Utility constructor for Position/Velocity only.
1664
+
1665
+ Args:
1666
+ instant (Instant): An instant
1667
+ position (Position): The cartesian position at the instant
1668
+ velocity (Velocity): The cartesian velocity at the instant
1669
+ """
1670
+ @typing.overload
1671
+ def __init__(self, instant: ostk.physics.time.Instant, position: ostk.physics.coordinate.Position, velocity: ostk.physics.coordinate.Velocity, attitude: ostk.mathematics.geometry.d3.transformation.rotation.Quaternion, angular_velocity: numpy.ndarray[numpy.float64[3, 1]], attitude_frame: ostk.physics.coordinate.Frame) -> None:
1672
+ """
1673
+ Utility constructor for Position/Velocity/Attitude/Angular velocity.
1674
+
1675
+ Args:
1676
+ instant (Instant): An instant
1677
+ position (Position): The cartesian position at the instant
1678
+ velocity (Velocity): The cartesian velocity at the instant
1679
+ attitude (Quaternion): The attitude at the instant, representing the rotation required to go from the attitude reference frame to the satellite body frame
1680
+ angular_velocity (numpy.ndarray): The angular velocity at the instant, representing the angular velocity of the satellite body frame with respect ot teh attitude frame, expressed in body frame
1681
+ attitude_frame (Frame): The attitude reference frame
1682
+ """
1683
+ @typing.overload
1684
+ def __init__(self, instant: ostk.physics.time.Instant, coordinates: numpy.ndarray[numpy.float64[m, 1]], frame: ostk.physics.coordinate.Frame, coordinate_broker: typing.Any) -> None:
1685
+ """
1686
+ Constructor with a pre-defined Coordinates Broker.
1687
+
1688
+ Args:
1689
+ instant (Instant): An instant
1690
+ coordinates (numpy.ndarray): The coordinates at the instant in International System of Units
1691
+ frame (Frame): The reference frame in which the coordinates are referenced to and resolved in
1692
+ coordinate_broker (CoordinateBroker): The coordinate broker associated to the coordinates
1693
+ """
1694
+ @typing.overload
1695
+ def __init__(self, instant: ostk.physics.time.Instant, coordinates: numpy.ndarray[numpy.float64[m, 1]], frame: ostk.physics.coordinate.Frame, coordinate_subsets: list[...]) -> None:
1696
+ """
1697
+ Constructor with coordinate subsets.
1698
+
1699
+ Args:
1700
+ instant (Instant): An instant
1701
+ coordinates (numpy.ndarray): The coordinates at the instant in International System of Units
1702
+ frame (Frame): The reference frame in which the coordinates are referenced to and resolved in
1703
+ coordinate_subsets (CoordinateBroker): The coordinate subsets associated to the coordinates
1704
+ """
1705
+ @typing.overload
1706
+ def __init__(self, state: State) -> None:
1707
+ ...
1708
+ def __ne__(self, arg0: State) -> bool:
1709
+ ...
1710
+ def __repr__(self) -> str:
1711
+ ...
1712
+ def __str__(self) -> str:
1713
+ ...
1714
+ def __sub__(self, arg0: State) -> State:
1715
+ ...
1716
+ def extract_coordinate(self, coordinate_subset: typing.Any) -> numpy.ndarray[numpy.float64[m, 1]]:
1717
+ """
1718
+ Extract the coordinates associated to a subset of the state.
1719
+
1720
+ Args:
1721
+ coordinate_subset (CoordinateSubset): The coordinate subset to extract.
1722
+
1723
+ Returns:
1724
+ np.array: The coordinates associated to the subset.
1725
+ """
1726
+ def extract_coordinates(self, coordinate_subsets: list[...]) -> numpy.ndarray[numpy.float64[m, 1]]:
1727
+ """
1728
+ Extract the coordinates associated to a set of subsets of the state.
1729
+
1730
+ Args:
1731
+ coordinate_subsets (list[CoordinateSubset]): The coordinate subsets to extract.
1732
+
1733
+ Returns:
1734
+ np.array: The coordinates associated to the subsets.
1735
+ """
1736
+ def get_angular_velocity(self) -> numpy.ndarray[numpy.float64[3, 1]]:
1737
+ """
1738
+ Get the angular velocity of the state.
1739
+
1740
+ Returns:
1741
+ np.array: The angular velocity of the state.
1742
+ """
1743
+ def get_attitude(self) -> ostk.mathematics.geometry.d3.transformation.rotation.Quaternion:
1744
+ """
1745
+ Get the attitude of the state.
1746
+
1747
+ Returns:
1748
+ Quaternion: The attitude of the state.
1749
+ """
1750
+ def get_coordinate_subsets(self) -> list[...]:
1751
+ """
1752
+ Get the coordinate subsets associated to the state.
1753
+
1754
+ Returns:
1755
+ list[CoordinateSubset]: The coordinate subsets associated to the state.
1756
+ """
1757
+ def get_coordinates(self) -> numpy.ndarray[numpy.float64[m, 1]]:
1758
+ """
1759
+ Get the coordinates of the state.
1760
+
1761
+ Returns:
1762
+ np.array: The coordinates of the state.
1763
+ """
1764
+ def get_frame(self) -> ostk.physics.coordinate.Frame:
1765
+ """
1766
+ Get the reference frame of the state.
1767
+
1768
+ Returns:
1769
+ Frame: The reference frame of the state.
1770
+ """
1771
+ def get_instant(self) -> ostk.physics.time.Instant:
1772
+ """
1773
+ Get the instant of the state.
1774
+
1775
+ Returns:
1776
+ Instant: The instant of the state.
1777
+ """
1778
+ def get_position(self) -> ostk.physics.coordinate.Position:
1779
+ """
1780
+ Get the position of the state.
1781
+
1782
+ Returns:
1783
+ Position: The position of the state.
1784
+ """
1785
+ def get_size(self) -> int:
1786
+ """
1787
+ Get the size of the state.
1788
+
1789
+ Returns:
1790
+ int: The size of the state.
1791
+ """
1792
+ def get_velocity(self) -> ostk.physics.coordinate.Velocity:
1793
+ """
1794
+ Get the velocity of the state.
1795
+
1796
+ Returns:
1797
+ Velocity: The velocity of the state.
1798
+ """
1799
+ def has_subset(self, subset: typing.Any) -> bool:
1800
+ """
1801
+ Check if the state has a given subset.
1802
+
1803
+ Args:
1804
+ subset (CoordinateSubset): The subset to check.
1805
+
1806
+ Returns:
1807
+ bool: True if the state has the subset, False otherwise.
1808
+ """
1809
+ def in_frame(self, frame: ostk.physics.coordinate.Frame) -> State:
1810
+ """
1811
+ Transform the state to the provided reference frame.
1812
+
1813
+ Args:
1814
+ frame (Frame): The reference frame to transform to.
1815
+
1816
+ Returns:
1817
+ State: The transformed state.
1818
+ """
1819
+ def is_defined(self) -> bool:
1820
+ """
1821
+ Check if the state is defined.
1822
+
1823
+ Returns:
1824
+ bool: True if the state is defined, False otherwise.
1825
+ """
1826
+ class StateBuilder:
1827
+ """
1828
+
1829
+ This class makes it convenient to build a `State` object.
1830
+
1831
+ """
1832
+ __hash__: typing.ClassVar[None] = None
1833
+ @staticmethod
1834
+ def undefined() -> StateBuilder:
1835
+ """
1836
+ Get an undefined `StateBuilder`.
1837
+
1838
+ Returns:
1839
+ StateBuilder: The undefined `StateBuilder`.
1840
+ """
1841
+ def __add__(self, arg0: state.CoordinateSubset) -> StateBuilder:
1842
+ """
1843
+ Add a coordinate subset to the `StateBuilder`.
1844
+
1845
+ Arguments:
1846
+ coordinate_subsets (CoordinateSubset): The coordinate subset to add.
1847
+
1848
+ Returns:
1849
+ StateBuilder: The `StateBuilder` with the added coordinate subset.
1850
+ """
1851
+ def __eq__(self, arg0: StateBuilder) -> bool:
1852
+ """
1853
+ Check if two `StateBuilder` objects are equal.
1854
+
1855
+ Returns:
1856
+ bool: True if the two `StateBuilder` objects are equal, False otherwise.
1857
+ """
1858
+ @typing.overload
1859
+ def __init__(self, frame: ostk.physics.coordinate.Frame, coordinate_subsets: list[state.CoordinateSubset]) -> None:
1860
+ """
1861
+ Construct a new `StateBuilder` object.
1862
+
1863
+ Arguments:
1864
+ frame (Frame): The reference frame.
1865
+ coordinate_subsets list[CoordinateSubset]: The coordinate subsets.
1866
+
1867
+ Returns:
1868
+ StateBuilder: The new `StateBuilder` object.
1869
+ """
1870
+ @typing.overload
1871
+ def __init__(self, frame: ostk.physics.coordinate.Frame, coordinate_broker: state.CoordinateBroker) -> None:
1872
+ """
1873
+ Construct a new `StateBuilder` object.
1874
+
1875
+ Arguments:
1876
+ frame (Frame): The reference frame.
1877
+ coordinate_broker (CoordinateBroker): The coordinate broker.
1878
+
1879
+ Returns:
1880
+ StateBuilder: The new `StateBuilder` object.
1881
+ """
1882
+ @typing.overload
1883
+ def __init__(self, state: State) -> None:
1884
+ """
1885
+ Construct a new `StateBuilder` object.
1886
+
1887
+ Arguments:
1888
+ state (State): The state.
1889
+
1890
+ Returns:
1891
+ StateBuilder: The new `StateBuilder` object.
1892
+ """
1893
+ def __ne__(self, arg0: StateBuilder) -> bool:
1894
+ """
1895
+ Check if two `StateBuilder` objects are not equal.
1896
+
1897
+ Returns:
1898
+ bool: True if the two `StateBuilder` objects are not equal, False otherwise.
1899
+ """
1900
+ def __repr__(self) -> str:
1901
+ ...
1902
+ def __str__(self) -> str:
1903
+ ...
1904
+ def __sub__(self, arg0: state.CoordinateSubset) -> StateBuilder:
1905
+ """
1906
+ Remove a coordinate subset from the `StateBuilder`.
1907
+
1908
+ Arguments:
1909
+ coordinate_subset (CoordinateSubset): The coordinate subset to remove.
1910
+
1911
+ Returns:
1912
+ StateBuilder: The `StateBuilder` with the removed coordinate subset.
1913
+ """
1914
+ def access_coordinate_broker(self) -> state.CoordinateBroker:
1915
+ """
1916
+ Access the coordinate broker of the `StateBuilder`.
1917
+
1918
+ Returns:
1919
+ CoordinateBroker: The coordinate broker of the `StateBuilder`.
1920
+ """
1921
+ def build(self, instant: ostk.physics.time.Instant, coordinates: numpy.ndarray[numpy.float64[m, 1]]) -> State:
1922
+ """
1923
+ Build a `State` object from the `StateBuilder`.
1924
+
1925
+ Arguments:
1926
+ instant (Instant): The instant of the state.
1927
+ coordinates (VectorXd): The coordinates of the state.
1928
+
1929
+ Returns:
1930
+ State: A `State` object built from the `StateBuilder`.
1931
+ """
1932
+ def expand(self, state: State, default_state: State) -> State:
1933
+ """
1934
+ Expand a `State` object to the coordinate subsets of the `StateBuilder`.
1935
+ The output state is provided in the Frame of the `StateBuilder`.
1936
+
1937
+ Arguments:
1938
+ state (State): The `State` object to expand.
1939
+ default_state (State): The `State` object used to supply any additional coordinates.
1940
+
1941
+ Returns:
1942
+ State: A `State` object with the coordinate subsets of the `StateBuilder`.
1943
+ """
1944
+ def get_coordinate_subsets(self) -> list[state.CoordinateSubset]:
1945
+ """
1946
+ Get the coordinate subsets of the `StateBuilder`.
1947
+
1948
+ Returns:
1949
+ Array<Shared<const CoordinateSubset>>: The coordinate subsets of the `StateBuilder`.
1950
+ """
1951
+ def get_frame(self) -> ostk.physics.coordinate.Frame:
1952
+ """
1953
+ Get the reference frame of the `StateBuilder`.
1954
+
1955
+ Returns:
1956
+ Frame: The reference frame of the `StateBuilder`.
1957
+ """
1958
+ def get_size(self) -> int:
1959
+ """
1960
+ Get the total size of all coordinates from all subsets.
1961
+
1962
+ Returns:
1963
+ Size: The total size of all coordinates from all subsets.
1964
+ """
1965
+ def is_defined(self) -> bool:
1966
+ """
1967
+ Check if the `StateBuilder` is defined.
1968
+
1969
+ Returns:
1970
+ bool: True if the `StateBuilder` is defined, False otherwise.
1971
+ """
1972
+ def reduce(self, state: State) -> State:
1973
+ """
1974
+ Reduce a `State` object to the coordinate subsets of the `StateBuilder`.
1975
+ The output state is provided in the Frame of the `StateBuilder`.
1976
+
1977
+ Arguments:
1978
+ state (State): The `State` object to reduce.
1979
+
1980
+ Returns:
1981
+ State: A `State` object with the coordinate subsets of the `StateBuilder`.
1982
+ """