WSF
wsf::space::OrbitalPropagatorOptimizingCondition Class Referenceabstract

#include <WsfSpaceOrbitalPropagatorCondition.hpp>

Inheritance diagram for wsf::space::OrbitalPropagatorOptimizingCondition:
Collaboration diagram for wsf::space::OrbitalPropagatorOptimizingCondition:

Public Member Functions

virtual bool Objective (UtOrbitalPropagatorBase &aPropagator, const UtCalendar &aBaseEpoch, double aOffsetTime) const =0
virtual std::pair< bool, double > InitialGuess (const UtOrbitalPropagatorBase &aPropagator) const =0
bool GetTimeToCondition (const UtOrbitalPropagatorBase &aPropagator, double &aTimeToCondition) const final
 This template pattern method performs the search for the time at which the condition obtains.
virtual bool HandleSpecialCases (const UtOrbitalPropagatorBase &aPropagator, double &aTimeToCondition) const
Public Member Functions inherited from wsf::space::OrbitalPropagatorCondition
OrbitalPropagatorConditionClone () const override=0
bool ProcessInput (UtInput &aInput) override
unsigned GetOrbitNumber () const
 Return the orbit number.
void SetOrbitNumber (unsigned aOrbitNumber)
 Set the orbit number.
virtual bool ValidateParameterRanges () const
virtual void Accept (OrbitalPropagatorConditionVisitor &aVisitor)=0
 Accept a visitor.
virtual std::string GetConditionString () const =0
 Return the string identifying the condition.
Public Member Functions inherited from WsfObject
 WsfObject ()
 This is the constructor for the WsfObject class.
 ~WsfObject () override
 This is the destructor for the WsfObject class.
const char * GetScriptClassName () const override
const std::string & GetType () const
WsfStringId GetTypeId () const
 Get the string ID of the 'type' of the object.
void SetType (WsfStringId aType)
const std::string & GetBaseType () const
WsfStringId GetBaseTypeId () const
const TypeListGetTypeList () const
bool IsA_TypeOf (WsfStringId aType) const
WsfObjectoperator= (const WsfObject &aRhs)
 Assignment operator.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
const std::string & GetName () const
WsfStringId GetNameId () const
void SetName (WsfStringId aName)

Additional Inherited Members

Public Types inherited from WsfObject
typedef std::vector< WsfStringIdTypeList
 The list of types returned by GetTypeList.
 WsfObject (const WsfObject &aSrc)
 Copy constructor (for Clone()).
Protected Attributes inherited from wsf::space::OrbitalPropagatorCondition
unsigned mOrbitNumber {0}

Detailed Description

A condition that performs an optimization. Subclasses of this condition use a optimization procedure to determine when the condition is satisfied. The sorts of conditions that can be computed as a subclass are any for which the condition is expressible as a function with a root representing the time at which the condition obtains. Most conditions are derived from this to allow for non-classical (i.e., not two-body) orbital propagators the opportunity to use their full dynamics to discover the time at which the condition is satisfied.

Member Function Documentation

◆ GetTimeToCondition()

bool wsf::space::OrbitalPropagatorOptimizingCondition::GetTimeToCondition ( const UtOrbitalPropagatorBase & aPropagator,
double & aTimeToCondition ) const
finalvirtual

This template pattern method performs the search for the time at which the condition obtains.

Implements wsf::space::OrbitalPropagatorCondition.

References wsf::space::OrbitalPropagatorCondition::GetConditionString(), HandleSpecialCases(), InitialGuess(), wsf::space::OrbitalPropagatorCondition::mOrbitNumber, Objective(), and std::swap().

Referenced by InitialGuess().

◆ HandleSpecialCases()

virtual bool wsf::space::OrbitalPropagatorOptimizingCondition::HandleSpecialCases ( const UtOrbitalPropagatorBase & aPropagator,
double & aTimeToCondition ) const
inlinevirtual

Handle special cases of initial or final orbits for a condition. If there are special initial or final orbit classes that need to be handled separately, this method can be overridden to provide the requisite values. If the aPropagator or the condition instance is such that special handling is required, this value should set the time at which the condition obtains in aTimeToCondition, and return true. Otherwise, this method should return false. Typically such special cases are called for in equatorial, or circular orbits.

Parameters
aPropagator- The propagator being examined for special cases.
aTimeToCondition[out] - The time at which the condition obtains.
Returns
true if a special case was detected; false otherwise.

Reimplemented in wsf::space::ApoapsisCondition, wsf::space::AscendingNodeCondition, wsf::space::DescendingNodeCondition, wsf::space::IntersectionCondition, and wsf::space::PeriapsisCondition.

Referenced by GetTimeToCondition().

◆ InitialGuess()

virtual std::pair< bool, double > wsf::space::OrbitalPropagatorOptimizingCondition::InitialGuess ( const UtOrbitalPropagatorBase & aPropagator) const
pure virtual

Produce an initial guess for when the condition might obtain. The initial guess produced by this method is used to set the initial search area for the root. In some rare cases, it may be impossible to form an initial guess.

Parameters
aPropagator- The propagator for which an initial guess is to be returned.
Returns
- a pair, with a first member set to true if an initial guess was able to be computed, and a second member set to the time of the initial guess.

Implemented in wsf::space::ApoapsisCondition, wsf::space::AscendingNodeCondition, wsf::space::AscendingRadiusCondition, wsf::space::DescendingNodeCondition, wsf::space::DescendingRadiusCondition, wsf::space::NorthernIntersectionCondition, wsf::space::PeriapsisCondition, and wsf::space::SouthernIntersectionCondition.

References GetTimeToCondition().

Referenced by GetTimeToCondition().

◆ Objective()

virtual bool wsf::space::OrbitalPropagatorOptimizingCondition::Objective ( UtOrbitalPropagatorBase & aPropagator,
const UtCalendar & aBaseEpoch,
double aOffsetTime ) const
pure virtual

This function is the objective function whose root gives the time of the condition. The provided propagator will be advanced to aOffsetTime seconds after the provided aBaseEpoch and the resulting state will be used to evaluate the condition. The condition needs to be formulated so that a boolean is returned, where the value of the boolean indicates if aOffsetTime is in a region before or after the root. The condition can return either true or false for values before the root, and the choice is up to the convenience of the implementer.

Parameters
aPropagator- The propagator for which the objective is being examined.
aBaseEpoch- A base epoch from which the offset will be specified.
aOffsetTime- The offset from the base epoch at which the objective will be computed.
Returns
If the given aOffsetTime is before the root.

Implemented in wsf::space::ApoapsisCondition, wsf::space::AscendingNodeCondition, wsf::space::AscendingRadiusCondition, wsf::space::DescendingNodeCondition, wsf::space::DescendingRadiusCondition, wsf::space::NorthernIntersectionCondition, wsf::space::PeriapsisCondition, and wsf::space::SouthernIntersectionCondition.

Referenced by GetTimeToCondition().


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved