WSF
WsfTBM_Mover Class Reference

#include <WsfTBM_Mover.hpp>

Inheritance diagram for WsfTBM_Mover:
Collaboration diagram for WsfTBM_Mover:

Classes

class  Stage
 A stage represents one stage in the vehicle. More...

Public Member Functions

 WsfTBM_Mover (WsfScenario &aScenario)
 ~WsfTBM_Mover () override=default
WsfTBM_Moveroperator= (const WsfTBM_Mover &)=delete
WsfMoverClone () const override
bool Initialize (double aSimTime) override
bool Initialize2 (double aSimTime) override
bool ProcessInput (UtInput &aInput) override
void Update (double aSimTime) override
WsfSpatialDomain GetSpatialDomain () const override
double GetTBMLastUpdateTime () const
void SetTBMLastUpdateTime (double aLastUpdateTime)
void GetLaunchLLA (double &aLat, double &aLon, double &aAlt, bool &aAltAGL)
void SetLaunchLLA (double aLat, double aLon, double aAlt, bool aAltAGL)
double GetLaunchTime () const
void SetLaunchTime (double aLaunchTime)
unsigned int GetStageIndex () const
void SetStageIndex (unsigned int aStageIndex)
bool IsExtrapolating () const override
std::vector< double > GetState () const
void SetState (const std::vector< double > &aStateVector)
void GetTerminalLLA (double &aLat, double &aLon, double &aAlt)
void GetTargetLLA (double &aLat, double &aLon, double &aAlt)
void SetTargetLLA (double aLat, double aLon, double aAlt)
Public Member Functions inherited from WsfMover
 WsfMover ()=delete
 WsfMover (const WsfScenario &aScenario)
 WsfMover (const WsfMover &aSrc)
WsfMoveroperator= (const WsfMover &)=delete
 ~WsfMover () override
virtual double TurnRadius (double atSpeed)
WsfModeListGetModeList () const
virtual void TriggerExtrapolation ()
virtual KinematicModelCreateKinematicModel (double aSimTime, WsfStringId aPlatformTypeId, const double aLocationWCS[3], const double aVelocityWCS[3], WsfMover *aMoverPtr, WsfDraw *aDrawPtr) const
WsfComponentCloneComponent () const override
int GetComponentInitializationOrder () const override
const int * GetComponentRoles () const override
void * QueryInterface (int aRole) override
const char * GetScriptClassName () const override
virtual void SwapMoverInitiated (double aSimTime, WsfMover *aOldMoverPtr)
void TurnOff (double aSimTime) override
void TurnOn (double aSimTime) override
void SetNonOperational (double aSimTime) override
void SetOperational (double aSimTime) override
void PartBroken (double aSimTime) override
void Restore (double aSimTime) override
virtual bool IsStopped () const
 Return whether the mover (and its attached platform) is stopped.
virtual bool IsPaused () const
virtual void SetHeading (double aHeading)
virtual void SetPitch (double aPitch)
virtual void SetRoll (double aRoll)
virtual void SetOrientationNED (double aHeading, double aPitch, double aRoll)
virtual void ResetPosition (double aSimTime)
 Informs the mover to use the current platform state.
double GetLastUpdateTime () const
double GetUpdateInterval () const override
double GetUpdateTimeTolerance () const
void SetUpdateInterval (double aUpdateInterval) override
void SetLastUpdateTime (double aLastUpdateTime)
virtual bool UpdateAllowed () const
bool UpdateWhenBroken () const
void SetUpdateWhenBroken ()
void SetNoUpdateWhenBroken ()
virtual const WsfRouteGetRoute () const
virtual const WsfRouteGetDefaultRoute () const
virtual int RoutePointIndex () const
virtual bool GoToAltitude (double aSimTime, double aAltitude, double aClimbDiveRate, bool aKeepRoute)
virtual bool ReturnToRoute (double aSimTime)
virtual bool GoToClosestPoint (double aSimTime)
virtual bool GoToLabel (double aSimTime, WsfStringId aLabelId)
virtual bool GoToLocation (double aSimTime, double aLatitude, double aLongitude, double aAltitude)
virtual bool GoToSpeed (double aSimTime, double aSpeed, double aLinearAccel, bool aKeepRoute)
virtual bool TurnToHeading (double aSimTime, double aHeading, double aRadialAccel, WsfPath::TurnDirection aTurnDirection)
virtual bool TurnToRelativeHeading (double aSimTime, double aHeadingChange, double aRadialAccel, WsfPath::TurnDirection aTurnDirection)
virtual bool SetRoute (double aSimTime, const WsfRoute &aRoute)
virtual bool UpdateRoute (double aSimTime, const WsfRoute &aRoute)
virtual bool UpdateDefaultRoute ()
virtual bool GoToWaypoint (double aSimTime, unsigned int aDestination)
virtual bool FindAndSetPath (double aSimTime, WsfGeoPoint *aStartPtr, WsfGeoPoint *aEndPtr)
virtual bool FlyRates (const UtVec3d &aAngularRates, const UtVec3d &aLongitudinalAccel)
virtual bool FlyHeadingSpeedAltitude (double aHeading, double aSpeed, double aAltitude, double aMaxGees, double aMaxClimb)
virtual bool TurnInPlaneWithSpeed (const UtVec3d &aPlane, double aGees, double aSpeed)
virtual bool TurnInPlaneWithThrottle (const UtVec3d &aPlane, double aGees, double aThrottle)
virtual bool FlyVectorWithSpeed (const UtVec3d &aVelocityVector, double aMaxGees, double aSpeed)
virtual bool FlyVectorWithThrottle (const UtVec3d &aVelocityVector, double aMaxGees, double aThrottle)
virtual bool ExecuteTriggers (double aSimTime, unsigned int aPointIndex)
virtual bool GetFutureLocationWCS (double aSimTime, double aLocationWCS[3])
WsfStringId GetModeId () const
virtual void SetMode (WsfStringId aModeName)
bool ThreadSafe () const
 Returns true if the mover update is thread safe.
