FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
TrawlBeam.h
1#pragma once
127#include <Eigen/Eigen>
128
129#include <fhsim/simobject/SimObject.h>
130#include <string>
131
132class TrawlBeam : public SimObject
133{
134public:
135 TrawlBeam(const std::string& simObjectName, ISimObjectCreator* const creator);
136 void InitialConditionSetup(const double T, const double* const currentIC, double* const updatedIC, ISimObjectCreator* const creator);
137 void FinalSetup(const double T, const double* const X, ISimObjectCreator* const creator);
138 virtual void OdeFcn(const double T, const double* const X, double* const XDot) const;
139 virtual void PreOdeFcn(const double T, const double* const X);
140
141 bool HasJacobians() const override;
142 void OdeJacobian(double T, const double* X, double* J, int nStates) override;
143 int GetJacobianSparsity(int nStates, int* rowPtr, int* colIdx) override;
144
145 const double* ShipForce(const double T, const double* const X);
146 const double* Error(const double T, const double* const X);
147 const double* ErrorI(const double T, const double* const X);
148 const double* ErrorD(const double T, const double* const X);
149 const double* StateDist(const double T, const double* const X);
150 const double* StateVel(const double T, const double* const X);
151 const double* PositionNED(const double T, const double* const X, int index);
152 const double* VelocityNED(const double T, const double* const X, int index);
153
154protected:
155 ISignalPort *m_inForceStbd, *m_inForcePort;
156
157 void compute(const double T, const double* const X) const;
158 ICommonComputation* m_compute;
159
161 bool IsForceSaturated(double shipForce) const;
162
163 mutable double m_position[6];
164 mutable double m_velocity[6];
165
166 int m_stateTravel;
167 int m_stateVel;
168
169 int m_stateIError;
170 int m_stateDError;
171
172 bool m_saturation;
173 double m_forceSaturation;
174
175 double m_kp, m_kd, m_ki;
176 double m_kd_T;
177
178 mutable double m_outError;
179 mutable double m_outForce;
180 double m_direction;
181 double m_speedTravel;
182 double m_beamLength;
183
184 double m_mass;
185 double m_power;
186};
Definition TrawlBeam.h:133
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)
returns object derivatives as a function of time, states and input ports