81#include "AttractorNetBin.h"
83#include "sfh/filters/IIR.h"
84#include "sfh/timers/StopWatch.h"
86#include <fhsim/simobject/SimObject.h>
92#ifdef FH_VISUALIZATION
93# include <fhsim/visual/renderer/Hud.h>
107 void CalcOutput2(
const double dT,
const double*
const adX);
108 void CalcOutputCommon(
const double dT,
const double*
const adX)
const;
109 void CalcOutput2Common(
const double dT,
const double*
const adX)
const;
112 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot)
const { }
113 virtual void FinalSetup(
const double dT,
const double*
const adX, ISimObjectCreator*
const creator);
117 void AcceptedStep(
const double dT,
const double*
const adX)
override;
119#ifdef FH_VISUALIZATION
121 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
124 virtual void RenderUpdate(
const double dT,
const double*
const adX);
126 const virtual double* WarpConnected(
const double dT,
const double*
const adX);
127 const virtual double* BuoyPos(
const double dT,
const double*
const adX);
128 const virtual double* VesselHeading(
const double dT,
const double*
const adX);
129 const virtual double* VesselSpeed(
const double dT,
const double*
const adX);
130 const virtual double* PWarpLength(
const double dT,
const double*
const adX);
131 const virtual double* SWarpLength(
const double dT,
const double*
const adX);
157 EPhase_t PhaseAt(
const double dT)
const;
159 ISignalPort* m_inVesselPos;
160 ISignalPort* m_inPBridleTension;
161 ISignalPort* m_inSBridleTension;
162 ISignalPort* m_inNetSWingPos;
163 ISignalPort* m_inNetPWingPos;
164 ISignalPort* m_inNetVel;
165 ISignalPort* m_inPBridlePos;
166 ISignalPort* m_inSBridlePos;
169 ICommonComputation* m_commonCalc2;
171 double m_vesselHeading[7];
172 double m_vesselSpeed[7];
173 double m_phaseStartTime[7];
174 double m_payOutSpeedFactor;
179 double m_warpLengthCorrectionSpeed;
180 double m_initialSpeed;
184 double m_finishedSpeed;
185 double m_winchHaulSpeed;
186 double m_initialHeading;
188 double m_spreadAngle;
189 double m_setWarpLength;
191 double m_outPWarpLength;
192 double m_outSWarpLength;
195 double m_addedTrackLength;
197 double m_minWarpLength;
198 std::string m_attractorNameNet;
199 std::string m_attractorNameWarp;
200 std::string m_phase[7];
201 std::string m_speed[7];
202 std::string m_heading[7];
208 double m_netTangentialSpeed;
209 double m_netNormalSpeed;
210 double m_fileWritePeriod;
211 double m_bridleTension[2];
212 double m_bridleSpread;
214 sfh::timers::StopWatch m_StopWatchFileWrite;
215 std::ofstream m_Outfile;
216 std::string m_fileName;
217 sfh::filters::IIR m_BridleTensionFilter;
219#ifdef FH_VISUALIZATION
220 Ogre::Entity* m_RenderMass;
221 Ogre::SceneNode* m_RenderNode;
222 sfh::timers::StopWatch m_StopWatchRenderUpdate;
224 fhsim::HudLine m_hudTime;
225 fhsim::HudLine m_hudPhase;
226 fhsim::HudLine m_hudSpeed;
227 fhsim::HudLine m_hudHeading;
228 fhsim::HudLine m_hudWingSpread;
229 fhsim::HudLine m_hudBridleSpread;
230 fhsim::HudLine m_hudSbBridleTension;
231 fhsim::HudLine m_hudPrtBridleTension;
232 fhsim::HudLine m_hudNetNormalSpeed;
233 fhsim::HudLine m_hudNetTangentialSpeed;
The net bin of Seine/Vessel: a sphere that pulls the net and warp nodes inside it.
Definition AttractorNetBin.h:16
Definition SeineOperation.h:97
bool m_showStatus
ShowStatus: the status lines are shown on the HUD.
Definition SeineOperation.h:218
virtual void OdeFcn(const double dT, const double *const adX, double *const adXDot) const
Calculates the state derivatives.
Definition SeineOperation.h:112
EPhase_t
Enumerator to define which operational phase the vessel is in.
Definition SeineOperation.h:139
~SeineOperation()
The destructor cleans up.
void CheckSchedule(ISimObjectCreator *const creator) const
Refuses a schedule that cannot run: a speed that is zero or not a number, MinWarpLength above WarpLen...
static double NetAttractorStrengthAt(const double dT)
The relative strength of the net attractor at time dT.
double m_buoyPos[3]
Definition SeineOperation.h:178
ICommonComputation * m_commonCalc
Calculations necessary for more than one output port.
Definition SeineOperation.h:168
void ReadWarpAttractorName(ISimObjectCreator *const creator)
Reads the warp attractor name from AttractorNameWarp, or from its old name AttractorNameWarps.
void CalcOutput(const double dT, const double *const adX)
Performs calculations common to several output ports.
void PreOdeFcn(double T, const double *X) override
Latches the buoy at the vessel position of a step that starts in Phase_NotSet.
SeineOperation(std::string simObjectName, ISimObjectCreator *creator)
The constructor sets the pointer to the output object and the parser object.