File: oneweb.tcl

package info (click to toggle)
savi 1.5.1-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 2,824 kB
  • sloc: ansic: 6,932; tcl: 5,011; makefile: 266; sh: 237
file content (63 lines) | stat: -rw-r--r-- 1,888 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#
# * PROPOSED LARGE BROADBAND CONSTELLATIONS - CURRENT EFFORTS
# *
# * OneWeb
# *
# * Greg Wyler's followup to the popular O3b.
# *
# * A Walker polar star geometry. Note the 'orbital seam' where
# * the footprints of ascending (going north over the Equator) and
# * descending (going (south) satellites overlap more to ensure
# * continuous coverage.
# *
# * This simulation is a rough approximation, based only on news reports.
# * It is speculative, not authoritative, and not finalised.
# *
# * "OneWeb’s 150-kilogram satellites will operate in an orbit
# * 1,200 kilometers in altitude, in 18 planes of 40 satellites each,
# * with an inclination of 87.9 degrees relative to the equator."
# *  -- OneWeb Pledges Vigilance on Orbital Debris Issue,
# * Peter B. de Selding, October 15, 2015.
# http://spacenews.com/oneweb-pledges-vigilance-on-orbital-debris-issue/

# * See http://oneweb.world/ or http://spacenews.com/tag/oneweb/
# *
# * Uses intersatellite links, which are not yet simulated here.

# $Id: oneweb.tcl,v 1.4 2016/01/18 03:16:52 lloydwood Exp $

set SATS_PER_PLANE 40
set NUM_PLANES 18

# rough guess.
set INTERPLANE_SPACING 10.0

# setup orbital elements
set a [expr 1200.0+$RADIUS_OF_EARTH]
set e 0.0
set inc 87.9
set omega 0.0

# Ku-band, but presume high elevation angle for terminals.
set coverage_angle 50.0

# compute period of orbit
set T_per [expr 2 * $PI * pow($a,1.5) / sqrt($MU)]


satellites GV_BEGIN
for {set j 0} {$j < $NUM_PLANES} {incr j} {
	set Omega [expr $j * $INTERPLANE_SPACING]
	for {set i 0} {$i < $SATS_PER_PLANE} {incr i} {
		if { $j % 2 == 0} {
			set plane_offset 0
		} else {
			set plane_offset [expr $T_per / $SATS_PER_PLANE / 2.0]
		}
		set T [expr $T_per * $i / $SATS_PER_PLANE + $plane_offset]
		set n [satellites LOAD $a $e $inc $Omega $omega $T "OneWeb ($j, $i)"]
		if {$i > 0} {satellites ORBIT_SET $n 0}
	}
}
satellites GV_END