Marine systems simulation
Loading...
Searching...
No Matches
Thruster.h
1#ifndef CThruster_h__
2#define CThruster_h__
37#include <SimObject.h>
38#include <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 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 bool bIsMajorTimeStep);
70 void PreOdeFcn(const double T, const double *const X, IStateUpdater* updater);
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 SimpleThruster *ThrusterCalculator;
102 environment::EnvironmentProvider *Environment;
103 std::shared_ptr<ThrusterCurrentField> m_CurrentField = std::make_shared<ThrusterCurrentField>();
104
105 #ifdef FH_VISUALIZATION
106 Ogre::SceneNode* m_RenderNode;
107 #endif
108 };
109}
110
111#endif // CThruster_h__
Definition SimpleThruster.h:8
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)
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