The Chain Object
A chain () object allows you to extend the access analysis capabilities of STK. Access enables you to determine the times one object can see another object. But what if two objects cannot directly see each other, but each object can see a third object? This is where the Chains analysis capability can be used. By defining a Start object and End object and a set of object connection pairs, STK can compute times when one object can see another through connections to one or more other objects. For example, you can easily determine when LandSat can see a target and download information to a ground station through a relay satellite. The Chain configuration for the example would be as follows:
Option | Value |
---|---|
Start object | ImagingTarget |
End object | Santiago |
Connections |
ImagingTarget -> LandSat LandSat -> TDRS_East TDRS_East -> Santiago |
The path through the chain would be as follows:
- ImagingTarget -> LandSat -> TDRS_East -> Santiago
Chain Paths
When a Chain is computed, the first thing it does is compute all possible paths from the start object to the end object given the specified connection pairs. In the example above, there is one possible path that connects the start and end objects. Depending on the existing connections, there may be multiple ways to get from the start to end object. If you added another connection to the example above from LandSat directly to Santiago, computing the Chain would result in two paths:
- ImagingTarget -> LandSat -> TDRS_East -> Santiago
- ImagingTarget -> LandSat -> Santiago
Once the end object is reached in a path, the path is complete and is stored as a valid path. No further connections are computed for this path. This is important when multi-hops are discussed later.
Chain Strands
With the use of Constellation and Satellite Collection objects, Chains can be used to solve more sophisticated problems. For example, you may want to use TDRS_East or TDRS_West as the relay satellite. To model this situation, you would define a constellation of relay satellites and then incorporate that constellation into the Chain. When the Chain is computed, the first step is to compute all the paths from the start object to the end object. But when grouping objects are included, these grouping objects must be broken down into their individual objects (single objects in Constellation objects or entries in Satellite Collection objects) so accesses for each pair through the path can be computed. In doing this, each path may contain multiple ways to traverse from the start to end objects.
Each unique set of access pair objects from start to end objects in the Chain is called a Strand. All strands are computed for each path in the Chain. If no grouping objects are used in a Chain, the number of possible paths and the number of possible strands through the Chain will be identical.
When grouping objects are used in a Chain, a single path may generate many strands. This is especially true when a Chain is configured with a connection to allow for multi-hopping, where a grouping object connects to itself. When the Chain is computed, strands are removed whenever possible to reduce the time and memory needed to compute valid access data. You can reduce the number of strands by using Constellation Constraints, or by using Satellite Collection or Constellation routing files. For more information on how to create routing files, see Routing File Format. Strands which do not have any valid access times are removed.
Let's look at an example where a ground station (Facility1) is trying to communicate with another ground station (Facility2) through a Constellation object which contains two satellites, Satellite1 and Satellite2. The Constellation is allowed to have one hop within the constellation. The Chain configuration follows:
Option | Value |
---|---|
Start object | Facility1 |
End object | Facility2 |
Connections |
Facility1 -> Constellation1 Constellation1 -> Constellation1 Constellation1 -> Facility2 |
Possible paths for Chain1 |
Facility1 -> Constellation1 -> Facility2 Facility1 -> Constellation1 -> Constellation1 -> Facility2 |
Possible strands for Chain1 |
Facility1 -> Satellite1 -> Facility2 Facility1 -> Satellite2 -> Facility2 Facility1 -> Satellite1 -> Satellite2 -> Facility2 Facility1 -> Satellite2 -> Satellite1 -> Facility2 |
Chain Multi-hop Analysis
Chains also allow connections to specify the minimum and maximum number of times the connection can be used when computing paths from the start to end object. If the minimum number of times value for a connection is greater than zero (0), a path must contain that connection at least the specified number of times for that path to be valid. If the maximum number of times value for a connection is greater than one (1), then that connection can be used up to the specified value when creating valid paths.
The default values for min and max are set to zero (0) and one (1) respectively, so a connection does not need to be used in a path to be valid, and all valid paths could contain that connection no more than once. To simulate multi-hopping through a grouping object, a connection from the grouping object to itself is typically added with the minimum and maximum number of uses set to zero (0) and the maximum number of hops through itself, respectively.
For example, if you extend the example above by adding a third satellite to the constellation and you allow two hops within the constellation, the Chain configuration would be set as follows:
Option | Value |
---|---|
Start object | Facility1 |
End object | Facility2 |
Connections |
Facility1 -> Constellation1, minUses=0, maxUses=1 Constellation1 -> Constellation1, minUses=0, maxUses=2 Constellation1 -> Facility2, minUses=0, maxUses=1 |
Possible paths for Chain1 |
Facility1 -> Constellation1 -> Facility2 Facility1 -> Constellation1 -> Constellation1 -> Facility2 Facility1 -> Constellation1 -> Constellation1 -> Constellation1 -> Facility2 |
Possible strands for Chain1 |
Facility1 -> Satellite1 -> Facility2 Facility1 -> Satellite2 -> Facility2 Facility1 -> Satellite3 -> Facility2 Facility1 -> Satellite1 -> Satellite2 -> Facility2 Facility1 -> Satellite1 -> Satellite3 -> Facility2 Facility1 -> Satellite2 -> Satellite1 -> Facility2 Facility1 -> Satellite2 -> Satellite3 -> Facility2 Facility1 -> Satellite3 -> Satellite1 -> Facility2 Facility1 -> Satellite3 -> Satellite2 -> Facility2 Facility1 -> Satellite1 -> Satellite2 -> Satellite3 -> Facility2 Facility1 -> Satellite1 -> Satellite3 -> Satellite2 -> Facility2 Facility1 -> Satellite2 -> Satellite1 -> Satellite3 -> Facility2 Facility1 -> Satellite2 -> Satellite3 -> Satellite1 -> Facility2 Facility1 -> Satellite3 -> Satellite1 -> Satellite2 -> Facility2 Facility1 -> Satellite3 -> Satellite2 -> Satellite1 -> Facility2 |
As you can see, the combination of Chain connection pairs with minimum and maximum number of uses can allow for complex routing problems to be modeled.
Inserting, Saving, and Removing Objects in a Chain
When you insert a previously defined chain into a scenario, the subobjects are automatically inserted into the scenario if they are located in the same directory as the chain object. If the objects are already included in the scenario, they are not reinserted.