void SetThreadSafe ()
void SetNotThreadSafe ()
virtual void InitializeProperties ()
 Add any input properties and its default value common properties list.
virtual bool PropertyExists (const std::string &aPropertyName)
 Return true if the given property exists in the set of properties.
virtual void RegisterProperty (const std::string &aPropertyName, const int &aProperty)
 Add an integer property to the common set of properties.
virtual void RegisterProperty (const std::string &aPropertyName, const double &aProperty)
 Add an floating point property to the common set of properties.
virtual void RegisterProperty (const std::string &aPropertyName, const std::string &aProperty)
 Add an string property to the set of common properties.
virtual bool GetPropertyInt (const std::string &aPropertyName, int &aProperty)
virtual bool GetPropertyDouble (const std::string &aPropertyName, double &aProperty)
virtual bool GetPropertyString (const std::string &aPropertyName, std::string &aProperty)
virtual double GetThrottlePosition ()
Public Member Functions inherited from WsfPlatformPart
 WsfPlatformPart (const WsfScenario &aScenario, int aPartType)
WsfPlatformPartoperator= (const WsfPlatformPart &aRhs)=delete
 ~WsfPlatformPart () override
const int * GetComponentRoles () const override
void * QueryInterface (int aRole) override
bool DebugEnabled () const
 Returns 'true' if debugging is enabled for this instance.
void SetDebugEnabled (bool aDebugEnabled)
unsigned int GetDebugMask ()
bool IsExternallyControlled () const
virtual void SetExternallyControlled (double aSimTime, bool aIsExternallyControlled)
int GetPartType () const
const char * GetScriptClassName () const override
WsfSimulationGetSimulation () const
const WsfScenarioGetScenario () const
WsfStringId GetComponentName () const override
void ComponentParentChanged (WsfPlatform *aPlatformPtr) override
WsfPlatformGetPlatform () const
virtual void SetPlatform (WsfPlatform *aPlatformPtr)
virtual void PlatformAdded (double aSimTime, WsfPlatform *aPlatformPtr)
virtual void PlatformDeleted (WsfPlatform *aPlatformPtr)
double GetLastStatusChangeTime () const
void SetLastStatusChangeTime (double aSimTime)
 Allows a system to set the time at which the device was initialized.
bool CanBeMadeOperational () const
 Returns an indication that this system can be made operational.
bool CanBeMadeNonOperational () const
 Returns an indication that this system can be made non-operational.
bool CanBeTurnedOn () const
 Returns an indication that this system can be turned on.
bool CanBeTurnedOff () const
 Returns an indication that this system can be turned off.
bool IsTurnedOn () const
bool InitiallyTurnedOn () const
 Is the system to be turned 'on' when added to the simulation?
void SetInitiallyTurnedOn (bool aInitiallyTurnedOn)
 Sets if the system is turned on when added to the simulation.
bool IsOperational () const
bool SetOperational (double aSimTime, bool aMakeOperational)
double GetDamageFactor () const
bool SetDamageFactor (double aSimTime, double aDamageFactor)
bool IsCritical () const
void SetCritical (bool aValue)
virtual void OnPlatformBrokenEvent (double aSimTime)
 Owning platform has issued a broken event.
bool IsBroken () const
WsfInternalLinksGetInternalLinks ()
 Return the internal links for this part.
virtual bool HasInternalLinks () const
 Does this platform part have a communication link to other platform parts?
