FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
TrawlVessel.h
1
10
11#pragma once
12
13#include <fhsim/simobject/SimObject.h>
14#include <stdio.h>
15#include <string>
16
17class TrawlVessel : public SimObject
18{
19public:
20 TrawlVessel(std::string simObjectName, ISimObjectCreator* creator);
22
23 virtual void OdeFcn(const double dT, const double* const adX, double* const adXDot) const;
24
31 bool HasJacobians() const override;
32 void OdeJacobian(double T, const double* X, double* J, int nStates) override;
33 int GetJacobianSparsity(int nStates, int* rowPtr, int* colIdx) override;
35
36#ifdef FH_VISUALIZATION
37 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
38 virtual void RenderUpdate(const double dT, const double* const adX);
39#endif
40
41protected:
42 double m_apSpeed;
43
45 const double* OutHeading(const double dT, const double* const adX);
46 const double* OutPos(const double dT, const double* const adX);
47 const double* OutVel(const double dT, const double* const adX);
48 const double* OutWarpPos(const double dT, const double* const adX, int warp);
49 const double* OutWarpVel(const double dT, const double* const adX, int warp);
50 void CalcOutput(const double dT, const double* const adX);
51 void CalcOutputCommon(const double dT, const double* const adX) const;
52 virtual void DoDerivedOutputUpdate(const double dT, const double* const adX) { }
53
54 double m_out_Pos[3];
55 double m_out_Vel[3];
56 double* m_out_WarpPos;
57 double* m_out_WarpVel;
58 ICommonComputation* m_commonCalc;
59
60
61 int m_IStatePos;
62 int m_IStateHeading;
63 double m_Breadth;
64 double m_Draught;
65 double m_Length;
66 double m_WarpPosPrt[3];
67 double m_WarpPosStb[3];
68 double m_pitch;
69 double** m_aadWarpPos;
70 int m_numWarps;
71 mutable double m_desiredSpeed;
72 mutable double m_desiredHeading;
73
74#ifdef FH_VISUALIZATION
75 Ogre::Entity* m_RenderMass;
76 Ogre::SceneNode* m_RenderNode;
77 Ogre::Quaternion m_InitOrientation;
78 double m_LengthScale;
79 double m_BreadthScale;
80 double m_DepthScale;
81 double m_deltaRenderPos[3];
82 std::string m_MeshName;
83#endif
84};
Class modelling a simple vessel used for the trawl optimization tool.
Definition TrawlVessel.h:18
ICommonComputation * m_commonCalc
Calculations necessary for more than one output port.
Definition TrawlVessel.h:58
const double * OutHeading(const double dT, const double *const adX)
Output ports.
double m_apSpeed
The speed of the autopilot.
Definition TrawlVessel.h:42