FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Crowfoot.h
1#pragma once
2
75#include "trawl/subroutines/CrowfootMath.h"
76
77#include "sfh/filters/FIR.h"
78
79#include <fhsim/simobject/SimObject.h>
80#include <float.h>
81#include <string>
82#include <vector>
83
84class Crowfoot : public SimObject
85{
86public:
103 Crowfoot(const std::string& simObjectName, ISimObjectCreator* const creator);
104 // virtual void FinalSetup(const double T, const double* const X, ISimObjectCreator* const creator);
105 virtual ~Crowfoot();
106
107 void OdeFcn(const double T, const double* const X, double* const XDot) const override;
108 void AcceptedStep(const double T, const double* const X) override;
109
120 void UpdateVelocity(const double T);
121
122 virtual void InitialConditionSetup(const double dT, const double* const adCurrentIC, double* const adUpdatedIC, ISimObjectCreator* const creator);
123 // virtual void FinalSetup(const double dT, const double *const adX, ISimObjectCreator *const creator);
124
125 const virtual double* PositionOut(const double t, const double* const x);
126 const virtual double* VelocityOut(const double t, const double* const x);
127 const virtual double* LineForceOut(const double t, const double* const x, int lineIndex);
128 const virtual double* LineTensionOut(const double t, const double* const x, int lineIndex);
129
130
131#ifdef FH_VISUALIZATION
140 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
141
150 void RenderUpdate(const double T, const double* const X);
151#endif
152
153
154protected:
155 int m_numLines;
156 std::vector<const double*> m_linesPos;
157 std::vector<double*> m_linesForce;
158 // std::vector<double> m_linesLength;
159 std::vector<double> m_linesTension;
160
161 ISignalPort** m_inFasteningPositions;
162 ISignalPort** m_inLengths;
163 ISignalPort* m_inExternalForce;
164 CrowfootMath* m_crowfoot;
165
166 // int m_IStatePos;
167 // int m_IStateVel;
168 // int m_IStateErrorIntegral;
169 mutable double m_velocity[3];
170 mutable double m_instantPos[3];
171 double m_prevPos[3];
172 double m_prevTime;
174 // double m_integratorGain;
175 // double m_proportionalGain;
176 // double m_dampingGain;
177 // double m_distForMaxSpeed;
178 // double m_maximumSpeed;
179 // sfh::timers::StopWatch m_derivativeTimer;
180 // double m_timeStep;
181 // double m_lastError[3];
182 // double m_tmpError[3];
183 mutable sfh::filters::FIR m_filter;
184
185#ifdef FH_VISUALIZATION
186
187#endif
188};
Definition CrowfootMath.h:39
Definition Crowfoot.h:85
bool m_hasPrevPos
Whether an accepted step has been seen yet.
Definition Crowfoot.h:173
Crowfoot(const std::string &simObjectName, ISimObjectCreator *const creator)
Reads parameters, registers states, input/output ports and shared resources.
void UpdateVelocity(const double T)
Backward-differences the solved collecting point position.
double m_prevPos[3]
Solved position at the previous accepted step.
Definition Crowfoot.h:171
double m_prevTime
Time of the previous accepted step.
Definition Crowfoot.h:172