virtual bool ProcessMessage (double aSimTime, const WsfMessage &aMessage)
virtual bool ReceiveMessage (double aSimTime, const WsfMessage &aMessage)
virtual void SendMessage (double aSimTime, const WsfMessage &aMessage)
virtual void SendMessageTo (double aSimTime, const WsfMessage &aMessage, WsfStringId aRecipientId)
void SendMessageToProcessor (double aSimTime, const WsfMessage &aMessage, WsfStringId aRecipientId)
virtual void SendQueuedMessages (double aSimTime)
const WsfCategoryListGetCategories () const
 Get the categories to which this part belongs.
void AddCategory (WsfStringId aCategoryId)
 Adds the provided category to the platform part's category list.
bool IsCategoryMember (WsfStringId aCategoryId) const
const WsfGroupListGetGroups () const
 Get the groups to which this platform part belongs.
void JoinGroup (WsfGroup *aGroupPtr)
 Join the given group.
void LeaveGroup (WsfGroup *aGroupPtr)
 Leave the given group.
bool IsGroupMember (WsfStringId aGroupId)
unsigned int GetUpdateEventEpoch () const
void IncrementUpdateEventEpoch ()
bool UpdateEventActive () const
 Is an 'Update' event active?
void SetUpdateEventActive (bool aUpdateEventActive)
 Indicate if the 'Update' event is active.
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)
Public Member Functions inherited from WsfComponentT< WsfPlatform >
 WsfComponentT ()
 WsfComponentT (const WsfComponentT &) noexcept
WsfComponentToperator= (const WsfComponentT &) noexcept
 ~WsfComponentT () override=default
ParentTypeGetComponentParent () const
void SetComponentParent (ParentType *aParentPtr)
Public Member Functions inherited from WsfComponent
virtual ~WsfComponent ()=default
template<typename T>
bool QueryInterfaceT (T *&aRolePtr)
bool ComponentHasRole (int aRole)
 Returns true if the component has the specified role.
virtual bool PreInitialize (double aSimTime)
virtual void PreInput ()
Public Member Functions inherited from WsfUniqueId
 WsfUniqueId ()
 Construtor initializes the unique identifier to 0.
 WsfUniqueId (const WsfUniqueId &)
 Copy constructor initializes the unique identifier to 0.
WsfUniqueIdoperator= (const WsfUniqueId &)
unsigned int GetUniqueId () const
 Get the unique identifier assigned to this object.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
Public Member Functions inherited from WsfAuxDataEnabled
 WsfAuxDataEnabled ()=default
 WsfAuxDataEnabled (const WsfAuxDataEnabled &aSrc)=default
WsfAuxDataEnabledoperator= (const WsfAuxDataEnabled &aRhs)
 WsfAuxDataEnabled (WsfAuxDataEnabled &&)=default
WsfAuxDataEnabledoperator= (WsfAuxDataEnabled &&)=default
virtual ~WsfAuxDataEnabled () noexcept
void SetAuxData (const WsfAttributeContainer &aAuxData)
void DeleteAuxData ()
 Delete the aux data container from the object.
void MergeAuxData (const WsfAuxDataEnabled &aSrc)
 Merge the object's aux data with aux data from an existing object.
void UpdateAuxData (const WsfAuxDataEnabled &aSrc)
 Update the object's aux data with aux data from an existing object.
bool HasAuxData () const
 Returns true if this object has aux data.
bool ProcessInput (UtInput &aInput)
template<typename T>
void Serialize (T &aBuff)
 (De)serialization for XIO
WsfAttributeContainerGetAuxData ()
const WsfAttributeContainerGetAuxData () const noexcept
const WsfAttributeContainerGetAuxDataConst () const noexcept

Static Public Member Functions

static ut::Random & GetRandom ()
static void ClearRandom ()

Protected Member Functions

 WsfTBM_Mover (const WsfTBM_Mover &aSrc)
 Copy constructor (for clone).
bool ProcessCepTable (UtInput &aInput)
bool SaveCepPoint (bool &aFormatIsFrozen, std::vector< double > &aNominalRanges, std::vector< double > &aRangeErrors, std::vector< double > &aAzimuthErrors, double aNominalRange, double aRangeError, double aAzimuthError)
void ComputeTargetError ()
void SetMasses ()
void ComputeImpactRange (double psi, double &rangegr, double &xmid, double &aMaxAlt)
void ComputeTransitionStateVectors (const double aInitialState[9])
 Given an initial state vector, compute the state vectors at the transitions.
void CreateInitialState (double aElevation, double aState[9])
void ComputeLaunchAngle (double fltran, double psicrit, double rngmax, double &flttim, double &psi, double &maxAlt, bool &toofar)
void ComputeMaximumRange (double al, double am, double ah, double tol, double &psicrit, double &rngmax)
double GetAltitude (const double aState[9]) const
 Get the geocentric altitude above the ellipsoid for the specified WCS location.
