1#ifndef CNorrbinTanker_H
2#define CNorrbinTanker_H
85#include <CEnvironment.h>
93 EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
98 void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const creator);
100 void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot,
const bool bIsMajorTimeStep);
102#ifdef FH_VISUALIZATION
104 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
107 virtual void RenderUpdate(
const double T,
const double*
const X);
110 static double* tanker_CX;
111 static double* tanker_CY;
112 static double* tanker_CN;
113 static double* tanker_CK;
115 Eigen::Matrix<double, 1, 9> DWT;
116 Eigen::Matrix<double, 1, 9> DISPL;
117 Eigen::Matrix<double, 1, 9> Lpp;
118 Eigen::Matrix<double, 1, 9> B;
119 Eigen::Matrix<double, 1, 9> D;
120 Eigen::Matrix<double, 1, 9> TT;
121 Eigen::Matrix<double, 1, 9> U0;
122 Eigen::Matrix<double, 1, 9> RPM0;
124 Eigen::Matrix<double, 1, 9> T;
126 Eigen::Matrix<double, 1, 9> Xdu;
127 Eigen::Matrix<double, 1, 9> Xuu;
128 Eigen::Matrix<double, 1, 9> Xvr;
129 Eigen::Matrix<double, 1, 9> Xvv;
131 Eigen::Matrix<double, 3, 9> Xccdd;
132 Eigen::Matrix<double, 1, 9> Xccbd;
135 Eigen::Matrix<double, 1, 9> Xduz;
136 Eigen::Matrix<double, 1, 9> Xuuz;
137 Eigen::Matrix<double, 1, 9> Xvrz;
138 Eigen::Matrix<double, 1, 9> Xvvzz;
140 Eigen::Matrix<double, 1, 9> Ydv;
141 Eigen::Matrix<double, 1, 9> Yur;
142 Eigen::Matrix<double, 1, 9> Yuv;
143 Eigen::Matrix<double, 1, 9> Yvv;
145 Eigen::Matrix<double, 3, 9> Yccd;
146 Eigen::Matrix<double, 1, 9> Yccbbd;
148 Eigen::Matrix<double, 1, 9> Yt;
150 Eigen::Matrix<double, 1, 9> Ydvz;
151 Eigen::Matrix<double, 1, 9> Yurz;
152 Eigen::Matrix<double, 1, 9> Yuvz;
153 Eigen::Matrix<double, 1, 9> Yvvz;
154 Eigen::Matrix<double, 1, 9> Yccbbdz;
156 Eigen::Matrix<double, 1, 9> kk_Ndr;
157 Eigen::Matrix<double, 1, 9> Nur_xg;
158 Eigen::Matrix<double, 1, 9> Nuv;
159 Eigen::Matrix<double, 1, 9> Nvr;
161 Eigen::Matrix<double, 3, 9> Nccd;
163 Eigen::Matrix<double, 1, 9> Nccbbd;
164 Eigen::Matrix<double, 1, 9> Nt;
166 Eigen::Matrix<double, 1, 9> Ndrz;
167 Eigen::Matrix<double, 1, 9> Nurz;
168 Eigen::Matrix<double, 1, 9> Nuvz;
169 Eigen::Matrix<double, 1, 9> Nvrz;
170 Eigen::Matrix<double, 1, 9> Nccbbdz;
172 Eigen::Matrix<double, 1, 9> Tuu;
173 Eigen::Matrix<double, 1, 9> Tun;
174 Eigen::Matrix<double, 1, 9> Tnn;
177 Eigen::Matrix<double, 1, 9> Cun;
178 Eigen::Matrix<double, 1, 9> Cnn;
181 Eigen::Matrix<double, 1, 9> kk_Qn;
182 Eigen::Matrix<double, 1, 9> Qf;
183 Eigen::Matrix<double, 1, 9> Quu;
184 Eigen::Matrix<double, 1, 9> Qun;
185 Eigen::Matrix<double, 1, 9> Qnn;
186 Eigen::Matrix<double, 1, 9> Qn;
187 Eigen::Matrix<double, 1, 9> Qmu;
191 int m_indexStateDelta;
192 int m_indexStateVelocity;
193 int m_indexStateOmega;
194 int m_indexStateRotation;
195 int m_indexStatePosition;
198 virtual const double* Position(
const double dT,
const double*
const adX);
199 virtual const double* Velocity(
const double dT,
const double*
const adX);
200 virtual const double* Rotation(
const double dT,
const double*
const adX);
201 virtual const double* Omega(
const double dT,
const double*
const adX);
203 ISignalPort* m_InEngineControl;
204 ISignalPort* m_InRudderControl;
206 double comp_c(
double u,
double n);
207 double comp_ndot(
double u,
double n,
double my);
208 double compute_gT(
double u,
double n);
210 double rudder_gln(
double beta,
double c,
double delta,
double z);
211 double rudder_gy(
double beta,
double c,
double delta,
double z);
212 double rudder_gx(
double beta,
double c,
double delta);
214 double nlin_N(
double u,
double v,
double r,
double z);
215 double nlin_Y(
double u,
double v,
double r,
double z);
216 double nlin_X(
double u,
double v,
double r,
double z);
218 unsigned int m_tankerType;
219 unsigned int m_rudderType;
226#ifdef FH_VISUALIZATION
227 std::string m_sMaterial;
228 std::string m_sMeshName;
230 Ogre::Entity* m_pRenderEntity;
231 Ogre::SceneNode* m_pRenderNode;
232 Ogre::SceneManager* m_pSceneMgr;
Definition: CEnvironment.h:10
Definition: CNorrbinTanker.h:91
ISignalPort * m_pInForce
A pointer to the input force.
Definition: CNorrbinTanker.h:221
CNorrbinTanker(std::string sSimObjectName, ISimObjectCreator *pCreator)
The constructor sets the pointer to the output object and the parser object.
ISignalPort * m_pInTorque
A pointer to the input force.
Definition: CNorrbinTanker.h:222