AccessComputation Class |
Namespace: AGI.Foundation.Access
The AccessComputation type exposes the following members.
Name | Description | |
---|---|---|
AccessComputation | Initializes a new instance. | |
AccessComputation(AccessComputation, CopyContext) | Initializes a new instance as a copy of an existing instance. |
Name | Description | |
---|---|---|
CalculateCompleteIntervalsPerConstraint |
Gets or sets a value indicating whether satisfaction intervals are computed for each
constraint in the Access computation. If this value is set to true,
ConstraintResults will contain an entry for each
constraint, and SatisfactionIntervals will
be filled with the intervals over which the constraint was satisfied. If this value
is set to false, ConstraintResults will be null.
The value of this property will not affect OverallSatisfactionIntervals.
Generally, setting this property to false will result in much better performance.
| |
DebuggingLogger |
Gets or sets a logger to which debugging information will be written.
| |
EventTimes |
Gets or sets the manner in which event times are to be reported.
| |
InertialFrameForLightTravel |
Gets or sets the inertial reference frame in which light travel is modeled.
| |
IsFrozen |
Gets a value indicating whether this object is frozen. A frozen object cannot be modified and an
ObjectFrozenException will be thrown if an attempt is made to do so.
(Inherited from DefinitionalObject.) | |
LightTravelTimeConvergenceTolerance |
Gets or sets the convergence tolerance used in determining the light travel time.
| |
Model |
Gets or sets which effects are to be consider in modeling the signal path and observation.
| |
OverrideConstraintSampling |
Gets or sets a value indicating whether the sampling parameters specified by Sampling should be
applied to all constraints, overriding the sampling parameters specified by the constraints themselves. By
default, this value is .
| |
Receiver |
Gets or sets the IServiceProvider for the object that is receiving the signal for
purposes of the Access computation.
| |
ReceiverConstraints |
Gets a list of constraints that are applied to the Receiver.
| |
ReceiverVelocityVectorForAberration |
Gets or sets the velocity vector used in modeling the affect of aberration on the observed signal
at the location of the receiver.
| |
Sampling |
Gets an instance describing how all constraints are to be sampled as part of this AccessComputation
if OverrideConstraintSampling is . If OverrideConstraintSampling
is , this property is ignored.
| |
Transmitter |
Gets or sets the IServiceProvider for the object that is transmitting the signal for
purposes of the Access computation.
| |
TransmitterConstraints |
Gets a list of constraints that are applied to the Transmitter.
| |
TransmitterVelocityVectorForAberration |
Gets or sets the velocity vector used in modeling the affect of aberration on the observed signal
at the location of the transmitter.
|
Name | Description | |
---|---|---|
CheckForSameDefinition(AccessComputation) |
Checks to determine if another instance has the same definition as this instance and
returns if it does. Derived classes MUST override this method and check
all new fields introduced by the derived class for definitional equivalence. It is NOT necessary
to check base class fields because the base class will already have done that. When overriding this method,
you should NOT call the base implementation because it will return for all derived-class instances.
Derived classes should check the type of other to preserve the symmetric nature of IsSameDefinition(Object).
| |
CheckForSameDefinition(DefinitionalObject) |
Checks to determine if another instance has the same definition as this instance and
returns if it does. Derived classes MUST override this method and check
all new fields introduced by the derived class for definitional equivalence. It is NOT necessary
to check base class fields because the base class will already have done that. When overriding this method,
you should NOT call the base implementation because it will return for all derived-class instances.
Derived classes should check the type of other to preserve the symmetric nature of IsSameDefinition(Object).
(Overrides DefinitionalObjectCheckForSameDefinition(DefinitionalObject).) | |
Clone |
Clones this object using the specified context.
(Overrides DefinitionalObjectClone(CopyContext).) | |
ComputeCurrentDefinitionHashCode |
Computes a hash code based on the current properties of this object. Derived classes MUST override this
method and compute a hash code that combines: a unique hash code seed, the base implementation result, and
the hash codes of all new fields introduced by the derived class which are used in the
CheckForSameDefinition(DefinitionalObject) method.
(Overrides DefinitionalObjectComputeCurrentDefinitionHashCode.) | |
ComputeIntervals(TimeIntervalCollection) |
Finds the intervals during which all constraints are satisfied.
| |
ComputeIntervals(JulianDate, JulianDate) |
Finds the intervals during which all constraints are satisfied.
| |
ComputeIntervals(TimeIntervalCollection, ITrackCalculationProgress) |
Finds the intervals during which all constraints are satisfied.
| |
ComputeIntervals(JulianDate, JulianDate, ITrackCalculationProgress) |
Finds the intervals during which all constraints are satisfied.
| |
CreateQuery |
Creates an AccessQuery from this computation.
| |
EnumerateDependencies |
Enumerates the dependencies of this object by calling
EnumerateT(T) for each object that this object directly depends upon.
Derived classes which contain additional dependencies MUST override this method, call the base
implementation, and enumerate dependencies introduced by the derived class.
(Overrides DefinitionalObjectEnumerateDependencies(DependencyEnumerator).) | |
Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
Freeze |
Freezes this object. Further attempts to modify it will result
in an ObjectFrozenException.
(Inherited from DefinitionalObject.) | |
FreezeAggregatedObjects |
Called by Freeze to also freeze any objects that are considered to be a part of this object.
Derived classes which contain additional aggregated objects MUST override this method, call the base
implementation, and freeze aggregated objects introduced by the derived class. The objects that need to be
frozen in this method are frequently created in this object's constructor and are not settable via
properties.
(Overrides DefinitionalObjectFreezeAggregatedObjects.) | |
GetDefinitionHashCode |
Gets a hash code representing the definition of this object.
(Inherited from DefinitionalObject.) | |
GetEvaluator |
Gets an evaluator that can be used to determine whether Access is available
for individual Julian dates.
| |
GetEvaluator(EvaluatorGroup) |
Gets an evaluator that can be used to determine whether Access is available
for individual Julian dates.
| |
GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
IsSameDefinition |
Determines if this object has the same definition as another object.
(Inherited from DefinitionalObject.) | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
ThrowIfFrozen |
Throws ObjectFrozenException if this object IsFrozen.
This method should be called from any method or property that modifies this object.
(Inherited from DefinitionalObject.) | |
ToString | Returns a string that represents the current object. (Inherited from Object.) |
Though AccessComputation has its use cases we recommend using constraints directly as AccessQueries rather than attaching them to AccessComputations. AccessQueries have much more flexibility in the sorts of networks that they can represent. Most notably AccessComputations are limited to calculating Access for a single pair of Platforms.
When talking about whether one object can "access" another object, we are typically talking about inter-visibility. When can my satellite see my facility? Determining when a satellite can see a facility might involve checking any number of requirements, depending on the specific problem being solved. For starters, you would likely want to require that the surface of the Earth not lie between the satellite and the facility. This might involve the use of an idealized, spheroidal model of the Earth. Or it might involve checking for actual terrain obstructing the line of sight. Next, you may want to model a specific sensor on the satellite in order to further restrict what it is able to see. All of these things are AccessConstraints.
An AccessComputation without any constraints will report that Access is always available. Each constraint that is added to the computation further restricts Access availability. Conceptually, the overall intervals when Access is available are the intersection of the intervals when each constraint is satisfied. In actuality, AccessComputation attempts to work faster by not evaluating intervals for a constraint if those intervals have already been eliminated by a previous constraint. AccessComputation will also evaluate the least computationally expensive constraints first in the hope that significant chunks of time will be eliminated from consideration before the more expensive constraints must be evaluated.
The Transmitter and Receiver are the two objects involved in the Access computation. The names "Transmitter" and "Receiver" serve only to distinguish the two objects. AccessComputation itself does not treat the two objects any differently. Specific AccessConstraints, however, may impart additional meaning to one or both of these roles. When this is the case, the documentation for the AccessConstraint should make it clear.
The only requirement of the two objects is that they implement IServiceProvider. Constraints will require additional capabilities from the object and they will obtain the additional capabilities through the IServiceProvider interface. The documentation for each constraint will describe the service interfaces that are required by the constraint. Consider using Platform to represent your objects involved in Access computations.
Internally, AccessComputation uses TimeIntervalFinder and JulianDateFunctionExplorer to evaluate the constraints.
Note that AccessComputation will create links based on the light time delay settings, but will not add any extensions to the links themselves. So, if a constraint (e.g. CommunicationLinkConstraint) requires additional information on the link, AccessComputation will not work. For these cases, use the constraints as AccessQuery objects and specify the links explicitly. For more information, see the documentation overview on using AccessQuery.