51 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
54 void Compute(
const double T,
const double *
const X);
55 void OdeFcn(
const double T,
const double *
const X,
double *
const XDot,
const bool IsMajorTimeStep);
56 void PreOdeFcn(
const double T,
const double *
const X, IStateUpdater* updater);
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;
101 double m_torqueScale;
102 double m_thrustScale;
105 Eigen::Vector3d m_thrustVectorBody;
106 Eigen::Vector3d m_posNED;
107 Eigen::Quaterniond m_Q;
108 Eigen::Vector3d m_force;
109 Eigen::Vector3d m_torque;
111 Eigen::Vector3d m_forceBody;
112 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;
125 std::shared_ptr<CycloidalPropellerCurrentField> m_currentField = std::make_shared<CycloidalPropellerCurrentField>();