Skip to content

Commit f6d8804

Browse files
committed
Added time_utils and test cases
This commit adds time utility functions to enable the Kessler library to make use of CDMs with day of year formats instead of the traditional yy-mm-dd format. This also adds a unit test function along with several test cdms retrieved from the NASA CARA repository.
1 parent b8f78c5 commit f6d8804

20 files changed

Lines changed: 2971 additions & 2 deletions

kessler/time_utils.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import datetime
22
def getCcsdsTimeFormat(timeString):
3-
43
'''
54
Adapted by Andrew Ng, 18/3/2022.
65
Original MATLAB source code found at: https://github.com/nasa/CARA_Analysis_Tools/blob/master/two-dimension_Pc/Main/TransformationCode/TimeTransformations/getCcsdsTimeFormat.m
76
The CCSDS time format is required to be of the general form
8-
97
yyyy-[mm-dd|ddd]THH:MM:SS[.F*][Z]
108
(1) The date and time fields are separated by a "T".
119
(2) The date field has a four digit year followed by either a two digit

tests/input/AlfanoTestCase01.cdm

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
CCSDS_CDM_VERS = 1.0
2+
CREATION_DATE = 2000-01-01T00:00:00.000
3+
ORIGINATOR = JSPOC
4+
MESSAGE_ID = A09_case_01
5+
TCA = 2000-01-01T00:00:00.000
6+
MISS_DISTANCE = 5.049717 [m]
7+
RELATIVE_SPEED = 0.014142377 [m/s]
8+
RELATIVE_POSITION_R = -0.502165 [m]
9+
RELATIVE_POSITION_T = -0.497806 [m]
10+
RELATIVE_POSITION_N = 4.999966 [m]
11+
RELATIVE_VELOCITY_R = -0.009963 [m]
12+
RELATIVE_VELOCITY_T = 0.010037 [m]
13+
RELATIVE_VELOCITY_N = -0.000001 [m]
14+
COMMENT HBR = 15.0
15+
OBJECT = OBJECT1
16+
OBJECT_DESIGNATOR = 1001
17+
CATALOG_NAME = SATCAT
18+
OBJECT_NAME = 1001
19+
INTERNATIONAL_DESIGNATOR = 1001
20+
EPHEMERIS_NAME = NONE
21+
COVARIANCE_METHOD = CALCULATED
22+
MANEUVERABLE = YES
23+
REF_FRAME = EME2000
24+
GRAVITY_MODEL = EGM-96: 36D 36O
25+
ATMOSPHERIC_MODEL = JBH09
26+
N_BODY_PERTURBATIONS = MOON,SUN
27+
SOLAR_RAD_PRESSURE = YES
28+
EARTH_TIDES = YES
29+
INTRACK_THRUST = NO
30+
TIME_LASTOB_START = 2000-01-01T00:00:00.000
31+
TIME_LASTOB_END = 2000-01-01T00:00:00.000
32+
RECOMMENDED_OD_SPAN = NaN [d]
33+
ACTUAL_OD_SPAN = NaN [d]
34+
OBS_AVAILABLE = NaN
35+
OBS_USED = NaN
36+
TRACKS_AVAILABLE = NaN
37+
TRACKS_USED = NaN
38+
RESIDUALS_ACCEPTED = NaN [%]
39+
WEIGHTED_RMS = NaN
40+
COMMENT Apogee Altitude = NaN [km]
41+
COMMENT Perigee Altitude = NaN [km]
42+
COMMENT Inclination = NaN [deg]
43+
AREA_PC = NaN [m**2]
44+
CD_AREA_OVER_MASS = NaN [m**2/kg]
45+
CR_AREA_OVER_MASS = NaN [m**2/kg]
46+
SEDR = NaN [W/kg]
47+
X = 153.446765 [km]
48+
Y = 41874.155870 [km]
49+
Z = 0.000000 [km]
50+
X_DOT = 3.066874761 [km/s]
51+
Y_DOT = -0.011373615 [km/s]
52+
Z_DOT = 0.000000000 [km/s]
53+
CR_R = 1.988970273925819e+01 [m**2]
54+
CT_R = -3.524140813027809e+02 [m**2]
55+
CT_T = 6.496749385722737e+03 [m**2]
56+
CN_R = 0.000000000000000e+00 [m**2]
57+
CN_T = 0.000000000000000e+00 [m**2]
58+
CN_N = 1.205039522307600e+00 [m**2]
59+
CRDOT_R = 2.675448519614438e-02 [m**2/s]
60+
CRDOT_T = -4.943011253984911e-01 [m**2/s]
61+
CRDOT_N = 0.000000000000000e+00 [m**2/s]
62+
CRDOT_RDOT = 3.761358714147070e-05 [m**2/s**2]
63+
CTDOT_R = -1.027762112958557e-03 [m**2/s]
64+
CTDOT_T = 1.780445954821163e-02 [m**2/s]
65+
CTDOT_N = 0.000000000000000e+00 [m**2/s]
66+
CTDOT_RDOT = -1.349905611451490e-06 [m**2/s**2]
67+
CTDOT_TDOT = 5.376164545080801e-08 [m**2/s**2]
68+
CNDOT_R = 0.000000000000000e+00 [m**2/s]
69+
CNDOT_T = 0.000000000000000e+00 [m**2/s]
70+
CNDOT_N = -6.070876344492500e-05 [m**2/s]
71+
CNDOT_RDOT = 0.000000000000000e+00 [m**2/s**2]
72+
CNDOT_TDOT = 0.000000000000000e+00 [m**2/s**2]
73+
CNDOT_NDOT = 3.390390010767800e-09 [m**2/s**2]
74+
CDRG_R = 0.000000000000000e+00 [m**3/kg]
75+
CDRG_T = 0.000000000000000e+00 [m**3/kg]
76+
CDRG_N = 0.000000000000000e+00 [m**3/kg]
77+
CDRG_RDOT = 0.000000000000000e+00 [m**3/(kg*s)]
78+
CDRG_TDOT = 0.000000000000000e+00 [m**3/(kg*s)]
79+
CDRG_NDOT = 0.000000000000000e+00 [m**3/(kg*s)]
80+
CDRG_DRG = 1.000000000000000e-12 [m**4/kg**2]
81+
CSRP_R = 0.000000000000000e+00 [m**3/kg]
82+
CSRP_T = 0.000000000000000e+00 [m**3/kg]
83+
CSRP_N = 0.000000000000000e+00 [m**3/kg]
84+
CSRP_RDOT = 0.000000000000000e+00 [m**3/(kg*s)]
85+
CSRP_TDOT = 0.000000000000000e+00 [m**3/(kg*s)]
86+
CSRP_NDOT = 0.000000000000000e+00 [m**3/(kg*s)]
87+
CSRP_DRG = 0.000000000000000e+00 [m**4/kg**2]
88+
CSRP_SRP = 1.000000000000000e-12 [m**4/kg**2]
89+
OBJECT = OBJECT2
90+
OBJECT_DESIGNATOR = 1002
91+
CATALOG_NAME = SATCAT
92+
OBJECT_NAME = 1002
93+
INTERNATIONAL_DESIGNATOR = 1002
94+
EPHEMERIS_NAME = NONE
95+
COVARIANCE_METHOD = CALCULATED
96+
MANEUVERABLE = YES
97+
REF_FRAME = EME2000
98+
GRAVITY_MODEL = EGM-96: 36D 36O
99+
ATMOSPHERIC_MODEL = JBH09
100+
N_BODY_PERTURBATIONS = MOON,SUN
101+
SOLAR_RAD_PRESSURE = YES
102+
EARTH_TIDES = YES
103+
INTRACK_THRUST = NO
104+
TIME_LASTOB_START = 2000-01-01T00:00:00.000
105+
TIME_LASTOB_END = 2000-01-01T00:00:00.000
106+
RECOMMENDED_OD_SPAN = NaN [d]
107+
ACTUAL_OD_SPAN = NaN [d]
108+
OBS_AVAILABLE = NaN
109+
OBS_USED = NaN
110+
TRACKS_AVAILABLE = NaN
111+
TRACKS_USED = NaN
112+
RESIDUALS_ACCEPTED = NaN [%]
113+
WEIGHTED_RMS = NaN
114+
COMMENT Apogee Altitude = NaN [km]
115+
COMMENT Perigee Altitude = NaN [km]
116+
COMMENT Inclination = NaN [deg]
117+
AREA_PC = NaN [m**2]
118+
CD_AREA_OVER_MASS = NaN [m**2/kg]
119+
CR_AREA_OVER_MASS = NaN [m**2/kg]
120+
SEDR = NaN [W/kg]
121+
X = 153.447264 [km]
122+
Y = 41874.156370 [km]
123+
Z = 0.005000 [km]
124+
X_DOT = 3.066864761 [km/s]
125+
Y_DOT = -0.011363615 [km/s]
126+
Z_DOT = -0.000000001 [km/s]
127+
CR_R = 1.989074842319444e+01 [m**2]
128+
CT_R = -3.524310089952797e+02 [m**2]
129+
CT_T = 6.496894829253188e+03 [m**2]
130+
CN_R = -9.767348673026151e-21 [m**2]
131+
CN_T = 6.463165376425425e-19 [m**2]
132+
CN_N = 1.204674647143796e+00 [m**2]
133+
CRDOT_R = 2.675573872452930e-02 [m**2/s]
134+
CRDOT_T = -4.943115446971844e-01 [m**2/s]
135+
CRDOT_N = -1.054655281005110e-22 [m**2/s]
136+
CRDOT_RDOT = 3.761433292802947e-05 [m**2/s**2]
137+
CTDOT_R = -1.027907518900499e-03 [m**2/s]
138+
CTDOT_T = 1.780719276302711e-02 [m**2/s]
139+
CTDOT_N = 2.016252743098005e-24 [m**2/s]
140+
CTDOT_RDOT = -1.350111723313400e-06 [m**2/s**2]
141+
CTDOT_TDOT = 5.377343757879955e-08 [m**2/s**2]
142+
CNDOT_R = -6.046657966019955e-23 [m**2/s]
143+
CNDOT_T = 6.318580118652501e-22 [m**2/s]
144+
CNDOT_N = -6.071534561359923e-05 [m**2/s]
145+
CNDOT_RDOT = -8.386681333817634e-27 [m**2/s**2]
146+
CNDOT_TDOT = 2.258381275085438e-27 [m**2/s**2]
147+
CNDOT_NDOT = 3.392080345234430e-09 [m**2/s**2]
148+
CDRG_R = 0.000000000000000e+00 [m**3/kg]
149+
CDRG_T = 0.000000000000000e+00 [m**3/kg]
150+
CDRG_N = 0.000000000000000e+00 [m**3/kg]
151+
CDRG_RDOT = 0.000000000000000e+00 [m**3/(kg*s)]
152+
CDRG_TDOT = 0.000000000000000e+00 [m**3/(kg*s)]
153+
CDRG_NDOT = 0.000000000000000e+00 [m**3/(kg*s)]
154+
CDRG_DRG = 1.000000000000000e-12 [m**4/kg**2]
155+
CSRP_R = 0.000000000000000e+00 [m**3/kg]
156+
CSRP_T = 0.000000000000000e+00 [m**3/kg]
157+
CSRP_N = 0.000000000000000e+00 [m**3/kg]
158+
CSRP_RDOT = 0.000000000000000e+00 [m**3/(kg*s)]
159+
CSRP_TDOT = 0.000000000000000e+00 [m**3/(kg*s)]
160+
CSRP_NDOT = 0.000000000000000e+00 [m**3/(kg*s)]
161+
CSRP_DRG = 0.000000000000000e+00 [m**4/kg**2]
162+
CSRP_SRP = 1.000000000000000e-12 [m**4/kg**2]

0 commit comments

Comments
 (0)