FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Foil.h
1#ifndef _CFOIL_H_
2#define _CFOIL_H_
3
44#include <Eigen/Eigen>
45
46#include <fhsim/simobject/ISimObjectCreator.h>
47#include <string>
48#include <vector>
49#include "./Ship/Actuators/TableLookup.h"
50#include <fhsim_environment/EnvironmentProvider.h>
51
52#ifdef FH_VISUALIZATION
53#pragma warning(push)
54#pragma warning( disable : 4251 )
55 #include <Ogre.h>
56#pragma warning(pop)
57 #include "sfh/ogre/C3DArrow.h"
58#endif
59
60namespace Ship{
61 class Foil:public SimObject
62 {
63 public:
64
65 Foil( const std::string simObjectName, ISimObjectCreator* const creator);
66
67 void FinalSetup( const double T, const double *const X, ISimObjectCreator* const creator );
68 virtual void OdeFcn(const double T, const double* const X, double* const XDot) const;
69
70 #ifdef FH_VISUALIZATION
71 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
72 virtual void RenderUpdate( const double T, const double* const X );
73 #endif
74
75 public:
76
78 const double* ForceNED(const double T, const double* const X);
80 const double* ForceBody(const double T, const double* const X);
82 const double* TorqueBody(const double T, const double* const X);
84 const double* AlfaBody(const double T, const double* const X);
86 const double* ClBody(const double T, const double* const X);
88 const double* CdBody(const double T, const double* const X);
90 const double* CpBody(const double T, const double* const X);
92 const double* InWater(const double T, const double* const X);
94 const double* FluidVelocity(const double T, const double* const X);
95
96 void Compute(const double T, const double* const X) const;
97
98 private:
99
101 double m_Chord;
103 double m_Bredth;
105 std::vector<double> m_Alfa;
107 std::vector<double> m_Cd;
109 std::vector<double> m_Cl;
111 std::vector<double> m_Cp;
112
113 double m_AccelerateFlow;
114
116 ISignalPort* m_IPositionNED;
118 ISignalPort* m_IVelocityNED;
120 ISignalPort* m_IQuaternionNED;
121
122 mutable double m_FluidVelcoity[3];
123 mutable double m_ForceNED[3];
124 mutable double m_ForceBody[3];
125 mutable double m_ToruqeBody[3];
126 mutable double m_CurrentAlfa;
127 mutable double m_CurrentCl;
128 mutable double m_CurrentCd;
129 mutable double m_CurrentCp;
130 mutable double m_InWater;
131
132 ICommonComputation *m_Compute;
133
135 mutable WarnOnce m_tableWarning;
136 environment::EnvironmentProvider* m_environment = nullptr;
137
138
139 mutable Eigen::Vector3d dir_drag_ned;
140 mutable Eigen::Vector3d dir_lift_ned;
141 mutable Eigen::Vector3d dir_force_ned;
142
143 #ifdef FH_VISUALIZATION
144 Ogre::SceneNode* m_RenderNode;
145 C3DArrow *Arrow_inc;
146 C3DArrow *Arrow_norm;
147 C3DArrow *Arrow_force;
148 #endif
149
150 };
151}
152
153#endif
Definition Foil.h:62
const double * ClBody(const double T, const double *const X)
const double * CpBody(const double T, const double *const X)
const double * CdBody(const double T, const double *const X)
const double * InWater(const double T, const double *const X)
const double * AlfaBody(const double T, const double *const X)
const double * ForceBody(const double T, const double *const X)
const double * FluidVelocity(const double T, const double *const X)
const double * TorqueBody(const double T, const double *const X)
const double * ForceNED(const double T, const double *const X)
Definition TableLookup.h:18
Simple waypoint object.
Definition CableAttach.h:58