double GetSpeed (const double aState[9]) const
void CepTableLookup (double aTargetGroundRange, double &aRangeError, double &aAzimuthError)
void PrintState (const double aState[9], ut::log::MessageStream &aStream) const
void ScheduleScriptEvents (double aSimTime)
void SetTrailingEffects (double aSimTime) const
void WriteStateForPlot (double aTime, const double aState[9])
void odeint2 (double y[9], double x1, double x2)
void derivs (double x, const double y[9], double dydx[6]) const
void rkqc (double y[9], double dydx[6], double &x, double htry, double eps, double yscal[], double &hdid, double &hnext)
void rk4 (double y[9], double dydx[6], double x, double h, double yout[9])
void OutputDiagnostic (double aSimTime)
 Used to output data when debugging.
void SetModeList (WsfModeList *aModeListPtr)
void SetUpdateTimeTolerance (double aDt)
 Revise the internal time tolerance allowed for Update() sequencing logic.
 WsfPlatformPart (const WsfPlatformPart &aSrc)
 Copy constructor (for Clone()).
 WsfObject (const WsfObject &aSrc)
 Copy constructor (for Clone()).
Protected Member Functions inherited from WsfUniqueId
void AssignUniqueId (WsfSimulation *aSimulationPtr)

Protected Attributes

double mLaunchTime
 Simulation time at launch.
Stage mStage
 The current stage.
unsigned int mStageIndex
 The index of the current stage.
double mState [9]
 The current state vector (6 + 3 for accel).
std::vector< StagemStageList
 The list of stages.
bool mExplicitStageUsed
 'true' if a 'stage' command was used
bool mImplicitStageUsed
 'true' if a stage was defined without using 'stage'
bool mAzErrorUsed
bool mHaveTarget
bool mIsBallistic
double mFixedCEP
 Circular Error Probable. Defaults to zero, with no effect.
double mLaunchLat
 Launch latitude.
double mLaunchLon
 Launch longitude.
double mLaunchAlt
 Launch altitude.
bool mLaunchAltAGL
 'true' if AGL altitude was specified in the input file
bool mIgnoreTarget
 true if the target specification should be ignored
bool mLofted
 true if trajectory is lofted, false if depressed
double mTargetLat
 target latitude (deg)
double mTargetLon
 target longitude (deg)
double mTargetAlt
 terrain height at target location (m)
double mTerminalLat
 terminal latitude (deg)
double mTerminalLon
 terminal longitude (deg)
double mTerminalAlt
 terrain height at terminal location (m)
bool mShowStatus
 show initial conditions on standard output
int mDebugCallTrigger
int mDebugCallCount
TblIndVarU< double > mNomRanges
TblDepVar1< double > mRangeErrors
TblDepVar1< double > mAzimuthErrors
TblLookupLU< double > mLookupUtility
double mLastUpdateTime
 The simulation time when Update was last called.
WsfVariable< double > mUpdateTimeTolerance
bool mThreadSafe
std::vector< WsfMoverMode * > mMoverModeList
 The generic list of modes (not valid until Initialize is called).
WsfStringId mModeId

Additional Inherited Members

Public Types inherited from WsfPlatformPart
enum  { cLEVEL_ONE_DEBUG = 0x00000001 , cLEVEL_TWO_DEBUG = 0x00000002 }
using InternalMessageQueue = std::queue<WsfMessage*>
using RecipientMessageQueue = std::queue<std::pair<WsfPlatformPart*, WsfMessage*>>
Public Types inherited from WsfObject
typedef std::vector< WsfStringIdTypeList
 The list of types returned by GetTypeList.
Public Types inherited from WsfComponentT< WsfPlatform >
typedef WsfPlatform ParentType
 This is needed to support the WsfComponentList template.
Static Public Attributes inherited from WsfMover
static const char * cTYPE_KIND = "mover"
Static Public Attributes inherited from WsfAuxDataEnabled
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataAccessed
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataDestroyed

Detailed Description

A simple theater/tactical ballistic missile (TBM) mover.

The maximum range (and the launch angle needed to reach that range) of the TBM is given by the following input characteristics:

- TBM burn time (sec)
- TBM launch time (sec)
- TBM ballistic coefficient (n/m^2)
- TBM fuel mass fraction
- TBM launch mass (kg)
- TBM specific impulse (sec)
- lofted or depressed trajectory

If the desired TBM range is less than the maximum range then the launch angle required to go the desired range is computed. If the trajectory is lofted the launch angle will be greater than the maximum range launch angle, and if the trajectory is depressed the launch angle will be less than the maximum range launch angle.

