51 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
54 void Compute(
const double T,
const double *
const X)
const;
55 void OdeFcn(
const double T,
const double *
const X,
double *
const XDot)
const;
56 void PreOdeFcn(
const double T,
const double *
const X);
58 const double * ForceNED(
const double T,
const double *
const X);
59 const double * TorqueNED(
const double T,
const double *
const X);
61 const double * ForceBody(
const double T,
const double *
const X);
62 const double * TorqueBody(
const double T,
const double *
const X);
64 const double* ShaftTorqueCorrectedBody(
const double T,
const double*
const X);
65 const double* ShaftTorqueBody(
const double T,
const double*
const X);
67 const double* ShaftPowerCorrected(
const double T,
const double*
const X);
68 const double* ShaftPower(
const double T,
const double*
const X);
70 void FinalSetup(
const double T,
const double *
const X, ISimObjectCreator*
const creator);
71 #ifdef FH_VISUALIZATION
72 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
73 void RenderUpdate(
const double T,
const double*
const X);
77 double Ct (
double intensity )
const{
78 return std::pow(std::sin( intensity*sfh::pi/2 ),2.0);
81 #ifdef FH_VISUALIZATION
83 bool m_reverseRotationDirection;
85 Ogre::SceneNode *m_RenderNode;
86 Ogre::SceneNode *m_RenderNodeFoil;
91 mutable double m_ct_angle;
93 mutable double m_cq_angle;
97 mutable double m_shaftTorque;
98 mutable double m_shaftPower;
101 double m_torqueScale;
102 double m_thrustScale;
104 mutable double m_current;
105 mutable Eigen::Vector3d m_thrustVectorBody;
106 mutable Eigen::Vector3d m_posNED;
107 mutable Eigen::Quaterniond m_Q;
108 mutable Eigen::Vector3d m_force;
109 mutable Eigen::Vector3d m_torque;
111 mutable Eigen::Vector3d m_forceBody;
112 mutable Eigen::Vector3d m_torqueBody;
114 ICommonComputation * m_compute;
116 ISignalPort * m_inRPM;
117 ISignalPort * m_inThrustIntensity;
118 ISignalPort * m_inThrustVectorBody;
120 ISignalPort * m_inPositionNED;
121 ISignalPort * m_inVelocityNED;
122 ISignalPort * m_inOrientationNED;
124 environment::EnvironmentProvider *m_environment =
nullptr;
125 std::shared_ptr<CycloidalPropellerCurrentField> m_currentField = std::make_shared<CycloidalPropellerCurrentField>();