12#ifndef WSFRIGIDBODYSIXDOFUTILS_HPP
13#define WSFRIGIDBODYSIXDOFUTILS_HPP
15#include "wsf_six_dof_export.h"
21#include "UtVec3dX.hpp"
37WSF_SIX_DOF_EXPORT
void Autotune(RigidBodyMover* aVehicle);
39WSF_SIX_DOF_EXPORT std::vector<Pid::Type>
GetRelevantPids(
const RigidBodyMover* aVehicle);
45CanFlyAt(RigidBodyMover* aObject,
double aAltitude_ft,
double aVelocity_fps,
double aThrottleForward,
double aFlapsDown);
52 const std::string& aFilename,
53 const double& aMaxMach);
93 const std::string& aTableName,
94 const std::string& aParameterType,
95 const std::string& aParameterUnitsString)
const;
120 double GetValueAtParam(std::vector<paramDataPair*>& aList,
double aParameter)
const;
143 void OutputToString(std::string& aInput,
const std::string& aTableName)
const;
188 double& aThrustProduced_lbs,
193 void AddStickAndCL(
double aMach,
double aAlpha_rad,
double& aStickBack,
bool& aMachAdded,
bool aLowPoint,
bool aHighPoint);
197 double& aStickBackBaseline,
198 double& aStickBackThrustShift,
199 double& aStickBackXCmShift,
200 double& aStickBackZCmShift);
206 void AddAlphaVsMachCL(
double aMach,
double aCL,
double aMinAlpha_deg,
double aMaxAlpha_deg,
bool& aMachAdded);
227 bool CreateCLMaxAndAlphaMaxTables();
228 bool CreateCLMinAndAlphaMinTables();
229 bool CreateStickForZeroMomentTable();
230 bool CreateAlphaVsMachCLTable();
double GetValueAtMach(double aMach) const
Definition WsfRigidBodySixDOF_Utils.cpp:1219
RigidBodyMachDataTable()
Definition WsfRigidBodySixDOF_Utils.cpp:1187
void OutputToString(std::string &aInput, const std::string &aTableName) const
Definition WsfRigidBodySixDOF_Utils.cpp:1246
RigidBodyMachDataTable & operator=(const RigidBodyMachDataTable &other)=delete
RigidBodyMachDataTable * Clone() const
Definition WsfRigidBodySixDOF_Utils.cpp:1206
std::vector< machDataPair * > mMachDataList
Definition WsfRigidBodySixDOF_Utils.hpp:154
void CreateNewMachValuePair(double aMach, double aValue)
Definition WsfRigidBodySixDOF_Utils.cpp:1211
double GetMinParameter(const machParamDataListPair *aMachParamDataListPair) const
Definition WsfRigidBodySixDOF_Utils.cpp:840
void CreateNewMach(double aMach)
Definition WsfRigidBodySixDOF_Utils.cpp:593
double GetValueAtMachParam(double aMach, double aParameter) const
Definition WsfRigidBodySixDOF_Utils.cpp:612
double GetMaxParameterAtMach(double aMach) const
Definition WsfRigidBodySixDOF_Utils.cpp:648
void OutputToString(std::string &aInput, const std::string &aTableName, const std::string &aParameterType, const std::string &aParameterUnitsString) const
Definition WsfRigidBodySixDOF_Utils.cpp:1142
double GetMinData(const machParamDataListPair *aMachParamDataListPair) const
Definition WsfRigidBodySixDOF_Utils.cpp:1065
RigidBodyMachParamDataTable()
Definition WsfRigidBodySixDOF_Utils.cpp:554
double GetParameterAtMach(double aMach, bool aGetMin) const
Definition WsfRigidBodySixDOF_Utils.cpp:663
double GetMaxParameter(const machParamDataListPair *aMachParamDataListPair) const
Definition WsfRigidBodySixDOF_Utils.cpp:864
RigidBodyMachParamDataTable * Clone() const
Definition WsfRigidBodySixDOF_Utils.cpp:588
machParamDataListPair * mCurrentMachParamDataPairPtr
Definition WsfRigidBodySixDOF_Utils.hpp:124
void AddNewParamDataPair(double aParameter, double aData)
Definition WsfRigidBodySixDOF_Utils.cpp:602
double GetValueAtParam(std::vector< paramDataPair * > &aList, double aParameter) const
Definition WsfRigidBodySixDOF_Utils.cpp:1113
double GetMinDataAtMach(double aMach) const
Definition WsfRigidBodySixDOF_Utils.cpp:653
double GetMaxData(const machParamDataListPair *aMachParamDataListPair) const
Definition WsfRigidBodySixDOF_Utils.cpp:1089
RigidBodyMachParamDataTable & operator=(const RigidBodyMachParamDataTable &other)=delete
double GetMinParameterAtMach(double aMach) const
Definition WsfRigidBodySixDOF_Utils.cpp:643
double GetDataAtMach(double aMach, bool aGetMin) const
Definition WsfRigidBodySixDOF_Utils.cpp:888
std::vector< machParamDataListPair * > mMachParamDataList
Definition WsfRigidBodySixDOF_Utils.hpp:122
double GetMaxDataAtMach(double aMach) const
Definition WsfRigidBodySixDOF_Utils.cpp:658
Definition WsfRigidBodySixDOF_Mover.hpp:38
Definition WsfRigidBodySixDOF_Utils.hpp:160
std::unique_ptr< RigidBodyMachParamDataTable > mAlphaVsMachCLTable
Definition WsfRigidBodySixDOF_Utils.hpp:218
int CountValidStickAndCL(double aMach, std::vector< double > aAlphaVector_deg)
Definition WsfRigidBodySixDOF_Utils.cpp:1708
bool CalcStickAndCL(double aMach, double aAlpha_rad, double &aStickBackBaseline, double &aStickBackThrustShift, double &aStickBackXCmShift, double &aStickBackZCmShift)
Definition WsfRigidBodySixDOF_Utils.cpp:1660
void AddAlphaVsMachCL(double aMach, double aCL, double aMinAlpha_deg, double aMaxAlpha_deg, bool &aMachAdded)
Definition WsfRigidBodySixDOF_Utils.cpp:1579
void AddStickAndCL(double aMach, double aAlpha_rad, double &aStickBack, bool &aMachAdded, bool aLowPoint, bool aHighPoint)
Definition WsfRigidBodySixDOF_Utils.cpp:1730
void CreateMachTestList(double aMaxMach)
Definition WsfRigidBodySixDOF_Utils.cpp:1957
std::vector< double > mMachTestList
Definition WsfRigidBodySixDOF_Utils.hpp:222
std::unique_ptr< RigidBodyMachDataTable > mCLMinVsMachTable
Definition WsfRigidBodySixDOF_Utils.hpp:210
void OutputCLMaxMachTableToInputString(std::string &aInput) const
Definition WsfRigidBodySixDOF_Utils.cpp:1858
std::unique_ptr< RigidBodyMachParamDataTable > mZcgDeltaStickForZeroMomentVsMachAlphaTablePtr
Definition WsfRigidBodySixDOF_Utils.hpp:216
void OutputStickMachAlphaTablesToInputString(std::string &aInput) const
Definition WsfRigidBodySixDOF_Utils.cpp:1910
RigidBodyTableTool(RigidBodyMover *aObject)
Definition WsfRigidBodySixDOF_Utils.cpp:1261
std::unique_ptr< RigidBodyMachParamDataTable > mStickForZeroMomentVsMachAlphaTablePtr
Definition WsfRigidBodySixDOF_Utils.hpp:213
void OutputAlphaMaxMachTableToInputString(std::string &aInput) const
Definition WsfRigidBodySixDOF_Utils.cpp:1878
void InitializeTableMachValues(double aMaxMach)
Definition WsfRigidBodySixDOF_Utils.cpp:1952
void OutputAlphaMinMachTableToInputString(std::string &aInput) const
Definition WsfRigidBodySixDOF_Utils.cpp:1888
RigidBodyMover * mObject
Definition WsfRigidBodySixDOF_Utils.hpp:208
std::unique_ptr< RigidBodyMachDataTable > mAlphaMax_degVsMachTable
Definition WsfRigidBodySixDOF_Utils.hpp:211
void OutputCLMinMachTableToInputString(std::string &aInput) const
Definition WsfRigidBodySixDOF_Utils.cpp:1868
std::unique_ptr< RigidBodyMachDataTable > mCLMaxVsMachTable
Definition WsfRigidBodySixDOF_Utils.hpp:209
double CalcCLFromCLArea(double aCLArea)
Definition WsfRigidBodySixDOF_Utils.cpp:1526
bool mTableListsInitialized
Definition WsfRigidBodySixDOF_Utils.hpp:223
std::unique_ptr< RigidBodyMachParamDataTable > mThrustDeltaStickForZeroMomentVsMachAlphaTablePtr
Definition WsfRigidBodySixDOF_Utils.hpp:214
void OutputAlphaMachCLTableToInputString(std::string &aInput) const
Definition WsfRigidBodySixDOF_Utils.cpp:1898
~RigidBodyTableTool()=default
bool CreateAutopilotTables()
Definition WsfRigidBodySixDOF_Utils.cpp:1547
bool CalculateStickForZeroMoment(double aMach, double aAlpha_rad, bool aIsPowerOn, double &aThrustProduced_lbs, double &aStickBack)
Definition WsfRigidBodySixDOF_Utils.cpp:1284
std::unique_ptr< RigidBodyMachDataTable > mAlphaMin_degVsMachTable
Definition WsfRigidBodySixDOF_Utils.hpp:212
std::unique_ptr< RigidBodyMachParamDataTable > mXcgDeltaStickForZeroMomentVsMachAlphaTablePtr
Definition WsfRigidBodySixDOF_Utils.hpp:215
void OutputCLMachAlphaTableToInputString(std::string &aInput) const
Definition WsfRigidBodySixDOF_Utils.cpp:1940
std::unique_ptr< RigidBodyMachParamDataTable > mCLVsMachAlphaTable
Definition WsfRigidBodySixDOF_Utils.hpp:217
Definition WsfPointMassSixDOF_Utils.hpp:34
WSF_SIX_DOF_EXPORT void CreateAutopilotConfigFile(PointMassMover *aVehicle, const std::string &aFilename)
Definition WsfPointMassSixDOF_Utils.cpp:49
WSF_SIX_DOF_EXPORT std::vector< Pid::Type > GetRelevantPids(const RigidBodyMover *aVehicle)
Definition WsfRigidBodySixDOF_Utils.cpp:414
WSF_SIX_DOF_EXPORT void CommonCreateAutopilotSupportFile(PointMassTableTool &aTool, const std::string &aFilename)
Definition WsfPointMassSixDOF_Utils.cpp:273
WSF_SIX_DOF_EXPORT RigidBodyMover * CastToRigidBody(Mover *aVehicle)
Definition WsfRigidBodySixDOF_Utils.cpp:44
WSF_SIX_DOF_EXPORT double GetSphericalEarthRadius_m()
WSF_SIX_DOF_EXPORT void CreateAutopilotSupportFileWithMaxMach(PointMassMover *aObject, const std::string &aFilename, const double &aMaxMach)
Definition WsfPointMassSixDOF_Utils.cpp:262
WSF_SIX_DOF_EXPORT CanFlyAtReturnValue CanFlyAt(PointMassMover *aObject, double aAltitude_ft, double aVelocity_fps, double aThrottleForward, double aFlapsDown)
Definition WsfPointMassSixDOF_Utils.cpp:200
CanFlyAtReturnValue
Definition WsfSixDOF_Utils.hpp:31
WSF_SIX_DOF_EXPORT void CreateAutopilotSupportFile(PointMassMover *aObject, const std::string &aFilename)
Definition WsfPointMassSixDOF_Utils.cpp:252
Definition WsfSA_Processor.hpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Definition WsfRigidBodySixDOF_Utils.hpp:149
double value
Definition WsfRigidBodySixDOF_Utils.hpp:151
double mach
Definition WsfRigidBodySixDOF_Utils.hpp:150
Definition WsfRigidBodySixDOF_Utils.hpp:107
double mach
Definition WsfRigidBodySixDOF_Utils.hpp:108
std::vector< paramDataPair * > paramDataList
Definition WsfRigidBodySixDOF_Utils.hpp:109
Definition WsfRigidBodySixDOF_Utils.hpp:101
double value
Definition WsfRigidBodySixDOF_Utils.hpp:103
double parameter
Definition WsfRigidBodySixDOF_Utils.hpp:102