The thrust phase of the TBM flight is not modeled exactly as a real TBM would fly. Actual TBMs tend to launch vertically and then use some guidance law during boost to achieve the proper burnout conditions to hit their target. Each type of TBM would implement this in a different way, but the boost trajectories produced are fairly similar. In this model the TBM is not launched vertically, but at some angle slightly less. The direction of thrust is assumed to always be opposite the TBM velocity vector. Given these conditions, the earth's gravity will cause the TBM to turn. By selecting the correct launch angle the desired impact range will result. The trajectories produced are very similar to real ICBM trajectories.

Drag is modeled below 200000 meters. The TBM is assumed to have a constant beta, the coefficient of drag does not vary with Mach number. The air density is modeled using an exponential approximation.

Constructor & Destructor Documentation

◆ WsfTBM_Mover() [1/2]

◆ ~WsfTBM_Mover()

WsfTBM_Mover::~WsfTBM_Mover ( )
overridedefault

◆ WsfTBM_Mover() [2/2]

Member Function Documentation

◆ CepTableLookup()

void WsfTBM_Mover::CepTableLookup ( double aTargetGroundRange,
double & aRangeError,
double & aAzimuthError )
protected

◆ ClearRandom()

void WsfTBM_Mover::ClearRandom ( )
static

Referenced by operator=().

◆ Clone()

WsfMover * WsfTBM_Mover::Clone ( ) const
overridevirtual

Clone this object.

Returns
a pointer to the new object.

Implements WsfMover.

References WsfMover::WsfMover(), and WsfTBM_Mover().

◆ ComputeImpactRange()

void WsfTBM_Mover::ComputeImpactRange ( double psi,
double & rangegr,
double & xmid,
double & aMaxAlt )
protected

Given the launch angle, compute the ground range and time of flight.

Parameters
psi[input] Launch elevation angle (radians)
rangegr[output] The ground range to the impact point.
xmid[output] The time-of-flight to the impact point.
aMaxAlt[output] The maximum altitude that was achieved.

References ComputeTransitionStateVectors(), CreateInitialState(), WsfPlatformPart::DebugEnabled(), GetAltitude(), WsfPlatformPart::GetPlatform(), mDebugCallCount, mDebugCallTrigger, mStage, mStageIndex, mStageList, mTargetAlt, odeint2(), SetMasses(), and WriteStateForPlot().

Referenced by ComputeLaunchAngle(), ComputeMaximumRange(), and Initialize2().

◆ ComputeLaunchAngle()

void WsfTBM_Mover::ComputeLaunchAngle ( double fltran,
double psicrit,
double rngmax,
double & flttim,
double & psi,
double & maxAlt,
bool & toofar )
protected

References ComputeImpactRange(), and mLofted.

Referenced by Initialize2().

◆ ComputeMaximumRange()

void WsfTBM_Mover::ComputeMaximumRange ( double al,
double am,
double ah,
double tol,
double & psicrit,
double & rngmax )
protected

◆ ComputeTargetError()

◆ ComputeTransitionStateVectors()

◆ CreateInitialState()

void WsfTBM_Mover::CreateInitialState ( double aElevation,
double aState[9] )
protected

Create the initial state vector for a launch elevation.

Given the WCS positions of the launcher and the target, and the elevation angle of the launcher, compute the initial state vector.

Parameters
aElevation[input] launch elevation angle from local horizon. (radians)
aState[output] The initial state vector.

References mLaunchAlt, mLaunchLat, mLaunchLon, mTerminalAlt, mTerminalLat, and mTerminalLon.

Referenced by ComputeImpactRange().

◆ derivs()

void WsfTBM_Mover::derivs ( double x,
const double y[9],
double dydx[6] ) const
protected

References GetAltitude(), and mStage.

Referenced by odeint2(), rk4(), and rkqc().

◆ GetAltitude()

double WsfTBM_Mover::GetAltitude ( const double aState[9]) const
protected

Get the geocentric altitude above the ellipsoid for the specified WCS location.

Referenced by ComputeImpactRange(), and derivs().

◆ GetLaunchLLA()

void WsfTBM_Mover::GetLaunchLLA ( double & aLat,
double & aLon,
double & aAlt,
bool & aAltAGL )

◆ GetLaunchTime()

double WsfTBM_Mover::GetLaunchTime ( ) const
inline

References mLaunchTime.

◆ GetRandom()

ut::Random & WsfTBM_Mover::GetRandom ( )
static

Referenced by ComputeTargetError(), and operator=().

◆ GetSpatialDomain()

WsfSpatialDomain WsfTBM_Mover::GetSpatialDomain ( ) const
inlineoverridevirtual

Return the spatial domain in which the mover is operating.

The spatial domain is the domain in which the mover is operating (land, sea, space, etc.).

Returns
The spatial domain in which the platform is operating. WSF_SPATIAL_DOMAIN_LAND is returned if this method is not overridden by a derived class.

Reimplemented from WsfMover.

