FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Crowfoot.h
1#pragma once
2
70#include "trawl/subroutines/CrowfootMath.h"
71
72#include "sfh/filters/FIR.h"
73
74#include <fhsim/simobject/SimObject.h>
75#include <float.h>
76#include <string>
77#include <vector>
78
79class Crowfoot : public SimObject
80{
81public:
97 Crowfoot(const std::string& simObjectName, ISimObjectCreator* const creator);
98 // virtual void FinalSetup(const double T, const double* const X, ISimObjectCreator* const creator);
99 virtual ~Crowfoot();
100
101 void OdeFcn(const double T, const double* const X, double* const XDot) const override;
102 void AcceptedStep(const double T, const double* const X) override;
103
104 virtual void InitialConditionSetup(const double dT, const double* const adCurrentIC, double* const adUpdatedIC, ISimObjectCreator* const creator);
105 // virtual void FinalSetup(const double dT, const double *const adX, ISimObjectCreator *const creator);
106
107 const virtual double* PositionOut(const double t, const double* const x);
108 const virtual double* VelocityOut(const double t, const double* const x);
109 const virtual double* LineForceOut(const double t, const double* const x, int lineIndex);
110 const virtual double* LineTensionOut(const double t, const double* const x, int lineIndex);
111
112
113#ifdef FH_VISUALIZATION
122 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
123
132 void RenderUpdate(const double T, const double* const X);
133#endif
134
135
136protected:
137 int m_numLines;
138 std::vector<const double*> m_linesPos;
139 std::vector<double*> m_linesForce;
140 // std::vector<double> m_linesLength;
141 std::vector<double> m_linesTension;
142
143 ISignalPort** m_inFasteningPositions;
144 ISignalPort** m_inLengths;
145 ISignalPort* m_inExternalForce;
146 CrowfootMath* m_crowfoot;
147
148 // int m_IStatePos;
149 // int m_IStateVel;
150 // int m_IStateErrorIntegral;
151 mutable double m_velocity[3];
152 mutable double m_instantPos[3];
153 // double m_integratorGain;
154 // double m_proportionalGain;
155 // double m_dampingGain;
156 // double m_distForMaxSpeed;
157 // double m_maximumSpeed;
158 // sfh::timers::StopWatch m_derivativeTimer;
159 // double m_timeStep;
160 // double m_lastError[3];
161 // double m_tmpError[3];
162 mutable sfh::filters::FIR m_filter;
163
164#ifdef FH_VISUALIZATION
165
166#endif
167};
Definition CrowfootMath.h:39
Definition Crowfoot.h:80
Crowfoot(const std::string &simObjectName, ISimObjectCreator *const creator)
Reads parameters, registers states, input/output ports and shared resources.