There are two basic kinds of satellite nodes: geostationary and non-geostationary satellite nodes. In addition, terminal nodes can be placed on the Earth's surface. As is explained later in Section 16.3, each of these three different types of nodes is actually implemented with the same class SatNode object, but with different position, handoff manager, and link objects attached. The position object keeps track of the satellite node's location in the coordinate system as a function of the elapsed simulation time. This position information is used to determine link propagation delays and appropriate times for link handoffs.
Figure 16.2 illustrates the spherical coordinate system, and the corresponding Cartesian coordinate system. The coordinate system is centered at the Earth's center, and the z axis coincides with the Earth's axis of rotation. corresponds to 0o longitude (prime meridian) on the equator.
Specifically, there is one class of satellite node Class Node/SatNode, to which one of three types of Position objects may be attached. Each SatNode and Position object is a split OTcl/C++ object, but most of the code resides in C++. The following types of position objects exist:
$ns satnode terminal $lat $lon
$ns satnode geo $lon
Satellite orbits are usually specified by six parameters: altitude, semi-major axis, eccentricity, right ascension of ascending node, inclination, and time of perigee passage. The polar orbiting satellites in have purely circular orbits, so we simplify the specification of the orbits to include only three parameters: altitude, inclination, and longitude, with a fourth parameter alpha specifying initial position of the satellite in the orbit, as described below. Altitude is specified in kilometers above the Earth's surface, and inclination can range from [0,180] degrees, with 90 corresponding to pure polar orbits and angles greater than 90 degrees corresponding to ``retrograde'' orbits. The ascending node refers to the point where the footprint of the satellite orbital track crosses the equator moving from south to north. In this simulation model, the parameter longitude of ascending node specifies the earth-centric longitude at which the satellite's nadir point crosses the equator moving south to north.16.3 Longitude of ascending node can range from [-180,180] degrees. The fourth parameter, alpha, specifies the initial position of the satellite along this orbit, starting from the ascending node. For example, an alpha of 180 degrees indicates that the satellite is initially above the equator moving from north to south. Alpha can range from [0,360] degrees. Finally, a fifth parameter, plane, is specified when creating polar satellite nodes- all satellites in the same plane are given the same plane index. The Simulator instproc satnode can be used to create a polar satellite with an attached position object as follows:
$ns satnode polar $alt $inc $lon $alpha $plane
Note that the above methods use the atomic satnode instproc. In Section 16.2.2, we introduce wrapper methods that may be more convenient for generating various types of satellite nodes:
$ns satnode-terminal $latitude $longitude $ns satnode-polar $alt $inc $lon $alpha $plane $linkargs $chan $ns satnode-geo $longitude $linkargs $chan $ns satnode-geo-repeater $longitude $chan