References WSF_SPATIAL_DOMAIN_AIR.

◆ GetSpeed()

double WsfTBM_Mover::GetSpeed ( const double aState[9]) const
protected

◆ GetStageIndex()

unsigned int WsfTBM_Mover::GetStageIndex ( ) const
inline

References mStageIndex.

◆ GetState()

std::vector< double > WsfTBM_Mover::GetState ( ) const

Used to propagate the mover forward in time for explicit intercept calculations

References mState.

◆ GetTargetLLA()

void WsfTBM_Mover::GetTargetLLA ( double & aLat,
double & aLon,
double & aAlt )

References mTargetAlt, mTargetLat, and mTargetLon.

◆ GetTBMLastUpdateTime()

double WsfTBM_Mover::GetTBMLastUpdateTime ( ) const
inline

◆ GetTerminalLLA()

void WsfTBM_Mover::GetTerminalLLA ( double & aLat,
double & aLon,
double & aAlt )

◆ Initialize()

bool WsfTBM_Mover::Initialize ( double aSimTime)
overridevirtual

Initialize the kinematic state of the associated platform. Fix the initial location, orientation, speed and acceleration of the attached platform to what it should be at the beginning of its existence.

Parameters
aSimTimeThe current simulation time.
Returns
True if successful.

Reimplemented from WsfMover.

References WsfPlatformPart::DebugEnabled(), wsf::Terrain::GetElevInterp(), WsfObject::GetName(), WsfPlatformPart::GetPlatform(), WsfPlatform::GetTerrain(), WsfMover::Initialize(), Initialize(), WsfTBM_Mover::Stage::Initialize2(), mFixedCEP, mLaunchAlt, mLaunchAltAGL, mLaunchLat, mLaunchLon, mNomRanges, WsfTBM_Mover::Stage::mPayloadMass, mShowStatus, mStageList, and ok.

Referenced by Initialize().

◆ Initialize2()

bool WsfTBM_Mover::Initialize2 ( double aSimTime)
overridevirtual

Perform phase 2 initialization of the part. This is invoked by WsfPlatform::Initialize() during phase 2 initialization of the platform. During phase 2, platform components may assume that the platform location has been defined, initial tracks have been loaded and that all components have completed phase 1 initialization.

Parameters
aSimTimeThe current simulation time.
Returns
'true' if successful or 'false' if some sort of error occurred.

Reimplemented from WsfMover.

References ComputeImpactRange(), ComputeLaunchAngle(), ComputeMaximumRange(), ComputeTargetError(), ComputeTransitionStateVectors(), WsfTrackManager::GetCurrentTarget(), wsf::Terrain::GetElevInterp(), WsfObject::GetName(), WsfPlatformPart::GetPlatform(), WsfPlatform::GetTrackManager(), WsfMover::Initialize2(), WsfTBM_Mover::Stage::mBallisticCoeff, WsfTBM_Mover::Stage::mBurnOutState, WsfTBM_Mover::Stage::mBurnOutTime, WsfTBM_Mover::Stage::mEmptyMass, WsfTBM_Mover::Stage::mFuelMass, WsfTBM_Mover::Stage::mFuelMassFraction, mHaveTarget, WsfTBM_Mover::Stage::mIgnitionState, WsfTBM_Mover::Stage::mIgnitionTime, mIgnoreTarget, WsfTBM_Mover::Stage::mInitialTime, WsfMover::mLastUpdateTime, mLaunchAlt, mLaunchLat, mLaunchLon, mLaunchTime, WsfTBM_Mover::Stage::mS_Cd0, WsfTBM_Mover::Stage::mSeparationTime, mShowStatus, WsfTBM_Mover::Stage::mSpecificImpulse, mStage, mStageIndex, mStageList, mState, mTargetAlt, mTargetLat, mTargetLon, mTerminalAlt, mTerminalLat, mTerminalLon, WsfTBM_Mover::Stage::mThrust, WsfTBM_Mover::Stage::mTotalMass, WsfTBM_Mover::Stage::mWdot, ok, PrintState(), WsfTBM_Mover::Stage::RemainingBurnoutMass(), WsfTBM_Mover::Stage::RemainingInitialMass(), ScheduleScriptEvents(), and SetMasses().

◆ IsExtrapolating()

bool WsfTBM_Mover::IsExtrapolating ( ) const
inlineoverridevirtual

Return whether the mover is "extrapolating". 'Extrapolating' has a slightly different meaning depending on the mover, but it fundamentally means it is moving without any form of external guidance. In the case of a simple waypoint- following mover this means it has reached its final waypoint and has either stopped there or is continuing on at a specified direction, speed, and altitude. For movers that do not follow waypoints it is a little murkier, but it typically means that the motion is occuring without any propulsion. In this latter case it basically means that with a little knowledge an external observer could take the position at any time and use Newton's Laws to estimate future positions.

