open-space-toolkit-astrodynamics 2.2.0__py311-none-any.whl → 5.0.0__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.2.0.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/METADATA +2 -2
- open_space_toolkit_astrodynamics-5.0.0.dist-info/RECORD +25 -0
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so +0 -0
- ostk/astrodynamics/__init__.py +6 -0
- ostk/astrodynamics/converters.py +1 -1
- ostk/astrodynamics/{libopen-space-toolkit-astrodynamics.so.2 → libopen-space-toolkit-astrodynamics.so.5} +0 -0
- ostk/astrodynamics/pytrajectory/pystate.py +36 -0
- ostk/astrodynamics/test/test_access.py +1 -1
- ostk/astrodynamics/test/test_converters.py +1 -1
- ostk/astrodynamics/test/test_event_condition.py +27 -2
- ostk/astrodynamics/test/test_import.py +2 -2
- ostk/astrodynamics/test/test_trajectory.py +1 -1
- ostk/astrodynamics/viewer.py +1 -1
- open_space_toolkit_astrodynamics-2.2.0.dist-info/RECORD +0 -77
- ostk/astrodynamics/test/access/__init__.py +0 -1
- ostk/astrodynamics/test/access/test_generator.py +0 -248
- ostk/astrodynamics/test/conjunction/messages/ccsds/__init__.py +0 -1
- ostk/astrodynamics/test/conjunction/messages/ccsds/conftest.py +0 -325
- ostk/astrodynamics/test/conjunction/messages/ccsds/data/cdm.json +0 -303
- ostk/astrodynamics/test/conjunction/messages/ccsds/test_cdm.py +0 -416
- ostk/astrodynamics/test/event_condition/test_boolean_condition.py +0 -55
- ostk/astrodynamics/test/event_condition/test_coe_condition.py +0 -126
- ostk/astrodynamics/test/event_condition/test_instant_condition.py +0 -48
- ostk/astrodynamics/test/event_condition/test_logical_condition.py +0 -120
- ostk/astrodynamics/test/event_condition/test_real_condition.py +0 -53
- ostk/astrodynamics/test/flight/__init__.py +0 -1
- ostk/astrodynamics/test/flight/profile/__init__.py +0 -1
- ostk/astrodynamics/test/flight/profile/test_state.py +0 -144
- ostk/astrodynamics/test/flight/system/__init__.py +0 -1
- ostk/astrodynamics/test/flight/system/dynamics/__init__.py +0 -1
- ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py +0 -89
- ostk/astrodynamics/test/flight/system/dynamics/test_central_body_gravity.py +0 -58
- ostk/astrodynamics/test/flight/system/dynamics/test_dynamics.py +0 -37
- ostk/astrodynamics/test/flight/system/dynamics/test_position_derivative.py +0 -51
- ostk/astrodynamics/test/flight/system/dynamics/test_third_body_gravity.py +0 -67
- ostk/astrodynamics/test/flight/system/test_satellite_system.py +0 -77
- ostk/astrodynamics/test/flight/test_profile.py +0 -153
- ostk/astrodynamics/test/flight/test_system.py +0 -55
- ostk/astrodynamics/test/solvers/__init__.py +0 -1
- ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +0 -153
- ostk/astrodynamics/test/trajectory/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py +0 -18
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml +0 -44
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py +0 -108
- ostk/astrodynamics/test/trajectory/orbit/models/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py +0 -112
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py +0 -331
- ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py +0 -130
- ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py +0 -195
- ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py +0 -380
- ostk/astrodynamics/test/trajectory/orbit/test_model.py +0 -1
- ostk/astrodynamics/test/trajectory/orbit/test_pass.py +0 -55
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_position.py +0 -103
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py +0 -113
- ostk/astrodynamics/test/trajectory/state/test_coordinates_broker.py +0 -71
- ostk/astrodynamics/test/trajectory/state/test_coordinates_subset.py +0 -43
- ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +0 -242
- ostk/astrodynamics/test/trajectory/test_model.py +0 -1
- ostk/astrodynamics/test/trajectory/test_orbit.py +0 -92
- ostk/astrodynamics/test/trajectory/test_propagator.py +0 -234
- ostk/astrodynamics/test/trajectory/test_state.py +0 -121
- {open_space_toolkit_astrodynamics-2.2.0.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/WHEEL +0 -0
- {open_space_toolkit_astrodynamics-2.2.0.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-2.2.0.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/zip-safe +0 -0
- /ostk/{__init__.py → astrodynamics/pytrajectory/__init__.py} +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: open-space-toolkit-astrodynamics
|
3
|
-
Version:
|
3
|
+
Version: 5.0.0
|
4
4
|
Summary: Orbit, attitude, access.
|
5
5
|
Author: Open Space Collective
|
6
6
|
Author-email: contact@open-space-collective.org
|
@@ -11,7 +11,7 @@ Classifier: Programming Language :: Python :: 3
|
|
11
11
|
Classifier: License :: OSI Approved :: Apache Software License
|
12
12
|
Classifier: Operating System :: POSIX :: Linux
|
13
13
|
Description-Content-Type: text/markdown
|
14
|
-
Requires-Dist: open-space-toolkit-physics (~=
|
14
|
+
Requires-Dist: open-space-toolkit-physics (~=4.0.0)
|
15
15
|
|
16
16
|
# Open Space Toolkit ▸ Astrodynamics
|
17
17
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so,sha256=F7k4Rhyme-7G_yz53sJGe6TzaFl2I0cC3q93xW3KwjA,1931000
|
2
|
+
ostk/astrodynamics/__init__.py,sha256=3gWyqFIbhAfcdeMhmfBPQPlPQTmaOzm-6flkJe745Zk,251
|
3
|
+
ostk/astrodynamics/converters.py,sha256=WIOxUOFGrdFDIKfu0-N8jmCF0GOMMsw2aB_Wy0eXHAQ,3500
|
4
|
+
ostk/astrodynamics/display.py,sha256=y9FnoQbPFGM6LzkUdgXgeqtuVGhv57GuTKbeDdcFPgw,6306
|
5
|
+
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.5,sha256=JZAnOJR_rPYM2BKc1eHSLsayC7pJBJ4TjWRBtOgMsPU,90408968
|
6
|
+
ostk/astrodynamics/utilities.py,sha256=NbeKN_CtcCRHIinhoNWTEosBMR7xc924S-ZFD97mduw,4478
|
7
|
+
ostk/astrodynamics/viewer.py,sha256=B5m-eNWQrd4vIBqmT7-400IfHldxU5lFDTLpfHiiHj4,8910
|
8
|
+
ostk/astrodynamics/pytrajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
9
|
+
ostk/astrodynamics/pytrajectory/pystate.py,sha256=ceNZWYCqtsXWJlE6JKDxB5qn5ixTWGOwrYXge21XPmk,1037
|
10
|
+
ostk/astrodynamics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
11
|
+
ostk/astrodynamics/test/conftest.py,sha256=J3SbQibnMVaPktAF6Z6cwVCa7xhW3uXpkOJRom6YtCo,2719
|
12
|
+
ostk/astrodynamics/test/test_access.py,sha256=6sWINwQw-KMKKOfuJIJxyIIrmT513VjvoXt2rNPpm0w,3959
|
13
|
+
ostk/astrodynamics/test/test_converters.py,sha256=Uw_SZHwnt5OYM8OtF9_EiBK8xDPWQUE3o_mJIdyWQxU,5845
|
14
|
+
ostk/astrodynamics/test/test_display.py,sha256=8YeiYRYMpokzqprbRoDBI_xhHI5B8uxcdSzmqmF3AIc,3738
|
15
|
+
ostk/astrodynamics/test/test_event_condition.py,sha256=lehMGGST5cd5DQTDRdQnQr2eHVAmJwhXZdiIKchogNE,1423
|
16
|
+
ostk/astrodynamics/test/test_import.py,sha256=stS8jK9HiXyzRWjtDvaTqUrzCrOVnYVX5CkmQf7MJsA,1201
|
17
|
+
ostk/astrodynamics/test/test_root_solver.py,sha256=hQ8O6g-WP49gZH_H3Rdufv0F0gQorpzJyIcjBGGUQ34,1831
|
18
|
+
ostk/astrodynamics/test/test_trajectory.py,sha256=pvv4GQsvtU0XfWYk-F-oQNgo8ciFQBgzeJ4FojZDW-A,1364
|
19
|
+
ostk/astrodynamics/test/test_utilities.py,sha256=edAPLXNMflCPa0gzhU4e05pa6HbAq7UV0JzMMRx3VlQ,3252
|
20
|
+
ostk/astrodynamics/test/test_viewer.py,sha256=i164XnG6n-_FteiO6rjXA7GGsJhMdmT-508DpKaveVY,3957
|
21
|
+
open_space_toolkit_astrodynamics-5.0.0.dist-info/METADATA,sha256=gvqV4dmmI5zidfxBZjenf6Ymg7x9VqpWpI9rd6ZNBRc,1779
|
22
|
+
open_space_toolkit_astrodynamics-5.0.0.dist-info/WHEEL,sha256=LypFpa2XcEE7xO2Jrj0iI4pUztksD6mL7bVYmw0rTlI,94
|
23
|
+
open_space_toolkit_astrodynamics-5.0.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
|
24
|
+
open_space_toolkit_astrodynamics-5.0.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
25
|
+
open_space_toolkit_astrodynamics-5.0.0.dist-info/RECORD,,
|
Binary file
|
ostk/astrodynamics/__init__.py
CHANGED
ostk/astrodynamics/converters.py
CHANGED
@@ -4,7 +4,7 @@ from datetime import datetime, timedelta, timezone
|
|
4
4
|
|
5
5
|
import numpy as np
|
6
6
|
|
7
|
-
from ostk.mathematics.geometry.d3.
|
7
|
+
from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
|
8
8
|
|
9
9
|
from ostk.physics.time import Instant
|
10
10
|
from ostk.physics.time import Interval
|
Binary file
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Apache License 2.0
|
2
|
+
|
3
|
+
|
4
|
+
# Python-only State functionality
|
5
|
+
import numpy as np
|
6
|
+
|
7
|
+
from ostk.physics.coordinate import Frame
|
8
|
+
from ostk.physics.time import Instant
|
9
|
+
|
10
|
+
from ostk.astrodynamics.trajectory import State, StateBuilder
|
11
|
+
|
12
|
+
|
13
|
+
@staticmethod
|
14
|
+
def custom_class_generator(frame: Frame, coordinates_subsets: list) -> type:
|
15
|
+
"""
|
16
|
+
Emit a custom class type for States. This is meta-programming syntactic sugar on top of the StateBuilder class.
|
17
|
+
|
18
|
+
StateType = State.template(frame, coordinates_subsets)
|
19
|
+
state = StateType(instant, coordinates)
|
20
|
+
|
21
|
+
is equivalent to
|
22
|
+
|
23
|
+
state_builder = StateBuilder(frame, coordinates_subsets)
|
24
|
+
state = state_builder.build(instant, coordinates)
|
25
|
+
"""
|
26
|
+
|
27
|
+
class StateTemplateType(State):
|
28
|
+
state_builder: StateBuilder = StateBuilder(frame, coordinates_subsets)
|
29
|
+
|
30
|
+
def __init__(self, instant: Instant, coordinates: np.ndarray):
|
31
|
+
super().__init__(StateTemplateType.state_builder.build(instant, coordinates))
|
32
|
+
|
33
|
+
return StateTemplateType
|
34
|
+
|
35
|
+
|
36
|
+
State.template = custom_class_generator
|
@@ -11,7 +11,7 @@ import ostk.physics as physics
|
|
11
11
|
import ostk.astrodynamics as astrodynamics
|
12
12
|
|
13
13
|
RealInterval = mathematics.objects.RealInterval
|
14
|
-
Quaternion = mathematics.geometry.d3.
|
14
|
+
Quaternion = mathematics.geometry.d3.transformation.rotation.Quaternion
|
15
15
|
Length = physics.units.Length
|
16
16
|
Angle = physics.units.Angle
|
17
17
|
DateTime = physics.time.DateTime
|
@@ -4,7 +4,7 @@ from datetime import datetime, timedelta, timezone
|
|
4
4
|
|
5
5
|
import numpy as np
|
6
6
|
|
7
|
-
from ostk.mathematics.geometry.d3.
|
7
|
+
from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
|
8
8
|
|
9
9
|
from ostk.physics.time import Instant
|
10
10
|
from ostk.physics.time import Interval
|
@@ -11,14 +11,31 @@ def name() -> str:
|
|
11
11
|
|
12
12
|
|
13
13
|
@pytest.fixture
|
14
|
-
def
|
14
|
+
def evaluator() -> callable:
|
15
|
+
return lambda state: 0.0
|
16
|
+
|
17
|
+
|
18
|
+
@pytest.fixture
|
19
|
+
def target_value() -> float:
|
20
|
+
return 0.0
|
21
|
+
|
22
|
+
|
23
|
+
@pytest.fixture
|
24
|
+
def target(target_value: float) -> EventCondition.Target:
|
25
|
+
return EventCondition.Target(target_value, EventCondition.Target.Type.Absolute)
|
26
|
+
|
27
|
+
|
28
|
+
@pytest.fixture
|
29
|
+
def event_condition(
|
30
|
+
name: str, evaluator: callable, target: EventCondition.Target
|
31
|
+
) -> EventCondition:
|
15
32
|
class MyEventCondition(EventCondition):
|
16
33
|
def is_satisfied(
|
17
34
|
self, current_state_vector, current_time, previous_state_vector, previous_time
|
18
35
|
):
|
19
36
|
return current_state_vector[0] > 0.0 and previous_state_vector[0] < 0.0
|
20
37
|
|
21
|
-
return MyEventCondition(name)
|
38
|
+
return MyEventCondition(name, evaluator, target)
|
22
39
|
|
23
40
|
|
24
41
|
class TestEventCondition:
|
@@ -27,3 +44,11 @@ class TestEventCondition:
|
|
27
44
|
|
28
45
|
def test_get_name(self, event_condition: EventCondition, name: str):
|
29
46
|
assert event_condition.get_name() == name
|
47
|
+
|
48
|
+
def test_get_evaluator(self, event_condition: EventCondition):
|
49
|
+
assert event_condition.get_evaluator() is not None
|
50
|
+
|
51
|
+
def test_get_target(
|
52
|
+
self, event_condition: EventCondition, target: EventCondition.Target
|
53
|
+
):
|
54
|
+
assert event_condition.get_target() == target
|
@@ -18,8 +18,8 @@ class TestImport:
|
|
18
18
|
from ostk.astrodynamics.flight import Profile
|
19
19
|
from ostk.astrodynamics.flight import System
|
20
20
|
from ostk.astrodynamics.flight.system import SatelliteSystem
|
21
|
-
from ostk.astrodynamics.
|
22
|
-
from ostk.astrodynamics.
|
21
|
+
from ostk.astrodynamics.dynamics import CentralBodyGravity
|
22
|
+
from ostk.astrodynamics.dynamics import AtmosphericDrag
|
23
23
|
from ostk.astrodynamics import Access
|
24
24
|
from ostk.astrodynamics.access import Generator
|
25
25
|
from ostk.astrodynamics.trajectory.state import NumericalSolver
|
@@ -7,7 +7,7 @@ import ostk.physics as physics
|
|
7
7
|
import ostk.astrodynamics as astrodynamics
|
8
8
|
|
9
9
|
RealInterval = mathematics.objects.RealInterval
|
10
|
-
Quaternion = mathematics.geometry.d3.
|
10
|
+
Quaternion = mathematics.geometry.d3.transformation.rotation.Quaternion
|
11
11
|
Length = physics.units.Length
|
12
12
|
Angle = physics.units.Angle
|
13
13
|
DateTime = physics.time.DateTime
|
ostk/astrodynamics/viewer.py
CHANGED
@@ -14,7 +14,7 @@ try:
|
|
14
14
|
except ImportError:
|
15
15
|
...
|
16
16
|
|
17
|
-
from ostk.mathematics.geometry.d3.
|
17
|
+
from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
|
18
18
|
|
19
19
|
from ostk.physics.units import Length
|
20
20
|
from ostk.physics.units import Angle
|
@@ -1,77 +0,0 @@
|
|
1
|
-
ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
2
|
-
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so,sha256=GjkVuMXD3VtRnjtzXlZpOHrfP83KD6mLsxjTfOI71-o,1291608
|
3
|
-
ostk/astrodynamics/__init__.py,sha256=BE7yyrOnPqFCTPT3GhYEI4IWR5nzs96VSjKphhQ09ew,97
|
4
|
-
ostk/astrodynamics/converters.py,sha256=sBZ3_JMjowWbQ9gBPA2cSEkbBfAwXmt1IBbLks76-Vk,3502
|
5
|
-
ostk/astrodynamics/display.py,sha256=y9FnoQbPFGM6LzkUdgXgeqtuVGhv57GuTKbeDdcFPgw,6306
|
6
|
-
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.2,sha256=0CR9k46YVnL28vvV12f6FNFkGHubVQw1NJNUH_xh1-Q,60253816
|
7
|
-
ostk/astrodynamics/utilities.py,sha256=NbeKN_CtcCRHIinhoNWTEosBMR7xc924S-ZFD97mduw,4478
|
8
|
-
ostk/astrodynamics/viewer.py,sha256=_4uucNtZrIADtKtEYHbiu91RVVvKRG3vPULUAshPLJU,8912
|
9
|
-
ostk/astrodynamics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
10
|
-
ostk/astrodynamics/test/conftest.py,sha256=J3SbQibnMVaPktAF6Z6cwVCa7xhW3uXpkOJRom6YtCo,2719
|
11
|
-
ostk/astrodynamics/test/test_access.py,sha256=4I5r4Hukv0fkByHVARhaYpcDu5EOQ7dtbs-ZK7siTqg,3961
|
12
|
-
ostk/astrodynamics/test/test_converters.py,sha256=ktkLH0xpeRdQ7kN6i5a_agmGqovUxVtCwlwcCdCUaa0,5847
|
13
|
-
ostk/astrodynamics/test/test_display.py,sha256=8YeiYRYMpokzqprbRoDBI_xhHI5B8uxcdSzmqmF3AIc,3738
|
14
|
-
ostk/astrodynamics/test/test_event_condition.py,sha256=tzs0_DzVjz7lPfq12MZ0b65iFejcTAK59u10sZnm8sU,757
|
15
|
-
ostk/astrodynamics/test/test_import.py,sha256=4eRUkGnhp9BaBOOUhHi97XFX9aPk-IpAbGrhz-dbrvY,1229
|
16
|
-
ostk/astrodynamics/test/test_root_solver.py,sha256=hQ8O6g-WP49gZH_H3Rdufv0F0gQorpzJyIcjBGGUQ34,1831
|
17
|
-
ostk/astrodynamics/test/test_trajectory.py,sha256=4AhlAaIrCrP17ZycJqYlYskj8SC2MH7fp3_4eqWdF9s,1366
|
18
|
-
ostk/astrodynamics/test/test_utilities.py,sha256=edAPLXNMflCPa0gzhU4e05pa6HbAq7UV0JzMMRx3VlQ,3252
|
19
|
-
ostk/astrodynamics/test/test_viewer.py,sha256=i164XnG6n-_FteiO6rjXA7GGsJhMdmT-508DpKaveVY,3957
|
20
|
-
ostk/astrodynamics/test/access/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
21
|
-
ostk/astrodynamics/test/access/test_generator.py,sha256=6cwC5GGvnWLxPXmgRQ-N7tjorGUfPxA8qFcdGaTmpp4,8038
|
22
|
-
ostk/astrodynamics/test/conjunction/messages/ccsds/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
23
|
-
ostk/astrodynamics/test/conjunction/messages/ccsds/conftest.py,sha256=xyTd24828Ue2HgOWY8UhizIc5mzgRgoH2VSOfVfKCdw,14632
|
24
|
-
ostk/astrodynamics/test/conjunction/messages/ccsds/test_cdm.py,sha256=SqtYXB8qhKzbQEWmCzz13xi0Uu64-VSKXuMObcFV7EI,18518
|
25
|
-
ostk/astrodynamics/test/conjunction/messages/ccsds/data/cdm.json,sha256=-CL8Bu-ivigzkrqHs9Q5snSubHJ_D0YMroatEInkidc,12965
|
26
|
-
ostk/astrodynamics/test/event_condition/test_boolean_condition.py,sha256=Ng6FLKD8XoUHUz6-gi3wvrYhSGNSB_iJ_n89ajN4O3s,1580
|
27
|
-
ostk/astrodynamics/test/event_condition/test_coe_condition.py,sha256=p8-djvgkWNibKuUuQTh6a9tO3h1B_0ix0O8DdJb0K9g,3649
|
28
|
-
ostk/astrodynamics/test/event_condition/test_instant_condition.py,sha256=Qr5dN6nrK7XDff7L4vnGCqasMK-Fa6qvxwy_U0xgH5M,1438
|
29
|
-
ostk/astrodynamics/test/event_condition/test_logical_condition.py,sha256=09h5TYWtwGt4NQW3k_tziiVs0Q2981rNII9wyKg7p2Q,3321
|
30
|
-
ostk/astrodynamics/test/event_condition/test_real_condition.py,sha256=vlNpeLwUtCtldfmL04aYwF2uLKw-dKfywPOEBn5v7J8,1507
|
31
|
-
ostk/astrodynamics/test/flight/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
32
|
-
ostk/astrodynamics/test/flight/test_profile.py,sha256=27g5Atvr2RGslvFujdP90cA9qldkNb7C0U1RgbOAws0,5197
|
33
|
-
ostk/astrodynamics/test/flight/test_system.py,sha256=YPrjoV3o67_1zCXCZqohlSAR7zkU0LXP2fF20M2s0C8,1326
|
34
|
-
ostk/astrodynamics/test/flight/profile/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
35
|
-
ostk/astrodynamics/test/flight/profile/test_state.py,sha256=49UyPz6p9Q_RYKVBiLgW_WHo4A7JUZtacGMhQ9ERCdc,4268
|
36
|
-
ostk/astrodynamics/test/flight/system/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
37
|
-
ostk/astrodynamics/test/flight/system/test_satellite_system.py,sha256=-5KOGVTWRIpY1jcRc0xGX6N9oRbUT_EexzB9jZFsZQg,2208
|
38
|
-
ostk/astrodynamics/test/flight/system/dynamics/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
39
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py,sha256=nZ2lBGq5Ni3ypuqGbTfluxTXYERpwol49d0DrgnYsIo,3115
|
40
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_central_body_gravity.py,sha256=r3JIIX7cD63BhrgvLtjFaK7ew1BqHdKP5_VxwGmuv1Q,1818
|
41
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_dynamics.py,sha256=arNkAOj2y4CDmc9CXxItbFtC4QYjaByuJefdi5S6alw,914
|
42
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_position_derivative.py,sha256=ZVVewpqZwqiBLDqoNQDHDgDodtj6_M0J6ZmgHe_1gz8,1646
|
43
|
-
ostk/astrodynamics/test/flight/system/dynamics/test_third_body_gravity.py,sha256=Z8OkM-EFafFpWziu3bfatlSlZA4Tic2fsVLU35rDp5E,1915
|
44
|
-
ostk/astrodynamics/test/solvers/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
45
|
-
ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py,sha256=s7r7VelXx1_b-6wO_GyOlmxlsfA4I_zpxrWojriQls8,4867
|
46
|
-
ostk/astrodynamics/test/trajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
47
|
-
ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
48
|
-
ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=SlCBZ_broPaJ6L8khMuvbdPem9-zmqG6IZwxr9cECB4,3155
|
49
|
-
ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=-w-CWhuJ09tdJY35n3YR4CSo2aRnvx3eYtTLEPlZy5E,7626
|
50
|
-
ostk/astrodynamics/test/trajectory/test_state.py,sha256=okpjRPixi7AUSV1YG8hNFFEo0AayfIK50X2vor9yOB0,3199
|
51
|
-
ostk/astrodynamics/test/trajectory/orbit/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
52
|
-
ostk/astrodynamics/test/trajectory/orbit/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
53
|
-
ostk/astrodynamics/test/trajectory/orbit/test_pass.py,sha256=MtPRKhVz4hCzfFuE0p1x89Ps68M9s7miT7VtPIDVeOo,1898
|
54
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
55
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
56
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py,sha256=O75ywkPJjoFp0uKptCu4C2tGMRaGN-8NVFVhps85eWE,379
|
57
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py,sha256=wfxuccqIF2odRA9Dc-8wtKZ8t__4KJ9HVhN-il284OU,3893
|
58
|
-
ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml,sha256=DqIdfLCPD9oV4qDvgq35fIT8Gb8zgtrHr5Nx53InSQM,1363
|
59
|
-
ostk/astrodynamics/test/trajectory/orbit/models/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
60
|
-
ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py,sha256=sf1FpdYyiGyWcal-CwVfelW1k-HYGlIdbJdcbOi9-lY,3372
|
61
|
-
ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py,sha256=S5tndRVlNd-_1WvKlH_Jo2SX5gEzVkPC3lKdYpzBfx0,6720
|
62
|
-
ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
63
|
-
ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py,sha256=tL3gGDitdEYCCRwGtu2RP-9d4JWsujV53ck9DRkyeG4,11183
|
64
|
-
ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
65
|
-
ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py,sha256=uWgUO9zHrcqEKGJ-SWUiHfEbWDm8YcgptnS2I2y_V1U,2728
|
66
|
-
ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
67
|
-
ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py,sha256=lbPqHd87ExTNbBFcFSTMWRnWbpe_4BDJ2g2APlQLJkY,11486
|
68
|
-
ostk/astrodynamics/test/trajectory/state/test_coordinates_broker.py,sha256=kB_gsJHxvCDY9kfuqVkwHt5ZmMuaAoRk_3YZGxoXOwg,2515
|
69
|
-
ostk/astrodynamics/test/trajectory/state/test_coordinates_subset.py,sha256=eMmifR5rJMk2yFN7pfAHq2Ub3FPvknb6gvS-nBDidro,1201
|
70
|
-
ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py,sha256=ZTWRSVFOJnjzQP7JDsHZxvZ4ldyDHmXTptG2csC7_ic,7480
|
71
|
-
ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_position.py,sha256=V5d7UnV6KIJjJvh5R0i3imRfyN04JCDvCUsKdvfKmhE,2708
|
72
|
-
ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py,sha256=5a7yeOVt7gY4oQdINSElb_U2jznJmuWPrT_YJrI6KaM,3070
|
73
|
-
open_space_toolkit_astrodynamics-2.2.0.dist-info/METADATA,sha256=tnns8QmStuEwQw-c3UHlzGZnW_jy-QzbV9zdaVVszzs,1779
|
74
|
-
open_space_toolkit_astrodynamics-2.2.0.dist-info/WHEEL,sha256=LypFpa2XcEE7xO2Jrj0iI4pUztksD6mL7bVYmw0rTlI,94
|
75
|
-
open_space_toolkit_astrodynamics-2.2.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
|
76
|
-
open_space_toolkit_astrodynamics-2.2.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
77
|
-
open_space_toolkit_astrodynamics-2.2.0.dist-info/RECORD,,
|
@@ -1 +0,0 @@
|
|
1
|
-
# Apache License 2.0
|
@@ -1,248 +0,0 @@
|
|
1
|
-
# Apache License 2.0
|
2
|
-
|
3
|
-
import pytest
|
4
|
-
|
5
|
-
from ostk.mathematics.objects import RealInterval
|
6
|
-
|
7
|
-
from ostk.physics.units import Length
|
8
|
-
from ostk.physics.units import Angle
|
9
|
-
from ostk.physics.time import DateTime
|
10
|
-
from ostk.physics.time import Scale
|
11
|
-
from ostk.physics.time import Duration
|
12
|
-
from ostk.physics.time import Instant
|
13
|
-
from ostk.physics.time import Interval
|
14
|
-
from ostk.physics import Environment
|
15
|
-
from ostk.physics.environment.objects import Celestial
|
16
|
-
|
17
|
-
from ostk.astrodynamics import Trajectory
|
18
|
-
from ostk.astrodynamics.trajectory import Orbit
|
19
|
-
from ostk.astrodynamics.trajectory.orbit.models import Kepler
|
20
|
-
from ostk.astrodynamics.trajectory.orbit.models.kepler import COE
|
21
|
-
from ostk.astrodynamics import Access
|
22
|
-
from ostk.astrodynamics.access import Generator
|
23
|
-
|
24
|
-
|
25
|
-
@pytest.fixture
|
26
|
-
def environment() -> Environment:
|
27
|
-
return Environment.default()
|
28
|
-
|
29
|
-
|
30
|
-
@pytest.fixture
|
31
|
-
def earth(environment: Environment) -> Celestial:
|
32
|
-
return environment.access_celestial_object_with_name("Earth")
|
33
|
-
|
34
|
-
|
35
|
-
@pytest.fixture
|
36
|
-
def generator(environment: Environment) -> Generator:
|
37
|
-
return Generator(
|
38
|
-
environment=environment,
|
39
|
-
aer_filter=lambda aer: True,
|
40
|
-
access_filter=lambda access: True,
|
41
|
-
state_filter=lambda state_1, state_2: True,
|
42
|
-
)
|
43
|
-
|
44
|
-
|
45
|
-
@pytest.fixture
|
46
|
-
def from_trajectory(earth: Celestial) -> Trajectory:
|
47
|
-
return Orbit(
|
48
|
-
model=Kepler(
|
49
|
-
coe=COE(
|
50
|
-
semi_major_axis=Length.kilometers(7000.0),
|
51
|
-
eccentricity=0.0,
|
52
|
-
inclination=Angle.degrees(45.0),
|
53
|
-
raan=Angle.degrees(0.0),
|
54
|
-
aop=Angle.degrees(0.0),
|
55
|
-
true_anomaly=Angle.degrees(0.0),
|
56
|
-
),
|
57
|
-
epoch=Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
58
|
-
celestial_object=earth,
|
59
|
-
perturbation_type=Kepler.PerturbationType.No,
|
60
|
-
),
|
61
|
-
celestial_object=earth,
|
62
|
-
)
|
63
|
-
|
64
|
-
|
65
|
-
@pytest.fixture
|
66
|
-
def to_trajectory(earth: Celestial) -> Trajectory:
|
67
|
-
return Orbit(
|
68
|
-
model=Kepler(
|
69
|
-
coe=COE(
|
70
|
-
semi_major_axis=Length.kilometers(7000.0),
|
71
|
-
eccentricity=0.0,
|
72
|
-
inclination=Angle.degrees(45.0),
|
73
|
-
raan=Angle.degrees(180.0),
|
74
|
-
aop=Angle.degrees(0.0),
|
75
|
-
true_anomaly=Angle.degrees(180.0),
|
76
|
-
),
|
77
|
-
epoch=Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
78
|
-
celestial_object=earth,
|
79
|
-
perturbation_type=Kepler.PerturbationType.No,
|
80
|
-
),
|
81
|
-
celestial_object=earth,
|
82
|
-
)
|
83
|
-
|
84
|
-
|
85
|
-
class TestGenerator:
|
86
|
-
def test_constructor_success_environment(self, environment: Environment):
|
87
|
-
generator = Generator(
|
88
|
-
environment=environment,
|
89
|
-
)
|
90
|
-
|
91
|
-
assert generator is not None
|
92
|
-
assert isinstance(generator, Generator)
|
93
|
-
|
94
|
-
def test_constructor_success_environment_aer_filter(self, environment: Environment):
|
95
|
-
generator = Generator(
|
96
|
-
environment=environment,
|
97
|
-
aer_filter=lambda aer: True,
|
98
|
-
)
|
99
|
-
|
100
|
-
assert generator is not None
|
101
|
-
assert isinstance(generator, Generator)
|
102
|
-
|
103
|
-
def test_constructor_success_environment_access_filter(
|
104
|
-
self,
|
105
|
-
environment: Environment,
|
106
|
-
):
|
107
|
-
generator = Generator(
|
108
|
-
environment=environment,
|
109
|
-
access_filter=lambda access: True,
|
110
|
-
)
|
111
|
-
|
112
|
-
assert generator is not None
|
113
|
-
assert isinstance(generator, Generator)
|
114
|
-
|
115
|
-
def test_constructor_success_environment_state_filter(
|
116
|
-
self,
|
117
|
-
environment: Environment,
|
118
|
-
):
|
119
|
-
generator = Generator(
|
120
|
-
environment=environment,
|
121
|
-
state_filter=lambda state_1, state_2: True,
|
122
|
-
)
|
123
|
-
|
124
|
-
assert generator is not None
|
125
|
-
assert isinstance(generator, Generator)
|
126
|
-
|
127
|
-
def test_constructor_success_environment_step_tolerance(
|
128
|
-
self,
|
129
|
-
environment: Environment,
|
130
|
-
):
|
131
|
-
generator = Generator(
|
132
|
-
environment=environment,
|
133
|
-
step=Duration.seconds(1.0),
|
134
|
-
tolerance=Duration.minutes(1.0),
|
135
|
-
)
|
136
|
-
|
137
|
-
assert generator is not None
|
138
|
-
assert isinstance(generator, Generator)
|
139
|
-
assert generator.get_step() == Duration.seconds(1.0)
|
140
|
-
assert generator.get_tolerance() == Duration.minutes(1.0)
|
141
|
-
|
142
|
-
def test_getters_success(self, generator: Generator):
|
143
|
-
assert generator.get_step() == Duration.minutes(1.0)
|
144
|
-
assert generator.get_tolerance() == Duration.microseconds(1.0)
|
145
|
-
assert generator.get_aer_filter() is not None
|
146
|
-
assert generator.get_access_filter() is not None
|
147
|
-
assert generator.get_state_filter() is not None
|
148
|
-
|
149
|
-
def test_get_condition_function_success(
|
150
|
-
self,
|
151
|
-
generator: Generator,
|
152
|
-
from_trajectory: Trajectory,
|
153
|
-
to_trajectory: Trajectory,
|
154
|
-
):
|
155
|
-
condition_function = generator.get_condition_function(
|
156
|
-
from_trajectory=from_trajectory,
|
157
|
-
to_trajectory=to_trajectory,
|
158
|
-
)
|
159
|
-
|
160
|
-
assert condition_function is not None
|
161
|
-
assert (
|
162
|
-
condition_function(
|
163
|
-
Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC)
|
164
|
-
)
|
165
|
-
is True
|
166
|
-
)
|
167
|
-
|
168
|
-
def test_compute_accesses_success(
|
169
|
-
self,
|
170
|
-
generator: Generator,
|
171
|
-
from_trajectory: Trajectory,
|
172
|
-
to_trajectory: Trajectory,
|
173
|
-
):
|
174
|
-
accesses = generator.compute_accesses(
|
175
|
-
interval=Interval.closed(
|
176
|
-
Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
177
|
-
Instant.date_time(DateTime(2018, 1, 1, 2, 0, 0), Scale.UTC),
|
178
|
-
),
|
179
|
-
from_trajectory=from_trajectory,
|
180
|
-
to_trajectory=to_trajectory,
|
181
|
-
)
|
182
|
-
|
183
|
-
assert accesses is not None
|
184
|
-
assert isinstance(accesses, list)
|
185
|
-
assert accesses[0] is not None
|
186
|
-
assert isinstance(accesses[0], Access)
|
187
|
-
|
188
|
-
def test_set_step_success(self, generator: Generator):
|
189
|
-
generator.set_step(Duration.seconds(1.0))
|
190
|
-
|
191
|
-
def test_set_tolerance_success(self, generator: Generator):
|
192
|
-
generator.set_tolerance(Duration.seconds(1.0))
|
193
|
-
|
194
|
-
def test_set_aer_filter_success(self, generator: Generator):
|
195
|
-
generator.set_aer_filter(aer_filter=lambda aer: True)
|
196
|
-
|
197
|
-
def test_set_access_filter_success(self, generator: Generator):
|
198
|
-
generator.set_access_filter(access_filter=lambda access: True)
|
199
|
-
|
200
|
-
def test_set_state_filter_success(self, generator: Generator):
|
201
|
-
generator.set_state_filter(state_filter=lambda state_1, state_2: True)
|
202
|
-
|
203
|
-
def test_undefined_success(self):
|
204
|
-
generator = Generator.undefined()
|
205
|
-
|
206
|
-
assert generator is not None
|
207
|
-
assert isinstance(generator, Generator)
|
208
|
-
assert generator.is_defined() is False
|
209
|
-
|
210
|
-
def test_aer_ranges_success(self, environment: Environment):
|
211
|
-
# Construct arbitrary AER ranges
|
212
|
-
azimuth_interval = RealInterval.closed(0.0, 360.0)
|
213
|
-
elevation_interval = RealInterval.closed(0.0, 90.0)
|
214
|
-
range_interval = RealInterval.closed(0.0, 7000e3)
|
215
|
-
|
216
|
-
generator = Generator.aer_ranges(
|
217
|
-
azimuth_range=azimuth_interval,
|
218
|
-
elevation_range=elevation_interval,
|
219
|
-
range_range=range_interval,
|
220
|
-
environment=environment,
|
221
|
-
)
|
222
|
-
|
223
|
-
assert generator is not None
|
224
|
-
assert isinstance(generator, Generator)
|
225
|
-
assert generator.is_defined()
|
226
|
-
|
227
|
-
def test_aer_mask_success(self, environment: Environment):
|
228
|
-
# Construct arbitrary anAzimuthElevationMask using python dict
|
229
|
-
an_azimuth_elevation_mask = {
|
230
|
-
0.0: 30.0,
|
231
|
-
90.0: 60.0,
|
232
|
-
180.0: 60.0,
|
233
|
-
270.0: 30.0,
|
234
|
-
359.0: 30.0,
|
235
|
-
}
|
236
|
-
|
237
|
-
# Construct arbitrary aRangerange
|
238
|
-
a_range_range = RealInterval(0.0, 10e4, RealInterval.Type.Closed)
|
239
|
-
|
240
|
-
generator = Generator.aer_mask(
|
241
|
-
azimuth_elevation_mask=an_azimuth_elevation_mask,
|
242
|
-
range_range=a_range_range,
|
243
|
-
environment=environment,
|
244
|
-
)
|
245
|
-
|
246
|
-
assert generator is not None
|
247
|
-
assert isinstance(generator, Generator)
|
248
|
-
assert generator.is_defined()
|
@@ -1 +0,0 @@
|
|
1
|
-
# Apache License 2.0
|