12#ifndef WSFSPACEORBITALPROPAGATORCONDITION_HPP
13#define WSFSPACEORBITALPROPAGATORCONDITION_HPP
15#include "wsf_space_export.h"
19#include "UtCalendar.hpp"
21class UtOrbitalPropagatorBase;
22#include "UtUnitTypes.hpp"
68 virtual bool GetTimeToCondition(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const = 0;
101 virtual bool Objective(UtOrbitalPropagatorBase& aPropagator,
const UtCalendar& aBaseEpoch,
double aOffsetTime)
const = 0;
109 virtual std::pair<bool, double>
InitialGuess(
const UtOrbitalPropagatorBase& aPropagator)
const = 0;
112 bool GetTimeToCondition(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const final;
123 virtual bool HandleSpecialCases(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const
137 bool GetTimeToCondition(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const override;
143 constexpr static const char*
cTYPE{
"none"};
154 bool ProcessInput(UtInput& aInput)
override;
158 void SetOffsetTime(
const UtTimeValue& aOffsetTime) { mOffsetTime = aOffsetTime; }
160 bool ValidateParameterRanges()
const override;
162 bool GetTimeToCondition(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const override;
168 constexpr static const char*
cTYPE{
"relative_time"};
171 UtTimeValue mOffsetTime{};
182 std::pair<bool, double> InitialGuess(
const UtOrbitalPropagatorBase& aPropagator)
const override;
184 bool Objective(UtOrbitalPropagatorBase& aPropagator,
const UtCalendar& aBaseEpoch,
double aOffsetTime)
const override;
186 bool HandleSpecialCases(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const override;
192 constexpr static const char*
cTYPE{
"periapsis"};
203 std::pair<bool, double> InitialGuess(
const UtOrbitalPropagatorBase& aPropagator)
const override;
205 bool Objective(UtOrbitalPropagatorBase& aPropagator,
const UtCalendar& aBaseEpoch,
double aOffsetTime)
const override;
207 bool HandleSpecialCases(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const override;
213 constexpr static const char*
cTYPE{
"apoapsis"};
224 std::pair<bool, double> InitialGuess(
const UtOrbitalPropagatorBase& aPropagator)
const override;
226 bool Objective(UtOrbitalPropagatorBase& aPropagator,
const UtCalendar& aBaseEpoch,
double aOffsetTime)
const override;
228 bool HandleSpecialCases(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const override;
234 constexpr static const char*
cTYPE{
"ascending_node"};
245 std::pair<bool, double> InitialGuess(
const UtOrbitalPropagatorBase& aPropagator)
const override;
247 bool Objective(UtOrbitalPropagatorBase& aPropagator,
const UtCalendar& aBaseEpoch,
double aOffsetTime)
const override;
249 bool HandleSpecialCases(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const override;
255 constexpr static const char*
cTYPE{
"descending_node"};
266 bool GetTimeToCondition(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const override;
272 constexpr static const char*
cTYPE{
"eclipse_entry"};
283 bool GetTimeToCondition(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const override;
289 constexpr static const char*
cTYPE{
"eclipse_exit"};
317 std::pair<bool, double> InitialGuess(
const UtOrbitalPropagatorBase& aPropagator)
const override;
319 bool Objective(UtOrbitalPropagatorBase& aPropagator,
const UtCalendar& aBaseEpoch,
double aOffsetTime)
const override;
325 constexpr static const char*
cTYPE{
"ascending_radius"};
336 std::pair<bool, double> InitialGuess(
const UtOrbitalPropagatorBase& aPropagator)
const override;
338 bool Objective(UtOrbitalPropagatorBase& aPropagator,
const UtCalendar& aBaseEpoch,
double aOffsetTime)
const override;
344 constexpr static const char*
cTYPE{
"descending_radius"};
355 void SetRAAN(
double aRAAN);
356 void SetInclination(
double aInclination);
358 void SetIntersectionRAAN_Inclination(
double aRAAN,
double aInclination);
360 bool HandleSpecialCases(
const UtOrbitalPropagatorBase& aPropagator,
double& aTimeToCondition)
const override;
363 UtVec3d OrbitNormal(
double aRAAN,
double aInclination)
const;
378 std::pair<bool, double> InitialGuess(
const UtOrbitalPropagatorBase& aPropagator)
const override;
380 bool Objective(UtOrbitalPropagatorBase& aPropagator,
const UtCalendar& aBaseEpoch,
double aOffsetTime)
const override;
386 constexpr static const char*
cTYPE{
"northern_intersection"};
398 std::pair<bool, double> InitialGuess(
const UtOrbitalPropagatorBase& aPropagator)
const override;
400 bool Objective(UtOrbitalPropagatorBase& aPropagator,
const UtCalendar& aBaseEpoch,
double aOffsetTime)
const override;
406 constexpr static const char*
cTYPE{
"southern_intersection"};
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
void SetType(WsfStringId aType)
Definition WsfObject.cpp:172
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:211
ApoapsisCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:199
ApoapsisCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:201
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:213
AscendingNodeCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:220
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:234
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:232
AscendingNodeCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:222
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:323
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:325
AscendingRadiusCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:313
AscendingRadiusCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:315
DescendingNodeCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:243
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:253
DescendingNodeCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:241
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:255
DescendingRadiusCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:334
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:342
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:344
DescendingRadiusCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:332
EclipseEntryCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:264
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:270
EclipseEntryCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:262
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:272
EclipseExitCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:281
EclipseExitCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:279
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:289
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:287
double mRAAN
Definition WsfSpaceOrbitalPropagatorCondition.hpp:365
double GetRAAN() const
Definition WsfSpaceOrbitalPropagatorCondition.hpp:352
IntersectionCondition()=default
double GetInclination() const
Definition WsfSpaceOrbitalPropagatorCondition.hpp:353
double mInclination
Definition WsfSpaceOrbitalPropagatorCondition.hpp:366
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:141
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:143
NoneCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:135
NoneCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:133
NorthernIntersectionCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:376
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:384
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:386
NorthernIntersectionCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:374
Definition WsfSpaceOrbitalPropagatorConditionVisitor.hpp:22
Definition WsfSpaceOrbitalPropagatorCondition.hpp:38
virtual bool GetTimeToCondition(const UtOrbitalPropagatorBase &aPropagator, double &aTimeToCondition) const =0
OrbitalPropagatorCondition * Clone() const override=0
unsigned mOrbitNumber
Definition WsfSpaceOrbitalPropagatorCondition.hpp:77
virtual bool ValidateParameterRanges() const
Definition WsfSpaceOrbitalPropagatorCondition.hpp:56
bool ProcessInput(UtInput &aInput) override
Definition WsfSpaceOrbitalPropagatorCondition.cpp:34
virtual void Accept(OrbitalPropagatorConditionVisitor &aVisitor)=0
Accept a visitor.
void SetOrbitNumber(unsigned aOrbitNumber)
Set the orbit number.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:48
virtual std::string GetConditionString() const =0
Return the string identifying the condition.
unsigned GetOrbitNumber() const
Return the orbit number.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:45
Definition WsfSpaceOrbitalPropagatorCondition.hpp:88
virtual std::pair< bool, double > InitialGuess(const UtOrbitalPropagatorBase &aPropagator) const =0
virtual bool Objective(UtOrbitalPropagatorBase &aPropagator, const UtCalendar &aBaseEpoch, double aOffsetTime) 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.
Definition WsfSpaceOrbitalPropagatorCondition.cpp:48
virtual bool HandleSpecialCases(const UtOrbitalPropagatorBase &aPropagator, double &aTimeToCondition) const
Definition WsfSpaceOrbitalPropagatorCondition.hpp:123
PeriapsisCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:178
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:190
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:192
PeriapsisCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:180
UtLengthValue mRadius
Definition WsfSpaceOrbitalPropagatorCondition.hpp:306
UtLengthValue GetRadius() const
Definition WsfSpaceOrbitalPropagatorCondition.hpp:299
void SetRadius(const UtLengthValue &aRadius)
Definition WsfSpaceOrbitalPropagatorCondition.hpp:301
bool ValidateParameterRanges() const override
Definition WsfSpaceOrbitalPropagatorCondition.cpp:448
RadiusCondition()=default
bool ProcessInput(UtInput &aInput) override
Definition WsfSpaceOrbitalPropagatorCondition.cpp:441
RelativeTimeCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:150
UtTimeValue GetOffsetTime() const
Definition WsfSpaceOrbitalPropagatorCondition.hpp:156
void SetOffsetTime(const UtTimeValue &aOffsetTime)
Definition WsfSpaceOrbitalPropagatorCondition.hpp:158
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:166
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:168
RelativeTimeCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:152
SouthernIntersectionCondition()
Definition WsfSpaceOrbitalPropagatorCondition.hpp:394
std::string GetConditionString() const override
Return the string identifying the condition.
Definition WsfSpaceOrbitalPropagatorCondition.hpp:404
SouthernIntersectionCondition * Clone() const override
Definition WsfSpaceOrbitalPropagatorCondition.hpp:396
static constexpr const char * cTYPE
Definition WsfSpaceOrbitalPropagatorCondition.hpp:406
Definition WsfAtmosphere.cpp:23
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32