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>
131using namespace Eigen;
132
133class TrawlBeam : public SimObject
134{
135public:
136 TrawlBeam(const std::string& simObjectName, ISimObjectCreator* const creator);
137 void InitialConditionSetup(const double T, const double* const currentIC, double* const updatedIC, ISimObjectCreator* const creator);
138 void FinalSetup(const double T, const double* const X, ISimObjectCreator* const creator);
139 virtual void OdeFcn(const double T, const double* const X, double* const XDot) const;
140 virtual void PreOdeFcn(const double T, const double* const X);
141
142 bool HasJacobians() const override;
143 void OdeJacobian(double T, const double* X, double* J, int nStates) override;
144 int GetJacobianSparsity(int nStates, int* rowPtr, int* colIdx) override;
145
146 const double* ShipForce(const double T, const double* const X);
147 const double* Error(const double T, const double* const X);
148 const double* ErrorI(const double T, const double* const X);
149 const double* ErrorD(const double T, const double* const X);
150 const double* StateDist(const double T, const double* const X);
151 const double* StateVel(const double T, const double* const X);
152 const double* PositionNED(const double T, const double* const X, int index);
153 const double* VelocityNED(const double T, const double* const X, int index);
154
155protected:
156 ISignalPort *m_inForceStbd, *m_inForcePort;
157
158 void compute(const double T, const double* const X) const;
159 ICommonComputation* m_compute;
160
162 bool IsForceSaturated(double shipForce) const;
163
164 mutable double m_position[6];
165 mutable double m_velocity[6];
166
167 int m_stateTravel;
168 int m_stateVel;
169
170 int m_stateIError;
171 int m_stateDError;
172
173 bool m_saturation;
174 double m_forceSaturation;
175
176 double m_kp, m_kd, m_ki;
177 double m_kd_T;
178
179 mutable double m_outError;
180 mutable double m_outForce;
181 double m_direction;
182 double m_speedTravel;
183 double m_beamLength;
184
185 double m_mass;
186 double m_power;
187};
Definition TrawlBeam.h:134
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