Marine systems simulation
Loading...
Searching...
No Matches
Propeller4Q.h
1#ifndef Propeller4Q_h__
2#define Propeller4Q_h__
67#include <memory>
68#include <Eigen/Eigen>
69#include <SimObject.h>
70#include <EnvironmentProvider.h>
71#include <cstddef>
72#include "Ship/AzimuthCurve.h"
73
74#ifdef FH_VISUALIZATION
75 #include "sfh/ogre/CDynamicLines.h"
76#endif
77
78namespace Ship{
79
80 class Propeller4Q;
81
83 public:
84 Propeller4QCurrentField() = default;
85 virtual ~Propeller4QCurrentField() = default;
86 void inline setPropeller(Propeller4Q* propeller){ m_propeller = propeller; }
87 [[deprecated("This may not use up-to-date state info")]]
88 marenv::Status GetCurrent(double T, const double position[3], double currentVelocity[3]);
89 private:
90 Propeller4Q* m_propeller;
91 };
92
93 class Propeller4Q:public SimObject{
94 friend class Propeller4QCurrentField;
95 public:
96 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
97
100 Ruth = 666,Smogeli
101 };
102
105 Open,Ducted,Tunnel
106 };
107
109 struct Curve4Q{
112 };
113
114 Propeller4Q(const string simObjectName, ISimObjectCreator* const creator);
115
116 ~Propeller4Q();
117
118 void FinalSetup( const double T, const double *const X, ISimObjectCreator* const creator );
119 void OdeFcn(const double T, const double* const X, double* const XDot, const bool bIsMajorTimeStep);
120
121
122#ifdef FH_VISUALIZATION
123 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
124 void RenderUpdate( const double T, const double* const X);
125#endif
126
128 const double* Us(const double T, const double* const X);
130 const double* Rs(const double T, const double* const X);
132 const double* BetaT(const double T, const double* const X);
133
135 const double* BetaQ(const double T, const double* const X);
136
138 const double* Ct(const double T, const double* const X);
139
141 const double* Cq(const double T, const double* const X);
142
144 const double* ForceNED(const double T, const double* const X);
145
147 const double* TorqueNED(const double T, const double* const X);
148
150 const double* ForceBody(const double T, const double* const X);
151
153 const double* TorqueBody(const double T, const double* const X);
154
156 const double* BetaH(const double T, const double* const X);
157
159 const double* PDCurrent(const double T, const double* const X);
160
162 const double* ForceCorrectedBody(const double T, const double* const X);
163
165 const double* TorqueCorrectedBody(const double T, const double* const X);
166
168 const double* ForceCorrectedNED(const double T, const double* const X);
169
171 const double* TorqueCorrectedNED(const double T, const double* const X);
172
174 const double* ShaftTorqueCorrectedBody(const double T, const double* const X);
176 const double* ShaftTorqueBody(const double T, const double* const X);
177
179 const double* ShaftPowerCorrected(const double T, const double* const X);
180
182 const double* ShaftPower(const double T, const double* const X);
183
185 void Compute(const double T, const double* const X);
186 protected:
188 ICommonComputation *m_compute;
189
191 Eigen::Vector3d m_ForceNED;
193 Eigen::Vector3d m_ForceBody;
194
196 Eigen::Vector3d m_TorqueNED;
198 Eigen::Vector3d m_TorqueBody;
199
201 Eigen::Vector3d m_ForceCorrectedNED;
203 Eigen::Vector3d m_ForceCorrectedBody;
204
206 Eigen::Vector3d m_TorqueCorrectedNED;
208 Eigen::Vector3d m_TorqueCorrectedBody;
209
210 Eigen::Quaterniond m_OrientationNED;
211 Eigen::Vector3d m_PositionNED;
212 Eigen::Vector3d m_VelocityNED;
213 double m_flowStateHigh;
214 double m_RPM;
215
218
221
224
227
230
233
236
238 double m_Us;
239
241 double m_Rs;
242
244 double m_betaT;
245
247 double m_betaQ;
248
250 double m_beta_h;
251
253 double m_PDcur;
254
256 ISignalPort *m_InOrientationNED;
257
259 ISignalPort *m_InMyRPM;
260
262 ISignalPort *m_InMyPD;
263
265 ISignalPort *m_InVelocityNED;
266
268 ISignalPort *m_InPositionNED;
269
271 environment::EnvironmentProvider *m_environment;
272
274 std::shared_ptr<Propeller4QCurrentField> m_currentField = std::make_shared<Propeller4QCurrentField>();
275
278
281
284
287
290
293
295 int m_IndexRotationalFlowState1;
296
298 int m_IndexRotationalFlowState2;
299
301 double m_D;
302
305
307 double *m_PD;
308
311
313 double m_Cq;
314
316 double m_Ct;
317
320
323
325 double m_U;
326
329
332
333 bool m_azimuthinMainLoss;
334
335#ifdef FH_VISUALIZATION
337 int m_IndexPropellerRotationSatet;
338
340 bool m_reverseRotationDirection;
341
343 CDynamicLines * m_lines;
344
346 Ogre::SceneNode* m_RenderNode;
347
349 Ogre::SceneNode* m_RenderNodePropeller;
350#endif
351 };
352}
353#endif // Propeller4Q_h__
Definition AzimuthCurve.h:9
Definition Propeller4Q.h:82
marenv::Status GetCurrent(double T, const double position[3], double currentVelocity[3])
Definition Propeller4Q.h:93
ISignalPort * m_InPositionNED
Definition Propeller4Q.h:268
Eigen::Vector3d m_ForceCorrectedNED
Definition Propeller4Q.h:201
const double * ForceBody(const double T, const double *const X)
double m_shaftPowerScaling
Definition Propeller4Q.h:229
double m_shaftPower
Definition Propeller4Q.h:223
Eigen::Vector3d m_TorqueCorrectedBody
Definition Propeller4Q.h:208
PropellerType m_PropellerType
Definition Propeller4Q.h:277
const double * TorqueCorrectedBody(const double T, const double *const X)
const double * TorqueNED(const double T, const double *const X)
const double * Cq(const double T, const double *const X)
VentilationTheory m_VentilationTheory
Definition Propeller4Q.h:280
double m_shaftPowerCorrected
Definition Propeller4Q.h:226
ISignalPort * m_InOrientationNED
Definition Propeller4Q.h:256
double m_shaftTorqueCorrected
Definition Propeller4Q.h:220
ISignalPort * m_InMyPD
Definition Propeller4Q.h:262
double m_betaT
Definition Propeller4Q.h:244
Eigen::Vector3d m_ForceBody
Definition Propeller4Q.h:193
int m_IndexVentialtionStateT
Definition Propeller4Q.h:286
const double * Rs(const double T, const double *const X)
double m_U
Definition Propeller4Q.h:325
double m_beta_h
Definition Propeller4Q.h:250
bool m_lowSpeedJet
Definition Propeller4Q.h:235
std::shared_ptr< Propeller4QCurrentField > m_currentField
Definition Propeller4Q.h:274
int m_numPD
Definition Propeller4Q.h:304
int m_IndexVentialtionStateQ
Definition Propeller4Q.h:283
Curve4Q * m_curve
Definition Propeller4Q.h:310
const double * PDCurrent(const double T, const double *const X)
Eigen::Vector3d m_TorqueBody
Definition Propeller4Q.h:198
const double * ForceNED(const double T, const double *const X)
const double * Ct(const double T, const double *const X)
Eigen::Vector3d m_TorqueNED
Definition Propeller4Q.h:196
double m_deltaBetaPlus
Definition Propeller4Q.h:319
int m_IndexAxialFlowStateLow
Definition Propeller4Q.h:289
double m_ThrustDeduction
Definition Propeller4Q.h:331
environment::EnvironmentProvider * m_environment
Definition Propeller4Q.h:271
double * m_PD
Definition Propeller4Q.h:307
double m_Ct
Definition Propeller4Q.h:316
double m_WakeFraction
Definition Propeller4Q.h:328
double m_D
Definition Propeller4Q.h:301
const double * BetaH(const double T, const double *const X)
ISignalPort * m_InVelocityNED
Definition Propeller4Q.h:265
const double * ShaftPowerCorrected(const double T, const double *const X)
double m_Rs
Definition Propeller4Q.h:241
Eigen::Vector3d m_TorqueCorrectedNED
Definition Propeller4Q.h:206
const double * BetaQ(const double T, const double *const X)
const double * ShaftPower(const double T, const double *const X)
const double * ForceCorrectedNED(const double T, const double *const X)
const double * ForceCorrectedBody(const double T, const double *const X)
double m_PDcur
Definition Propeller4Q.h:253
double m_shaftTorque
Definition Propeller4Q.h:217
const double * ShaftTorqueCorrectedBody(const double T, const double *const X)
const double * ShaftTorqueBody(const double T, const double *const X)
Eigen::Vector3d m_ForceNED
Definition Propeller4Q.h:191
double m_deltaBetaMinus
Definition Propeller4Q.h:322
double m_Cq
Definition Propeller4Q.h:313
VentilationTheory
Definition Propeller4Q.h:99
Eigen::Vector3d m_ForceCorrectedBody
Definition Propeller4Q.h:203
const double * TorqueBody(const double T, const double *const X)
ISignalPort * m_InMyRPM
Definition Propeller4Q.h:259
double m_propellerThrustScaling
Definition Propeller4Q.h:232
int m_IndexAxialFlowStateHigh
Definition Propeller4Q.h:292
const double * Us(const double T, const double *const X)
const double * BetaT(const double T, const double *const X)
const double * TorqueCorrectedNED(const double T, const double *const X)
PropellerType
Definition Propeller4Q.h:104
double m_Us
Definition Propeller4Q.h:238
double m_betaQ
Definition Propeller4Q.h:247
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
Definition Propeller4Q.h:109