#
# Skybridge double-delta constellation. First for launch, 2000;
# second in 2002.

# this script for SaVi 0.6, by Lloyd Wood (L.Wood@surrey.ac.uk)
# <URL:http://www.ee.surrey.ac.uk/Personal/L.Wood/constellations/>
# April 1997.

# Two overlapping synchronised Walker constellations of sorts, to give
# frequency sharing with GEO.

# When one satellite is too near the centre of a GEO footprint, switch
# to its neighbour to avoid interference - well, that's the theory.

# information used from the SkyBridge FCC application, 28 February 1997.
# pp27-31. Fascinating 300+ page read! Skybridge is described as two
# 32-sat Walker constellations. Each 32-satellite constellation
# is 8 planes of 4 satellites, each separated by in ascending node by 45
# degrees, i.e. two overlapping deltas/rosettes. Lots of diversity.

# elevation angle apparently 10 degrees, but that's not quite full coverage.

# I'm not convinced by the orbital parameters given - they define the
# argument of perigee as 90 degrees, and the eccentricity as 0 degrees
# (table, p.30). Some redundancy, surely? Would have been impossible
# to figure out if they hadn't given a planar projection of satellite
# distribution; it's continuous-phasing.

set PI 3.14159
set MU 398601.2
set RADIUS_OF_EARTH 6378.14

set SATS_PER_PLANE 4
set NUM_PLANES 8

# set to one to show the first subconstellation after completed launch
set NUM_CONSTS 2

# offset of second SkyBridge sub-constellation, degrees
set LONG_OFFSET 10
set LAT_OFFSET -14

# setup orbital elements
set a [expr 1457.0+$RADIUS_OF_EARTH]
set e 0.0
set inc 55
set omega 0.0
set T_per [expr 2 * $PI * pow($a,1.5) / sqrt($MU)]

satellites GV_BEGIN

# outer loop for both sub-constellations
for {set k 0} {$k < $NUM_CONSTS} {incr k} {

   for {set j 0} {$j < $NUM_PLANES} {incr j} {
   
        set Omega [expr $j * 45.0 + $k * $LONG_OFFSET ]  
        set plane_offset [expr $T_per / 360 * $j * -33.75 + $k * $LAT_OFFSET ]
 
        for {set i 0} {$i < $SATS_PER_PLANE} {incr i} {
        
                set T [expr $T_per * $i / $SATS_PER_PLANE + $plane_offset]
		satellites LOAD $a $e $inc $Omega $omega $T
	}
    }
}
satellites GV_END
