FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
TrawlBeam.h
1#pragma once
128#include <Eigen/Eigen>
129
130#include <fhsim/simobject/SimObject.h>
131#include <string>
132using namespace Eigen;
133
134
135class TrawlBeam : public SimObject
136{
137public:
138 TrawlBeam(const std::string& simObjectName, ISimObjectCreator* const creator);
139 void InitialConditionSetup(const double T, const double* const currentIC, double* const updatedIC, ISimObjectCreator* const creator);
140 void FinalSetup(const double T, const double* const X, ISimObjectCreator* const creator);
141 virtual void OdeFcn(const double T, const double* const X, double* const XDot) const;
142 virtual void PreOdeFcn(const double T, const double* const X, IStateUpdater* updater);
143
144 bool HasJacobians() const override;
145 void OdeJacobian(double T, const double* X, double* J, int nStates) override;
146 int GetJacobianSparsity(int nStates, int* rowPtr, int* colIdx) override;
147
148#ifdef FH_VISUALIZATION
150 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator) { }
152 virtual void RenderUpdate(const double T, const double* const X) { }
153#endif
154
155 const double* ShipForce(const double T, const double* const X);
156 const double* Error(const double T, const double* const X);
157 const double* ErrorI(const double T, const double* const X);
158 const double* ErrorD(const double T, const double* const X);
159 const double* StateDist(const double T, const double* const X);
160 const double* StateVel(const double T, const double* const X);
161 const double* PositionNED(const double T, const double* const X, int index);
162 const double* VelocityNED(const double T, const double* const X, int index);
163
164protected:
165 ISignalPort *m_inForceStbd, *m_inForcePort;
166
167 void compute(const double T, const double* const X) const;
168 ICommonComputation* m_compute;
169
171 bool IsForceSaturated(double shipForce) const;
172
173 mutable double m_position[6];
174 mutable double m_velocity[6];
175
176 int m_stateTravel;
177 int m_stateVel;
178
179 int m_stateIError;
180 int m_stateDError;
181
182 bool m_saturation;
183 double m_forceSaturation;
184
185 double m_kp, m_kd, m_ki;
186 double m_kd_T;
187
188 mutable double m_outError;
189 mutable double m_outForce;
190 double m_direction;
191 double m_speedTravel;
192 double m_beamLength;
193
194 double m_mass;
195 double m_power;
196};
Definition TrawlBeam.h:136
bool IsForceSaturated(double shipForce) const
True when SaturationForce is set and the ship force has reached it.
void InitialConditionSetup(const double T, const double *const currentIC, double *const updatedIC, ISimObjectCreator *const creator)
reads parameters, registers states, input/output ports and shared resources
virtual void PreOdeFcn(const double T, const double *const X, IStateUpdater *updater)
returns object derivatives as a function of time, states and input ports