12#ifndef P6DOFPROPULSIONSYSTEM_H
13#define P6DOFPROPULSIONSYSTEM_H
15#include "p6dof_export.h"
19#include <unordered_map>
25#include "UtVec3dX.hpp"
63 void Update(int64_t aSimTime_nanosec);
71 void CalculatePropulsionFM(
double aDeltaT_sec,
73 double aDynPress_lbsqft,
74 double aStatPress_lbssqft,
80 double& aFuelBurnRate_pps,
81 double& aFuelBurned_lbs);
88 void UpdatePropulsionFM(
double aDeltaT_sec,
90 double aDynPress_lbsqft,
91 double aStatPress_lbssqft,
97 double& aFuelBurnRate_pps,
98 double& aFuelBurned_lbs);
116 void SetThrottleLeverPosition(
double aThrottleLeverPosition);
119 void SetThrustVectoringYaw_deg(
double aThrustVectoringAngle_deg);
122 void SetThrustVectoringPitch_deg(
double aThrustVectoringAngle_deg);
125 void EnableThrustVectoring(
bool aEnableThrustVectoring);
128 void SetThrustReserver(
double aThrustReserverSetting);
131 void EnableThrustReverser(
bool aEnableThrustReverser);
140 bool AfterburnerIsPresent()
const;
143 size_t GetNumThrustProducers()
const;
146 size_t GetNumFuelTanks()
const;
149 void Ignite(int64_t aIgniteTimeInFrame_nanosec);
153 void Shutdown(int64_t aTerminateTime_nanosec = 0);
156 bool RemoveFuelTankByName(std::string aName);
161 bool AddFuelTransfer(
const std::string& aTransferName,
162 const std::string& aSourceTankName,
163 const std::string& aTargetTankName);
167 bool AddFuelTransferAndConnect(
const std::string& aTransferName,
168 const std::string& aSourceTankName,
169 const std::string& aTargetTankName);
172 bool RemoveFuelTransfer(
const std::string& aTransferName);
174 bool ModifyFuelQuantity(
const std::string& aTankName,
double aQty_lbs);
176 bool FuelTransferNameUnique(
const std::string& aName)
const;
179 bool IsProducingThrust()
const;
183 bool SetFuelFeed(std::string& aEngineName, std::string aFuelTankName);
187 bool SetFuelFeed(std::string aFuelTankName);
198 double GetInternalFuelTankCapacity_lbs()
const;
201 double GetCurrentInternalFuelTankQuantity_lbs()
const;
210 double AddFuelQuantity_lbs(
double aFuelToAdd_lbs);
216 double FillAllTanks(
double aPercentFull);
219 void EmptyAllTanks();
229 void CalculateCurrentMassProperties();
239 bool AnEngineIsOperating(
bool aTestSubobjects =
false)
const;
244 bool AnEngineIsSmoking(
bool aTestSubobjects =
false)
const;
249 bool AnEngineHasAfterburnerOn(
bool aTestSubobjects =
false)
const;
254 bool AnEngineIsContrailing(
bool aTestSubobjects =
false)
const;
259 bool AnEngineIsEmittingSmokeTrail(
bool aTestSubobjects =
false)
const;
262 void MakeAnEngineSmoke(
int aEngineIndex);
269 void PropulsionCalculationsFM(
double aDeltaT_sec,
271 double aDynPress_lbsqft,
272 double aStatPress_lbssqft,
278 double& aFuelBurnRate_pps,
279 double& aFuelBurned_lbs,
282 void RemoveInvalidFuelTransfers();
aObjectPtr Update(simTime)
Definition P6DofFlightControlSystem.hpp:42
Definition P6DofForceAndMomentsObject.hpp:24
Definition P6DofFuelTank.hpp:33
Definition P6DofMassProperties.hpp:26
P6DofObject(P6DofScenario *aScenario)
Definition P6DofObject.cpp:17
P6DofObject * Clone() const
Definition P6DofObject.cpp:24
virtual void SetParentVehicle(P6DofVehicle *aParentVehicle)
Definition P6DofObject.hpp:39
Definition P6DofPropulsionSystem.hpp:35
P6DofThrustProducerObject::ThrustControlInputValueData * mThrottleSettingPitch
Definition P6DofPropulsionSystem.hpp:321
std::vector< P6DofThrustProducerObject * > mEngineList
Definition P6DofPropulsionSystem.hpp:308
double mPropulsionSystemThrottleLeverPosition
Definition P6DofPropulsionSystem.hpp:312
const std::vector< P6DofThrustProducerObject * > & GetThrustProducerList() const
Definition P6DofPropulsionSystem.hpp:113
std::vector< ThrustProducerTypeInfo * > mEngineTypeList
Definition P6DofPropulsionSystem.hpp:309
bool mThrustVectorPitchSet
Definition P6DofPropulsionSystem.hpp:325
bool Initialize(int64_t aSimTime_nanosec)
Definition P6DofPropulsionSystem.cpp:177
bool mThrustReverserSet
Definition P6DofPropulsionSystem.hpp:323
std::vector< P6DofThrustProducerObject::ThrustControlInputValueData * > mThrustControlInputValueDataList
Definition P6DofPropulsionSystem.hpp:315
bool mEnableThrustVectoring
Definition P6DofPropulsionSystem.hpp:329
std::vector< FuelTransfer * > mFuelTransferList
Definition P6DofPropulsionSystem.hpp:311
P6DofThrustProducerObject::ThrustControlInputValueData * mThrottleSettingYaw
Definition P6DofPropulsionSystem.hpp:320
bool ProcessInput(UtInput &aInput)
Definition P6DofPropulsionSystem.cpp:309
bool mEnableThrustReverser
Definition P6DofPropulsionSystem.hpp:331
P6DofPropulsionSystem & operator=(const P6DofPropulsionSystem &other)=delete
double mThrustReserverSetting
Definition P6DofPropulsionSystem.hpp:330
const P6DofMassProperties & GetMassProperties() const
Definition P6DofPropulsionSystem.hpp:224
const std::unordered_map< std::string, P6DofFuelTank * > & GetFuelTanks() const
Definition P6DofPropulsionSystem.hpp:104
P6DofThrustProducerObject::ThrustControlInputValueData * mThrottleSettingReverser
Definition P6DofPropulsionSystem.hpp:319
bool ThrustReverserEnabled() const
Definition P6DofPropulsionSystem.hpp:134
double mThrustVectoringAnglePitch_deg
Definition P6DofPropulsionSystem.hpp:328
bool mThrustVectorYawSet
Definition P6DofPropulsionSystem.hpp:324
P6DofThrustProducerObject::ThrustControlInputValueData * mThrottleSettingMIL
Definition P6DofPropulsionSystem.hpp:317
std::unordered_map< std::string, P6DofFuelTank * > mFuelTankMap
Definition P6DofPropulsionSystem.hpp:310
bool ThrustVectoringEnabled() const
Definition P6DofPropulsionSystem.hpp:137
P6DofPropulsionSystem(P6DofScenario *aScenario)
Definition P6DofPropulsionSystem.cpp:32
P6DofMassProperties mMassProperties
Definition P6DofPropulsionSystem.hpp:333
P6DofThrustProducerObject::ThrustControlInputValueData * mThrottleSettingAB
Definition P6DofPropulsionSystem.hpp:318
bool mThrottleLeverPositionSet
Definition P6DofPropulsionSystem.hpp:322
double mThrustVectoringAngleYaw_deg
Definition P6DofPropulsionSystem.hpp:327
int64_t mLastSimTime_nanosec
Definition P6DofPropulsionSystem.hpp:313
void SetLastSimTime(int64_t aLastSimTime_nanosec)
Definition P6DofPropulsionSystem.hpp:65
Definition P6DofScenario.hpp:25
Definition P6DofThrustProducerObject.hpp:34
Definition P6DofVehicle.hpp:53
Definition P6DofPropulsionSystem.hpp:47
std::string sourceTankName
Definition P6DofPropulsionSystem.hpp:49
std::string xferName
Definition P6DofPropulsionSystem.hpp:48
P6DofFuelTank * targetTank
Definition P6DofPropulsionSystem.hpp:52
std::string targetTankName
Definition P6DofPropulsionSystem.hpp:50
P6DofFuelTank * sourceTank
Definition P6DofPropulsionSystem.hpp:51
Definition P6DofPropulsionSystem.hpp:297
std::string instanceName
Definition P6DofPropulsionSystem.hpp:301
UtVec3dX relPos
Definition P6DofPropulsionSystem.hpp:303
UtVec3dX relYPR
Definition P6DofPropulsionSystem.hpp:305
double offset_ft
Definition P6DofPropulsionSystem.hpp:304
std::string fuelFeedName
Definition P6DofPropulsionSystem.hpp:302
std::string typeName
Definition P6DofPropulsionSystem.hpp:300
std::string baseTypeName
Definition P6DofPropulsionSystem.hpp:299
Definition P6DofPropulsionSystem.hpp:285
double fuelActuallyProvided_lbs
Definition P6DofPropulsionSystem.hpp:287
P6DofFuelTank * sourceTank
Definition P6DofPropulsionSystem.hpp:286
Definition P6DofPropulsionSystem.hpp:291
P6DofFuelTank * targetAddTank
Definition P6DofPropulsionSystem.hpp:292
std::vector< fuelTankData > sourceTankList
Definition P6DofPropulsionSystem.hpp:293