12#ifndef WSFSIXDOFPROPULSIONSYSTEM_HPP
13#define WSFSIXDOFPROPULSIONSYSTEM_HPP
15#include "wsf_six_dof_export.h"
19#include <unordered_map>
23#include "UtVec3dX.hpp"
59 virtual void Update(int64_t aSimTime_nanosec);
67 FuelTank* GetFuelTank(
const std::string& aName)
const;
94 virtual void Ignite(int64_t aIgniteTimeInFrame_nanosec) = 0;
98 virtual void Shutdown(int64_t aTerminateTime_nanosec = 0) = 0;
104 bool AddFuelTank(std::unique_ptr<FuelTank> aFuelTank);
110 const std::string& aSourceTankName,
111 const std::string& aTargetTankName);
116 const std::string& aSourceTankName,
117 const std::string& aTargetTankName);
131 virtual bool SetFuelFeed(std::string& aEngineName, std::string aFuelTankName) = 0;
229 std::unordered_map<std::string, UtCloneablePtr<FuelTank>>
mFuelTankMap;
aObjectPtr Update(simTime)
Definition WsfSixDOF_FuelTank.hpp:35
Definition WsfSixDOF_MassProperties.hpp:29
This is a base class for detailed air movers. This umbrella can cover RB6 or PM6 models.
Definition WsfSixDOF_Mover.hpp:58
double FillAllTanks(double aPercentFull)
Definition WsfSixDOF_PropulsionSystem.cpp:471
virtual bool AnEngineIsOperating(bool aTestSubobjects=false) const =0
bool AddFuelTransferAndConnect(const std::string &aTransferName, const std::string &aSourceTankName, const std::string &aTargetTankName)
Definition WsfSixDOF_PropulsionSystem.cpp:322
double GetInternalFuelTankCapacity_lbs() const
Definition WsfSixDOF_PropulsionSystem.cpp:413
PropulsionSystem & operator=(const PropulsionSystem &other)=delete
size_t GetNumFuelTanks() const
Definition WsfSixDOF_PropulsionSystem.cpp:518
virtual bool AfterburnerIsPresent() const =0
virtual void Ignite(int64_t aIgniteTimeInFrame_nanosec)=0
virtual void Shutdown(int64_t aTerminateTime_nanosec=0)=0
virtual bool SetFuelFeed(std::string aFuelTankName)=0
virtual ThrustProducerObject * GetThrustProducerObjectByName(const std::string &aName) const =0
void SetParentVehicle(Mover *aParentVehicle) override
Definition WsfSixDOF_PropulsionSystem.cpp:21
virtual bool IsProducingThrust() const =0
virtual bool AnEngineHasAfterburnerOn(bool aTestSubobjects=false) const =0
bool ThrustVectoringEnabled() const
Definition WsfSixDOF_PropulsionSystem.hpp:82
double mPropulsionSystemThrottleLeverPosition
Definition WsfSixDOF_PropulsionSystem.hpp:233
void RemoveInvalidFuelTransfers()
Definition WsfSixDOF_PropulsionSystem.cpp:53
virtual void MakeAnEngineSmoke(int aEngineIndex)=0
PropulsionSystem()=default
virtual bool AnEngineIsEmittingSmokeTrail(bool aTestSubobjects=false) const =0
bool ModifyFuelQuantity(const std::string &aTankName, double aQty_lbs)
Definition WsfSixDOF_PropulsionSystem.cpp:399
virtual void EnableThrustVectoring(bool aEnableThrustVectoring)=0
double GetCurrentInternalFuelTankQuantity_lbs() const
Definition WsfSixDOF_PropulsionSystem.cpp:424
bool AddFuelTransfer(const std::string &aTransferName, const std::string &aSourceTankName, const std::string &aTargetTankName)
Definition WsfSixDOF_PropulsionSystem.cpp:295
virtual bool AnEngineIsContrailing(bool aTestSubobjects=false) const =0
double AddFuelQuantity_lbs(double aFuelToAdd_lbs)
Definition WsfSixDOF_PropulsionSystem.cpp:435
const std::unordered_map< std::string, UtCloneablePtr< FuelTank > > & GetFuelTanks() const
Definition WsfSixDOF_PropulsionSystem.hpp:64
void SetLastSimTime(int64_t aLastSimTime_nanosec)
Definition WsfSixDOF_PropulsionSystem.hpp:61
virtual bool AnEngineIsSmoking(bool aTestSubobjects=false) const =0
virtual void SetThrottleLeverPosition(double aThrottleLeverPosition)=0
const MassProperties GetMassProperties() const
Definition WsfSixDOF_PropulsionSystem.cpp:499
bool mEnableThrustVectoring
Definition WsfSixDOF_PropulsionSystem.hpp:236
std::unordered_map< std::string, UtCloneablePtr< FuelTank > > mFuelTankMap
Definition WsfSixDOF_PropulsionSystem.hpp:229
void EmptyAllTanks()
Definition WsfSixDOF_PropulsionSystem.cpp:491
bool RemoveFuelTransfer(const std::string &aTransferName)
Definition WsfSixDOF_PropulsionSystem.cpp:384
int64_t mLastSimTime_nanosec
Definition WsfSixDOF_PropulsionSystem.hpp:231
bool AddFuelTank(std::unique_ptr< FuelTank > aFuelTank)
Definition WsfSixDOF_PropulsionSystem.cpp:284
virtual bool SetFuelFeed(std::string &aEngineName, std::string aFuelTankName)=0
virtual ThrustProducerObject * GetThrustProducerByIndex(size_t aIndex) const =0
virtual size_t GetNumThrustProducers() const =0
bool FuelTransferNameUnique(const std::string &aName) const
Definition WsfSixDOF_PropulsionSystem.cpp:261
bool RemoveFuelTankByName(std::string aName)
Definition WsfSixDOF_PropulsionSystem.cpp:273
bool mThrottleLeverPositionSet
Definition WsfSixDOF_PropulsionSystem.hpp:234
virtual bool Initialize(int64_t aSimTime_nanosec)=0
std::vector< std::unique_ptr< FuelTransfer > > mFuelTransferList
Definition WsfSixDOF_PropulsionSystem.hpp:228
Definition WsfSixDOF_ThrustProducerObject.hpp:35
Definition WsfSA_Processor.hpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Definition WsfSixDOF_PropulsionSystem.hpp:217
double fuelActuallyProvided_lbs
Definition WsfSixDOF_PropulsionSystem.hpp:219
FuelTank * sourceTank
Definition WsfSixDOF_PropulsionSystem.hpp:218
Definition WsfSixDOF_PropulsionSystem.hpp:42
FuelTank * targetTank
Definition WsfSixDOF_PropulsionSystem.hpp:47
FuelTank * sourceTank
Definition WsfSixDOF_PropulsionSystem.hpp:46
std::string sourceTankName
Definition WsfSixDOF_PropulsionSystem.hpp:44
std::string xferName
Definition WsfSixDOF_PropulsionSystem.hpp:43
std::string targetTankName
Definition WsfSixDOF_PropulsionSystem.hpp:45
Definition WsfSixDOF_PropulsionSystem.hpp:223
FuelTank * targetAddTank
Definition WsfSixDOF_PropulsionSystem.hpp:224
std::vector< FuelTankData > sourceTankList
Definition WsfSixDOF_PropulsionSystem.hpp:225
Definition WsfSixDOF_PropulsionSystem.hpp:210
std::string fuelFeedName
Definition WsfSixDOF_PropulsionSystem.hpp:211
UtVec3dX relativePosition
Definition WsfSixDOF_PropulsionSystem.hpp:212
UtVec3dX relativeYawPitchRoll
Definition WsfSixDOF_PropulsionSystem.hpp:213