FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Thruster.h
1#ifndef CThruster_h__
2#define CThruster_h__
37#include <fhsim/simobject/SimObject.h>
38#include <fhsim_environment/EnvironmentProvider.h>
39#include <memory>
40
41#include "./Ship/Actuators/SimpleThruster.h"
42
43namespace Ship{
44
45 class Thruster;
46
48 {
49 public:
50 ThrusterCurrentField() = default;
51 virtual ~ThrusterCurrentField() = default;
52 void inline setThruster(Thruster* thruster){ m_thruster = thruster; }
53 [[deprecated("This may not use up-to-date state info")]]
54 virtual marenv::Status GetCurrent(double time, const double position[3], double currentVelocity[3]);
55 private:
56 Thruster* m_thruster;
57 };
58
59
60 class Thruster: public SimObject
61 {
62 friend class ThrusterCurrentField;
63
64 public:
65 Thruster(const std::string simObjectName, ISimObjectCreator* const creator);
66 ~Thruster();
67
68 void FinalSetup( const double T, const double *const X, ISimObjectCreator* const creator );
69 void OdeFcn(const double T, const double* const X, double* const XDot) const;
70 void PreOdeFcn(const double T, const double *const X);
71
72 #ifdef FH_VISUALIZATION
73 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
74 void RenderUpdate( const double T, const double* const X);
75 #endif
76
78 const double* ForceNED (const double T, const double* const X);
80 const double* PositionNED(const double T, const double* const X);
81
82 private:
84 double m_ForceMax;
86 double m_Diameter;
87
89 ISignalPort *m_InAxisNED;
91 ISignalPort *m_InPositionNED;
93 ISignalPort *m_InPitch;
95 ISignalPort *m_InN;
96
97
98 double m_Position[3];
99 double m_Force[3];
100 double m_Axis[3];
101 std::unique_ptr<SimpleThruster> ThrusterCalculator;
103 WarnOnce m_tableWarning;
104 environment::EnvironmentProvider *Environment = nullptr;
105 std::shared_ptr<ThrusterCurrentField> m_CurrentField = std::make_shared<ThrusterCurrentField>();
106
107 #ifdef FH_VISUALIZATION
108 Ogre::SceneNode* m_RenderNode;
109 #endif
110 };
111}
112
113#endif // CThruster_h__
Definition Thruster.h:48
virtual marenv::Status GetCurrent(double time, const double position[3], double currentVelocity[3])
Definition Thruster.h:61
const double * PositionNED(const double T, const double *const X)
const double * ForceNED(const double T, const double *const X)
Definition TableLookup.h:18
Defines the interface for an relaying information about ocean currents.
Definition CurrentField.h:13
Status
Definition marenv.h:40
Simple waypoint object.
Definition CableAttach.h:16