FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
TrawlBeam.h
1#pragma once
9#include <Eigen/Eigen>
10
11#include <fhsim/simobject/SimObject.h>
12#include <string>
13using namespace Eigen;
14
15
16class TrawlBeam : public SimObject
17{
18public:
19 TrawlBeam(const std::string& simObjectName, ISimObjectCreator* const creator);
20 void InitialConditionSetup(const double T, const double* const currentIC, double* const updatedIC, ISimObjectCreator* const creator);
21 void FinalSetup(const double T, const double* const X, ISimObjectCreator* const creator);
22 virtual void OdeFcn(const double T, const double* const X, double* const XDot) const;
23 virtual void PreOdeFcn(const double T, const double* const X, IStateUpdater* updater);
24
25 bool HasJacobians() const override;
26 void OdeJacobian(double T, const double* X, double* J, int nStates) override;
27 int GetJacobianSparsity(int nStates, int* rowPtr, int* colIdx) override;
28
29#ifdef FH_VISUALIZATION
31 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator) { }
33 virtual void RenderUpdate(const double T, const double* const X) { }
34#endif
35
36 const double* ShipForce(const double T, const double* const X);
37 const double* Error(const double T, const double* const X);
38 const double* ErrorI(const double T, const double* const X);
39 const double* ErrorD(const double T, const double* const X);
40 const double* StateDist(const double T, const double* const X);
41 const double* StateVel(const double T, const double* const X);
42 const double* PositionNED(const double T, const double* const X, int index);
43 const double* VelocityNED(const double T, const double* const X, int index);
44
45protected:
46 ISignalPort *m_inForceStbd, *m_inForcePort;
47
48 void compute(const double T, const double* const X) const;
49 ICommonComputation* m_compute;
50
51 mutable double m_position[6];
52 mutable double m_velocity[6];
53
54 int m_stateTravel;
55 int m_stateVel;
56
57 int m_stateIError;
58 int m_stateDError;
59
60 bool m_saturation;
61 double m_forceSaturation;
62
63 double m_kp, m_kd, m_ki;
64 double m_kd_T;
65
66 mutable double m_outError;
67 mutable double m_outForce;
68 double m_direction;
69 double m_speedTravel;
70 double m_beamLength;
71
72 double m_mass;
73 double m_power;
74};
Definition TrawlBeam.h:17
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