Reimplemented from WsfMover.

References mIsBallistic.

◆ odeint2()

void WsfTBM_Mover::odeint2 ( double y[9],
double x1,
double x2 )
protected

◆ operator=()

WsfTBM_Mover & WsfTBM_Mover::operator= ( const WsfTBM_Mover & )
delete

◆ OutputDiagnostic()

void WsfTBM_Mover::OutputDiagnostic ( double aSimTime)
protected

Used to output data when debugging.

Referenced by Update().

◆ PrintState()

void WsfTBM_Mover::PrintState ( const double aState[9],
ut::log::MessageStream & aStream ) const
protected

◆ ProcessCepTable()

bool WsfTBM_Mover::ProcessCepTable ( UtInput & aInput)
protected

◆ ProcessInput()

bool WsfTBM_Mover::ProcessInput ( UtInput & aInput)
overridevirtual

Process input from a generic source.

Examine the current input command. If it is NOT one of the commands recognized by this class then it simply returns 'false'. If it is one of the commands recognized by this class then it processes the command and returns 'true'.

Parameters
aInputa reference to a UtInput object.
Returns
'true' if the command was one recognized by the class or 'false' if not.
Exceptions
UtInput::ExceptionBase(or an object derived from it) if the command was recognized but contains some sort of error.
Note
If a derived class does not recognize the command (i.e.: the return value is false) then it should call the base class ProcessInput method. This chain should continue until either the command is recognized or the top-level base class is encountered.

Reimplemented from WsfMover.

References mDebugCallTrigger, mExplicitStageUsed, mFixedCEP, mImplicitStageUsed, mLaunchAlt, mLaunchAltAGL, mLaunchLat, mLaunchLon, mLofted, mShowStatus, mStageList, mTargetLat, mTargetLon, ProcessCepTable(), WsfMover::ProcessInput(), and ProcessInput().

Referenced by ProcessInput().

◆ rk4()

void WsfTBM_Mover::rk4 ( double y[9],
double dydx[6],
double x,
double h,
double yout[9] )
protected

References derivs().

Referenced by rkqc().

◆ rkqc()

void WsfTBM_Mover::rkqc ( double y[9],
double dydx[6],
double & x,
double htry,
double eps,
double yscal[],
double & hdid,
double & hnext )
protected

References derivs(), and rk4().

Referenced by odeint2().

◆ SaveCepPoint()

bool WsfTBM_Mover::SaveCepPoint ( bool & aFormatIsFrozen,
std::vector< double > & aNominalRanges,
std::vector< double > & aRangeErrors,
std::vector< double > & aAzimuthErrors,
double aNominalRange,
double aRangeError,
double aAzimuthError )
protected

References mAzErrorUsed.

Referenced by ProcessCepTable().

◆ ScheduleScriptEvents()

void WsfTBM_Mover::ScheduleScriptEvents ( double aSimTime)
protected

Schedule the events for ignition, burnout and separation. We schedule these ahead of time to simplify the logic in Update so it doesn't have to worry about transitioning between multiple phases. It also eliminates the worry about recursive calls that may be triggered by calling a script from with the platform Update method.

References WsfPlatform::ExecuteScriptAtTime(), WsfPlatformPart::GetPlatform(), WsfTBM_Mover::Stage::mBurnOutTime, WsfTBM_Mover::Stage::mIgnitionTime, mLaunchTime, WsfTBM_Mover::Stage::mSeparationTime, mStageList, and WsfTBM_Mover::Stage::mThrustDuration.

Referenced by Initialize2().

◆ SetLaunchLLA()

void WsfTBM_Mover::SetLaunchLLA ( double aLat,
double aLon,
double aAlt,
bool aAltAGL )

◆ SetLaunchTime()

void WsfTBM_Mover::SetLaunchTime ( double aLaunchTime)
inline

References mLaunchTime.

◆ SetMasses()

◆ SetStageIndex()

void WsfTBM_Mover::SetStageIndex ( unsigned int aStageIndex)

◆ SetState()

void WsfTBM_Mover::SetState ( const std::vector< double > & aStateVector)

References mState.

◆ SetTargetLLA()

void WsfTBM_Mover::SetTargetLLA ( double aLat,
double aLon,
double aAlt )

References mTargetAlt, mTargetLat, and mTargetLon.

◆ SetTBMLastUpdateTime()

void WsfTBM_Mover::SetTBMLastUpdateTime ( double aLastUpdateTime)
inline

◆ SetTrailingEffects()

void WsfTBM_Mover::SetTrailingEffects ( double aSimTime) const
protected

◆ Update()

void WsfTBM_Mover::Update ( double aSimTime)
overridevirtual

Update the kinematic state of the associated platform. Update the location, orientation, speed and acceleration of the attached platform to what it should be at the supplied time.

