12#ifndef WSFTBM_MOVER_HPP
13#define WSFTBM_MOVER_HPP
15#include "wsf_mil_export.h"
19#include "TblLookup.hpp"
21#include "UtRandom.hpp"
70 void Update(
double aSimTime)
override;
80 void GetLaunchLLA(
double& aLat,
double& aLon,
double& aAlt,
bool& aAltAGL);
81 void SetLaunchLLA(
double aLat,
double aLon,
double aAlt,
bool aAltAGL);
87 void SetStageIndex(
unsigned int aStageIndex);
92 std::vector<double> GetState()
const;
93 void SetState(
const std::vector<double>& aStateVector);
95 void GetTerminalLLA(
double& aLat,
double& aLon,
double& aAlt);
96 void GetTargetLLA(
double& aLat,
double& aLon,
double& aAlt);
97 void SetTargetLLA(
double aLat,
double aLon,
double aAlt);
199 std::vector<double>& aNominalRanges,
200 std::vector<double>& aRangeErrors,
201 std::vector<double>& aAzimuthErrors,
202 double aNominalRange,
204 double aAzimuthError);
215 void ComputeLaunchAngle(
double fltran,
double psicrit,
double rngmax,
double& flttim,
double& psi,
double& maxAlt,
bool& toofar);
217 void ComputeMaximumRange(
double al,
double am,
double ah,
double tol,
double& psicrit,
double& rngmax);
221 double GetSpeed(
const double aState[9])
const;
223 void CepTableLookup(
double aTargetGroundRange,
double& aRangeError,
double& aAzimuthError);
225 void PrintState(
const double aState[9], ut::log::MessageStream& aStream)
const;
233 void odeint2(
double y[9],
double x1,
double x2);
235 void derivs(
double x,
const double y[9],
double dydx[6])
const;
237 void rkqc(
double y[9],
double dydx[6],
double& x,
double htry,
double eps,
double yscal[],
double& hdid,
double& hnext);
239 void rk4(
double y[9],
double dydx[6],
double x,
double h,
double yout[9]);
WsfSpatialDomain
A collection of enumerations and type definitions that are used across a number of components.
Definition WsfTypes.hpp:32
@ WSF_SPATIAL_DOMAIN_AIR
Cars, trucks, buildings, etc.
Definition WsfTypes.hpp:35
bool ProcessInput(UtInput &aInput) override
Definition WsfMover.cpp:138
bool Initialize(double aSimTime) override
Definition WsfMover.cpp:108
bool Initialize2(double aSimTime) override
Definition WsfPlatformPart.cpp:291
double mLastUpdateTime
The simulation time when Update was last called.
Definition WsfMover.hpp:351
WsfMover * Clone() const override=0
void Update(double aSimTime) override
Definition WsfMover.cpp:310
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
A stage represents one stage in the vehicle.
Definition WsfTBM_Mover.hpp:101
double mThrustDuration
The engine burn time (sec).
Definition WsfTBM_Mover.hpp:146
double mTotalMass
Definition WsfTBM_Mover.hpp:137
double mIgnitionTime
The time relative to launch and state when the engine ignites.
Definition WsfTBM_Mover.hpp:180
double mFuelMassFraction
Definition WsfTBM_Mover.hpp:133
double mBurnOutState[9]
Definition WsfTBM_Mover.hpp:185
double mReferenceArea
Reference area.
Definition WsfTBM_Mover.hpp:160
double mPreIgnitionCoastTime
Definition WsfTBM_Mover.hpp:150
double mInitialTime
The time relative to launch and state when the stage comes into existence (previous stage separates).
Definition WsfTBM_Mover.hpp:176
double mBallisticCoeff
Beta (N/m^2).
Definition WsfTBM_Mover.hpp:121
double mEmptyMass
Definition WsfTBM_Mover.hpp:125
double mCd0
Zero-lift drag coefficient (C_d0).
Definition WsfTBM_Mover.hpp:157
Stage()
Definition WsfTBM_Mover.cpp:2237
double mWdot
The time-rate-of-change of the vehicles weight (NOT MASS) while the engine of this stage is burning.
Definition WsfTBM_Mover.hpp:168
double mFuelMass
Definition WsfTBM_Mover.hpp:129
double mPayloadMass
Definition WsfTBM_Mover.hpp:170
double mPreSeparationCoastTime
Definition WsfTBM_Mover.hpp:154
double RemainingBurnoutMass() const
The sum of the empty (burnout) mass of this and the initial masses of the subsequent stages (kg).
Definition WsfTBM_Mover.hpp:113
double mIgnitionState[9]
Definition WsfTBM_Mover.hpp:181
bool ProcessInput(UtInput &aInput)
Definition WsfTBM_Mover.cpp:2412
double mThrust
The thrust (N).
Definition WsfTBM_Mover.hpp:140
double mSeparationTime
The time relative to launch when the stage separates from the vehicle.
Definition WsfTBM_Mover.hpp:188
double RemainingInitialMass() const
The sum of the initial masses of this and the subsequent stages (kg).
Definition WsfTBM_Mover.hpp:110
bool Initialize(double aStageStartTime)
Definition WsfTBM_Mover.cpp:2269
double mS_Cd0
The surface area times the drag coefficient (m^2).
Definition WsfTBM_Mover.hpp:173
double mInitialState[9]
Definition WsfTBM_Mover.hpp:177
double mSpecificImpulse
The specific impulse (sec).
Definition WsfTBM_Mover.hpp:143
double mBurnOutTime
The time relative to launch and state when the engine burns out.
Definition WsfTBM_Mover.hpp:184
bool Initialize2()
Definition WsfTBM_Mover.cpp:2391
void ComputeImpactRange(double psi, double &rangegr, double &xmid, double &aMaxAlt)
Definition WsfTBM_Mover.cpp:1132
double mTargetLon
target longitude (deg)
Definition WsfTBM_Mover.hpp:271
WsfSpatialDomain GetSpatialDomain() const override
Definition WsfTBM_Mover.hpp:75
void PrintState(const double aState[9], ut::log::MessageStream &aStream) const
Definition WsfTBM_Mover.cpp:1782
double mTerminalAlt
terrain height at terminal location (m)
Definition WsfTBM_Mover.hpp:276
double mLaunchTime
Simulation time at launch.
Definition WsfTBM_Mover.hpp:244
double mFixedCEP
Circular Error Probable. Defaults to zero, with no effect.
Definition WsfTBM_Mover.hpp:256
bool mIgnoreTarget
true if the target specification should be ignored
Definition WsfTBM_Mover.hpp:267
static void ClearRandom()
Definition WsfTBM_Mover.cpp:1003
double mTerminalLon
terminal longitude (deg)
Definition WsfTBM_Mover.hpp:275
TblDepVar1< double > mRangeErrors
Definition WsfTBM_Mover.hpp:284
bool ProcessCepTable(UtInput &aInput)
Definition WsfTBM_Mover.cpp:719
void SetTrailingEffects(double aSimTime) const
Definition WsfTBM_Mover.cpp:1012
std::vector< Stage > mStageList
The list of stages.
Definition WsfTBM_Mover.hpp:249
void CreateInitialState(double aElevation, double aState[9])
Definition WsfTBM_Mover.cpp:1419
bool mHaveTarget
Definition WsfTBM_Mover.hpp:254
bool SaveCepPoint(bool &aFormatIsFrozen, std::vector< double > &aNominalRanges, std::vector< double > &aRangeErrors, std::vector< double > &aAzimuthErrors, double aNominalRange, double aRangeError, double aAzimuthError)
Definition WsfTBM_Mover.cpp:814
TblLookupLU< double > mLookupUtility
Definition WsfTBM_Mover.hpp:286
bool mLofted
true if trajectory is lofted, false if depressed
Definition WsfTBM_Mover.hpp:268
double mTerminalLat
terminal latitude (deg)
Definition WsfTBM_Mover.hpp:274
void ComputeTransitionStateVectors(const double aInitialState[9])
Given an initial state vector, compute the state vectors at the transitions.
Definition WsfTBM_Mover.cpp:1365
void SetMasses()
Definition WsfTBM_Mover.cpp:507
TblDepVar1< double > mAzimuthErrors
Definition WsfTBM_Mover.hpp:285
void SetLaunchTime(double aLaunchTime)
Definition WsfTBM_Mover.hpp:84
void OutputDiagnostic(double aSimTime)
Used to output data when debugging.
double mState[9]
The current state vector (6 + 3 for accel).
Definition WsfTBM_Mover.hpp:247
bool mLaunchAltAGL
'true' if AGL altitude was specified in the input file
Definition WsfTBM_Mover.hpp:263
void SetTBMLastUpdateTime(double aLastUpdateTime)
Definition WsfTBM_Mover.hpp:78
double GetLaunchTime() const
Definition WsfTBM_Mover.hpp:83
double mTargetLat
target latitude (deg)
Definition WsfTBM_Mover.hpp:270
bool IsExtrapolating() const override
Definition WsfTBM_Mover.hpp:88
TblIndVarU< double > mNomRanges
Definition WsfTBM_Mover.hpp:283
bool mExplicitStageUsed
'true' if a 'stage' command was used
Definition WsfTBM_Mover.hpp:250
bool mIsBallistic
Definition WsfTBM_Mover.hpp:255
void ComputeTargetError()
Definition WsfTBM_Mover.cpp:526
unsigned int mStageIndex
The index of the current stage.
Definition WsfTBM_Mover.hpp:246
double mLaunchAlt
Launch altitude.
Definition WsfTBM_Mover.hpp:262
bool mImplicitStageUsed
'true' if a stage was defined without using 'stage'
Definition WsfTBM_Mover.hpp:251
bool mShowStatus
show initial conditions on standard output
Definition WsfTBM_Mover.hpp:278
double mTargetAlt
terrain height at target location (m)
Definition WsfTBM_Mover.hpp:272
void WriteStateForPlot(double aTime, const double aState[9])
Definition WsfTBM_Mover.cpp:1870
void ComputeLaunchAngle(double fltran, double psicrit, double rngmax, double &flttim, double &psi, double &maxAlt, bool &toofar)
Definition WsfTBM_Mover.cpp:1489
double GetAltitude(const double aState[9]) const
Get the geocentric altitude above the ellipsoid for the specified WCS location.
Definition WsfTBM_Mover.cpp:1753
WsfTBM_Mover & operator=(const WsfTBM_Mover &)=delete
double mLaunchLon
Launch longitude.
Definition WsfTBM_Mover.hpp:261
void odeint2(double y[9], double x1, double x2)
Definition WsfTBM_Mover.cpp:1921
void rk4(double y[9], double dydx[6], double x, double h, double yout[9])
Definition WsfTBM_Mover.cpp:1986
void ComputeMaximumRange(double al, double am, double ah, double tol, double &psicrit, double &rngmax)
Definition WsfTBM_Mover.cpp:1593
double GetTBMLastUpdateTime() const
Definition WsfTBM_Mover.hpp:77
void ScheduleScriptEvents(double aSimTime)
Definition WsfTBM_Mover.cpp:1811
double GetSpeed(const double aState[9]) const
Definition WsfTBM_Mover.cpp:1775
~WsfTBM_Mover() override=default
int mDebugCallCount
Definition WsfTBM_Mover.hpp:281
double mLaunchLat
Launch latitude.
Definition WsfTBM_Mover.hpp:260
void derivs(double x, const double y[9], double dydx[6]) const
Definition WsfTBM_Mover.cpp:2112
Stage mStage
The current stage.
Definition WsfTBM_Mover.hpp:245
void CepTableLookup(double aTargetGroundRange, double &aRangeError, double &aAzimuthError)
Definition WsfTBM_Mover.cpp:515
static ut::Random & GetRandom()
Definition WsfTBM_Mover.cpp:992
WsfTBM_Mover(WsfScenario &aScenario)
Definition WsfTBM_Mover.cpp:86
unsigned int GetStageIndex() const
Definition WsfTBM_Mover.hpp:86
int mDebugCallTrigger
Definition WsfTBM_Mover.hpp:280
bool mAzErrorUsed
Definition WsfTBM_Mover.hpp:253
void rkqc(double y[9], double dydx[6], double &x, double htry, double eps, double yscal[], double &hdid, double &hnext)
Definition WsfTBM_Mover.cpp:2024