def _OneWeb_00041(): # OneWeb initial LEO constellation # SAT-LOI-20160428-00041 # Orbital planes 1 to 18 # 1200 km 87.9 degree # RAAN[0] = 0, delta_RAAN = 10.2 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 4.5 delta_NNU = 9 n_planes = 18 # number of planes n_sats = 40 # number of satellites per plane set = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 1200 * u.km, ecc=0 * u.one, inc=87.9 * u.deg, rraan=np.arange(0, n_planes) * 10.2 * u.deg, aargp=np.repeat(0 * u.deg, n_planes), nnnu=np.split( np.mod( np.tile(np.arange(0, n_sats) * 9 * u.deg, (n_planes, 1)) + np.tile(np.arange(0, n_planes) * 4.5 * u.deg, (n_sats, 1)).T, 360 * u.deg), n_planes)) set.set_color("#0074D9") # Blue set.set_fov(40.14 * u.deg) constellation = Constellation() constellation.append(set) return constellation
def _Audacy_00117(): asat_1 = Satellite.circular(Earth.poli_body, 20270.4 * u.km - Earth.poli_body.R_mean, inc=25 * u.deg, raan=157.64 * u.deg, arglat=0 * u.deg) asat_2 = Satellite.circular(Earth.poli_body, 20270.4 * u.km - Earth.poli_body.R_mean, inc=25 * u.deg, raan=217.64 * u.deg, arglat=180 * u.deg) asat_3 = Satellite.circular(Earth.poli_body, 20270.4 * u.km - Earth.poli_body.R_mean, inc=25 * u.deg, raan=277.64 * u.deg, arglat=0 * u.deg) constellation = Constellation() constellation.append(asat_1) constellation.append(asat_2) constellation.append(asat_3) constellation.set_color("#0074D9") constellation.set_fov(21.22 * u.deg) return constellation
def _Telesat_00053(): J2017 = time.Time('J2017', scale='tt') # SAT-MPL-20200526-00053 # Orbital plane 1 - 20 & 37 - 43 (polar orbits) # 27 planes (@ 1015 km, 99.0 degree, 13 sats/plane) # RAAN[0] = 0, delta_RAAN = 360 / 27 * 2 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 1.025 delta_NNU = 360 / 13 # Index of NNNU[plane#][sat#] # Note: to let the code make more sense indexes match schedule planes as: # [37, 39, ..., 43, 2, 4, ..., 42, 1, 3, ..., 19] num_plane = 27 # number of planes num_sat = 13 # number of satellites per plane set_polar = SatSet.as_set(Earth.poli_body, a=Earth.poli_body.R_mean + 1015 * u.km, ecc=0 * u.one, inc=99.0 * u.deg, rraan=np.mod(np.arange(0, num_plane) * 360.0 / num_plane * 2, 360.0) * u.deg, aargp=np.repeat(0 * u.deg, num_plane), nnnu=np.split( np.mod(np.tile(np.arange(0, num_sat) * 360.0 / num_sat, (num_plane, 1)) + np.tile(np.arange(0, num_plane) * 1.025, (num_sat, 1)).T, 360), num_plane) * u.deg, epoch=J2017) set_polar.set_color("#0074D9") # Blue set_polar.set_fov(44.85 * u.deg) # 40 planes (@ 1325 km, 50.88 degree, 33 sats/plane) # RAAN[0] = 0, delta_RAAN = 360 / 40 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 360 / 33 / 5 delta_NNU = 360 / 33 --- 0.0:1.09:13.1 with some weird ordering per plane # Index of NNNU[plane#][sat#] # Note: to let the code make more sense indexes match schedule planes as: num_plane = 40 # number of planes num_sat = 33 # number of satellites per plane set_inc = SatSet.as_set(Earth.poli_body, a=Earth.poli_body.R_mean + 1325 * u.km, ecc=0 * u.one, inc=50.88 * u.deg, rraan=np.mod(np.arange(0, num_plane) * 360.0 / num_plane * 2, 360.0) * u.deg, aargp=np.repeat(0 * u.deg, num_plane), nnnu=np.split( np.mod(np.tile(np.arange(0, num_sat) * 360.0 / num_sat, (num_plane, 1)) + np.tile(np.array([0, 3, 1, 4, 2] * 8) * 2.18, (num_sat, 1)).T, 360), num_plane) * u.deg, epoch=J2017) set_inc.set_color("#FF4136") # Blue set_inc.set_fov(44.85 * u.deg) constellation = Constellation() constellation.append(set_polar) constellation.append(set_inc) return constellation
def _Astrome(): n_planes = 11 n_sats = 18 set = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 1530 * u.km, ecc=0 * u.one, inc=30.0 * u.deg, rraan=np.arange(0, n_planes) * 30 * u.deg, aargp=np.repeat(0 * u.deg, n_planes), nnnu=np.split( np.mod( np.tile(np.linspace(0, 360, n_sats) * u.deg, (n_planes, 1)) + np.tile(np.arange(0, n_planes) * 1.818 * u.deg, (n_sats, 1)).T, 360 * u.deg), n_planes)) set.set_color("#0074D9") set.set_fov(37.00 * u.deg) constellation = Constellation() constellation.append(set) return constellation
def _O3b(): inc_plane1 = SatPlane.as_plane( Earth, a=Earth.R_mean + 8062 * u.km, ecc=0 * u.one, inc=70 * u.deg, raan=0 * u.deg, argp=0 * u.deg, nnu=np.array([3.5, 75.5, 147.5, 219.5, 291.5]) * u.deg) inc_plane1.set_color("#0074D9") equ_plane = SatPlane.as_plane(Earth, a=Earth.R_mean + 8062 * u.km, ecc=0 * u.one, inc=0 * u.deg, raan=0 * u.deg, argp=0 * u.deg, nnu=np.linspace(0, 360, 32) * u.deg) equ_plane.set_color("#FF4136") equ_plane.set_fov(51.53 * u.deg) inc_plane2 = SatPlane.as_plane( Earth, a=Earth.R_mean + 8062 * u.km, ecc=0 * u.one, inc=70 * u.deg, raan=180 * u.deg, argp=0 * u.deg, nnu=np.array([183.5, 225.5, 327.5, 111.5, 39.5]) * u.deg) inc_plane2.set_color("#0074D9") constellation = Constellation() constellation.append(inc_plane1) constellation.append(equ_plane) constellation.append(inc_plane2) return constellation
Earth.poli_body, a=Earth.poli_body.R_mean + 550 * u.km, ecc=0 * u.one, inc=53.0 * u.deg, rraan=np.arange(0, n_plane) * 360 / n_plane * u.deg, aargp=np.repeat(0 * u.deg, n_plane), nnnu=np.split( np.mod( np.tile(np.arange(0, n_sat) * 360 / n_sat * u.deg, (n_plane, 1)) + np.tile(np.arange(0, n_plane) * (0) * u.deg, (n_sat, 1)).T, 360 * u.deg), n_plane), epoch=J2019) set.set_color("#0074D9") # Blue constellation = Constellation() constellation.append(set) #constellation.set_fov(44.85 * u.deg) scenario.add_satellite(constellation) # Initizalize scenario scenario.initialize() # Start animation scenario.draw_scenario() scenario.step() # do one step to let numba compile fig.scene.movie_maker.record = True scenario.animate(scenario) mlab.show()
def _SpaceX_00087(): J2015 = time.Time('J2015', scale='tt') # SAT-MOD-20190830-00087 # Orbital plane 1 # 550 km 53 degree # RAAN[0] = 0, delta_RAAN = 5 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 0 ?? delta_NNU = 360 / 72 np_550_530 = 72 # number of planes ns_550_530 = 22 # number of satellites per plane set_550_530 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 550 * u.km, ecc=0 * u.one, inc=53.0 * u.deg, rraan=np.arange(0, np_550_530) * 5 * u.deg, aargp=np.repeat(0 * u.deg, np_550_530), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_550_530) * 360 / ns_550_530 * u.deg, (np_550_530, 1)) + np.tile(np.arange(0, np_550_530) * 0 * u.deg, (ns_550_530, 1)).T, 360 * u.deg), np_550_530), epoch=J2015) set_550_530.set_color("#0074D9") # Blue set_550_530.set_fov(44.85 * u.deg) # Sat-LOA-20161115-00118 # Orbital planes 33 to 64 # 1110 km 53.8 degree # RAAN[0] = 5.6, delta_RAAN = 11.25 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 3.375 delta_NNU = 7.2 np_1110_538 = 32 # number of planes ns_1110_538 = 50 # number of satellites per plane set_1110_538 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 1110 * u.km, ecc=0 * u.one, inc=53.8 * u.deg, rraan=np.arange(5.6, 360, 11.25) * u.deg, aargp=np.repeat(0 * u.deg, np_1110_538), nnnu=np.split( np.mod( np.tile(np.arange(0, 360, 7.2) * u.deg, (np_1110_538, 1)) + np.tile(np.arange(0, 105, 3.375) * u.deg, (ns_1110_538, 1)).T, 360 * u.deg), np_1110_538), epoch=J2015) set_1110_538.set_color("#FF851B") # Orange set_1110_538.set_fov(40.72 * u.deg) # Sat-LOA-20161115-00118 # Orbital planes 65 to 72 # 1130 km 74 degree # RAAN[0] = 0, delta_RAAN = 45 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 7.2 delta_NNU = 7.2 np_1130_740 = 8 # number of planes ns_1130_740 = 50 # number of satellites per plane set_1130_740 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 1130 * u.km, ecc=0 * u.one, inc=74.0 * u.deg, rraan=np.arange(0, 360, 45) * u.deg, aargp=np.repeat(0 * u.deg, np_1130_740), nnnu=np.split( np.mod( np.tile(np.arange(0, 360, 7.2) * u.deg, (np_1130_740, 1)) + np.tile(np.arange(0, 55, 7.2) * u.deg, (ns_1130_740, 1)).T, 360 * u.deg), np_1130_740), epoch=J2015) set_1130_740.set_color("#2ECC40") # Green set_1130_740.set_fov(40.59 * u.deg) # Sat-LOA-20161115-00118 # Orbital planes 73 to 78 # 1325 km 70 degree # RAAN[0] = 0, delta_RAAN = 60 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 0.8 delta_NNU = 4.8 np_1325_700 = 6 # number of planes ns_1325_700 = 75 # number of satellites per plane set_1325_700 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 1325 * u.km, ecc=0 * u.one, inc=70.0 * u.deg, rraan=np.arange(0, np_1325_700) * 60 * u.deg, aargp=np.repeat(0 * u.deg, np_1325_700), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_1325_700) * 4.8 * u.deg, (np_1325_700, 1)) + np.tile( np.arange(0, np_1325_700) * 0.8 * u.deg, (ns_1325_700, 1)).T, 360 * u.deg), np_1325_700), epoch=J2015) set_1325_700.set_color("#B10DC9") # Purple set_1325_700.set_fov(39.67 * u.deg) # Sat-LOA-20161115-00118 # Orbital planes 79 to 83 # 1275 km 81 degree # RAAN[0] = 0, delta_RAAN = 72.0 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 7.2 delta_NNU = 7.2 np_1275_810 = 5 # number of planes ns_1275_810 = 75 # number of satellites per plane set_1275_810 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 1275 * u.km, ecc=0 * u.one, inc=81.0 * u.deg, rraan=np.arange(0, np_1275_810) * 72.0 * u.deg, aargp=np.repeat(0 * u.deg, np_1275_810), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_1275_810) * 4.8 * u.deg, (np_1275_810, 1)) + np.tile( np.arange(0, np_1275_810) * 0.8 * u.deg, (ns_1275_810, 1)).T, 360 * u.deg), np_1275_810), epoch=J2015) set_1275_810.set_color("#FF4136") # Red set_1275_810.set_fov(39.36 * u.deg) constellation = Constellation() constellation.append(set_550_530) constellation.append(set_1110_538) constellation.append(set_1130_740) constellation.append(set_1325_700) constellation.append(set_1275_810) return constellation
def _SpaceX_00037(): J2015 = time.Time('J2015', scale='tt') # Shell 1 # 550 km 53 degree # RAAN[0] = 0, delta_RAAN = 5 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 8.8 delta_NNU = 360 / 22 np_550_530 = 72 # number of planes ns_550_530 = 22 # number of satellites per plane set_550_530 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 550 * u.km, ecc=0 * u.one, inc=53.0 * u.deg, rraan=np.arange(0, np_550_530) * 5 * u.deg, aargp=np.repeat(0 * u.deg, np_550_530), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_550_530) * 360 / 22 * u.deg, (np_550_530, 1)) + np.tile( np.arange(0, np_550_530) * 8.8 * u.deg, (ns_550_530, 1)).T, 360 * u.deg), np_550_530), epoch=J2015) set_550_530.set_color("#0074D9") # Blue set_550_530.set_fov(44.85 * u.deg) # Shell 2 # 540 km 53.2 degree # RAAN[0] = 2.5, delta_RAAN = 5 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 12.35 delta_NNU = 360 / 22 np_540_532 = 72 # number of planes ns_540_532 = 22 # number of satellites per plane set_540_532 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 540 * u.km, ecc=0 * u.one, inc=53.2 * u.deg, rraan=np.arange(0, np_540_532) * 5 * u.deg + 2.5 * u.deg, aargp=np.repeat(0 * u.deg, np_540_532), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_540_532) * 360 / 22 * u.deg, (np_540_532, 1)) + np.tile( np.arange(0, np_540_532) * 12.35 * u.deg, (ns_540_532, 1)).T, 360 * u.deg), np_540_532), epoch=J2015) set_540_532.set_color("#FF851B") # Orange set_540_532.set_fov(40.72 * u.deg) # Shell 3 # 570 km 70 degree # RAAN[0] = 0, delta_RAAN = 10 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 7.65 delta_NNU = 360 / 20 np_570_70 = 36 # number of planes ns_570_70 = 20 # number of satellites per plane set_570_70 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 570.0 * u.km, ecc=0 * u.one, inc=70.0 * u.deg, rraan=np.arange(0, np_570_70) * 10 * u.deg, aargp=np.repeat(0 * u.deg, np_570_70), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_570_70) * 360 / 20 * u.deg, (np_570_70, 1)) + np.tile( np.arange(0, np_570_70) * 7.65 * u.deg, (ns_570_70, 1)).T, 360 * u.deg), np_570_70), epoch=J2015) set_570_70.set_color("#2ECC40") # Green set_570_70.set_fov(40.59 * u.deg) # Shell 4 # 560 km 97.6 degree # RAAN[0] = 63.7, delta_RAAN = 60 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 0.8 delta_NNU = 4.8 np_560_976a = 6 # number of planes ns_560_976a = 58 # number of satellites per plane set_560_976a = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 560.0 * u.km, ecc=0 * u.one, inc=97.6 * u.deg, rraan=np.arange(0, np_560_976a) * 60 * u.deg + 63.7 * u.deg, aargp=np.repeat(0 * u.deg, np_560_976a), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_560_976a) * 360 / ns_560_976a * u.deg, (np_560_976a, 1)) + np.tile( np.arange(0, np_560_976a) * 1.04 * u.deg, (ns_560_976a, 1)).T, 360 * u.deg), np_560_976a), epoch=J2015) set_560_976a.set_color("#B10DC9") # Purple set_560_976a.set_fov(97.6 * u.deg) # Shell 5 # 560 km 97.6 degree # RAAN[0] = 75.7, delta_RAAN = 12.0 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 0.275 delta_NNU = 360 / 43 np_560_976b = 4 # number of planes ns_560_976b = 43 # number of satellites per plane set_560_976b = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 560.0 * u.km, ecc=0 * u.one, inc=97.6 * u.deg, rraan=np.arange(0, np_560_976b) * 12.0 * u.deg + 75.7 * u.deg, aargp=np.repeat(0 * u.deg, np_560_976b), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_560_976b) * 360 / ns_560_976b * u.deg, (np_560_976b, 1)) + np.tile( np.arange(0, np_560_976b) * 0.275 * u.deg, (ns_560_976b, 1)).T, 360 * u.deg), np_560_976b), epoch=J2015) set_560_976b.set_color("#FF4136") # Red set_560_976b.set_fov(97.6 * u.deg) constellation = Constellation() constellation.append(set_550_530) constellation.append(set_540_532) constellation.append(set_570_70) constellation.append(set_560_976a) constellation.append(set_560_976b) return constellation
def _Kuiper_00057(): J2020 = time.Time('J2020', scale='tt') # The excel sheet attached to the application provides the details of each sat. # 630 km 51.9 degree shell # RAAN[0] = 0, delta_RAAN = 360/34 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 360 / 34 / 34 * 3 delta_NNU = 360 / 34 np_630 = 34 # number of planes ns_630 = 34 # number of satellites per plane set_630 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 630 * u.km, ecc=0 * u.one, inc=51.9 * u.deg, rraan=np.arange(0, np_630) * 360 / np_630 * u.deg, aargp=np.repeat(0 * u.deg, np_630), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_630) * 360 / ns_630 * u.deg, (np_630, 1)) + np.tile( np.arange(0, np_630) * 360 / np_630 / ns_630 * 3 * u.deg, (ns_630, 1)).T, 360 * u.deg), np_630), epoch=J2020) set_630.set_color("#0074D9") # Blue set_630.set_fov(48.2 * u.deg) # 610 km 42 degree shell # RAAN[0] = 0, delta_RAAN = 360 / 36 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 360/36/36*3 delta_NNU = 360/36 np_610 = 36 # number of planes ns_610 = 36 # number of satellites per plane set_610 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 610 * u.km, ecc=0 * u.one, inc=42.0 * u.deg, rraan=np.arange(0, np_610) * 360 / np_610 * u.deg, aargp=np.repeat(0 * u.deg, np_610), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_610) * 360 / ns_610 * u.deg, (np_610, 1)) + np.tile( np.arange(0, np_610) * 360 / ns_610 / np_610 * 3 * u.deg, (ns_610, 1)).T, 360 * u.deg), np_610), epoch=J2020) set_610.set_color("#FF851B") # Orange set_610.set_fov(48.2 * u.deg) # 590 km 33 degree shell # RAAN[0] = 0, delta_RAAN = 360 / 28 # ARGP[:] = 0 # NNNU[0][0] = 0 delta_NNNU = 360 / 28 / 28 delta_NNU = 360 / 28 np_590 = 28 # number of planes ns_590 = 28 # number of satellites per plane set_590 = SatSet.as_set( Earth.poli_body, a=Earth.poli_body.R_mean + 590 * u.km, ecc=0 * u.one, inc=33.0 * u.deg, rraan=np.arange(0, np_590) * 360 / np_590 * u.deg, aargp=np.repeat(0 * u.deg, np_590), nnnu=np.split( np.mod( np.tile( np.arange(0, ns_590) * 360 / ns_590 * u.deg, (np_590, 1)) + np.tile( np.arange(0, np_590) * 360 / ns_590 / np_590 * u.deg, (ns_590, 1)).T, 360 * u.deg), np_590), epoch=J2020) set_590.set_color("#2ECC40") # Green set_590.set_fov(48.2 * u.deg) constellation = Constellation() constellation.append(set_630) constellation.append(set_610) constellation.append(set_590) return constellation