Parameters
aSimTimeThe current simulation time.
Note
The derived class MUST update the protected variable mLastUpdateTime to be the current simulation time.

Reimplemented from WsfMover.

References WsfPlatformPart::DebugEnabled(), DO_DIAG, WsfObject::GetName(), WsfPlatformPart::GetPlatform(), mIsBallistic, WsfMover::mLastUpdateTime, mLaunchTime, mStage, mStageIndex, mStageList, mState, WsfMover::mUpdateTimeTolerance, odeint2(), OutputDiagnostic(), SetMasses(), and SetTrailingEffects().

◆ WriteStateForPlot()

void WsfTBM_Mover::WriteStateForPlot ( double aTime,
const double aState[9] )
protected

Member Data Documentation

◆ mAzErrorUsed

bool WsfTBM_Mover::mAzErrorUsed
protected

◆ mAzimuthErrors

TblDepVar1<double> WsfTBM_Mover::mAzimuthErrors
protected

◆ mDebugCallCount

int WsfTBM_Mover::mDebugCallCount
protected

◆ mDebugCallTrigger

int WsfTBM_Mover::mDebugCallTrigger
protected

◆ mExplicitStageUsed

bool WsfTBM_Mover::mExplicitStageUsed
protected

'true' if a 'stage' command was used

Referenced by ProcessInput(), WsfTBM_Mover(), and WsfTBM_Mover().

◆ mFixedCEP

double WsfTBM_Mover::mFixedCEP
protected

Circular Error Probable. Defaults to zero, with no effect.

Referenced by ComputeTargetError(), Initialize(), ProcessInput(), WsfTBM_Mover(), and WsfTBM_Mover().

◆ mHaveTarget

bool WsfTBM_Mover::mHaveTarget
protected

◆ mIgnoreTarget

bool WsfTBM_Mover::mIgnoreTarget
protected

true if the target specification should be ignored

Referenced by Initialize2(), WsfTBM_Mover(), and WsfTBM_Mover().

◆ mImplicitStageUsed

bool WsfTBM_Mover::mImplicitStageUsed
protected

'true' if a stage was defined without using 'stage'

Referenced by ProcessInput(), WsfTBM_Mover(), and WsfTBM_Mover().

◆ mIsBallistic

bool WsfTBM_Mover::mIsBallistic
protected

◆ mLaunchAlt

double WsfTBM_Mover::mLaunchAlt
protected

◆ mLaunchAltAGL

bool WsfTBM_Mover::mLaunchAltAGL
protected

'true' if AGL altitude was specified in the input file

Referenced by GetLaunchLLA(), Initialize(), ProcessInput(), SetLaunchLLA(), WsfTBM_Mover(), and WsfTBM_Mover().

◆ mLaunchLat

◆ mLaunchLon

◆ mLaunchTime

double WsfTBM_Mover::mLaunchTime
protected

◆ mLofted

bool WsfTBM_Mover::mLofted
protected

true if trajectory is lofted, false if depressed

Referenced by ComputeLaunchAngle(), ProcessInput(), WsfTBM_Mover(), and WsfTBM_Mover().

◆ mLookupUtility

TblLookupLU<double> WsfTBM_Mover::mLookupUtility
protected

◆ mNomRanges

TblIndVarU<double> WsfTBM_Mover::mNomRanges
protected

◆ mRangeErrors

TblDepVar1<double> WsfTBM_Mover::mRangeErrors
protected

◆ mShowStatus

bool WsfTBM_Mover::mShowStatus
protected

show initial conditions on standard output

Referenced by Initialize(), Initialize2(), ProcessInput(), WsfTBM_Mover(), and WsfTBM_Mover().

◆ mStage

◆ mStageIndex

unsigned int WsfTBM_Mover::mStageIndex
protected

◆ mStageList

◆ mState

double WsfTBM_Mover::mState[9]
protected

The current state vector (6 + 3 for accel).

Referenced by GetState(), Initialize2(), SetState(), Update(), WsfTBM_Mover(), and WsfTBM_Mover().

◆ mTargetAlt

double WsfTBM_Mover::mTargetAlt
protected

◆ mTargetLat

double WsfTBM_Mover::mTargetLat
protected

◆ mTargetLon

double WsfTBM_Mover::mTargetLon
protected

◆ mTerminalAlt

double WsfTBM_Mover::mTerminalAlt
protected

terrain height at terminal location (m)

Referenced by ComputeTargetError(), CreateInitialState(), GetTerminalLLA(), Initialize2(), WsfTBM_Mover(), and WsfTBM_Mover().

◆ mTerminalLat

double WsfTBM_Mover::mTerminalLat
protected

◆ mTerminalLon

double WsfTBM_Mover::mTerminalLon
protected

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