FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
CableBranchedAttractor.h
1#pragma once
34#include "AttractorBase.h"
35#include "InternalCableWithAttractor.h"
36
37#include <cable/CableBranched.h>
38#include <fhsim/InputReader.h>
39
40
41// #define OUTPUT_NODE_POS
42
43// Class definition
45{
46public:
47 CableBranchedAttractor(std::string simObjectName, ISimObjectCreator* creator);
48
51 virtual void aFunction(std::string simObjectName, ISimObjectCreator* creator);
52 virtual void OdeFcn(const double dT, const double* const adX, double* const adXDot) const;
53 virtual void FinalSetup(const double dT, const double* const adX, ISimObjectCreator* const creator);
54
58 bool HasJacobians() const override { return false; }
59 // virtual void OutputFcn(const double dT, const double* const adX, const double* const * const aadInputports, double* const * const aadY); ///< Calculates the end forces.
60 // void GetSimRes();
61
62#ifdef FH_VISUALIZATION
64 // void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
65
67 // void RenderUpdate(const double dT, const double* const adX);
68#endif
69
70protected:
71 // virtual void InitializeCableSections(double* const adX, double* const * const aadInputports);
72 virtual void CreateStates(ISimObjectCreator* creator);
73 // void OutputExternalConnForces(const double* const adVelWater, const double* const adX, const double* const * const aadInputports, double* const * const aadY);
74 // void OutputElementTensions(const double* const adVelWater, const double* const adX, const double* const * const aadInputports, double* const * const aadY);
75 void AllocateCableSections();
77 void AddAttractorForces(const double dT, const double* const adX) const;
78
80 void PrepareSections(double dT, const double* adX) const override;
81
82 std::vector<AttractorBase*> m_VAttractors;
83 // unsigned long m_IInAttractorPos; ///< The index of the input port with position of the attractor (such as a net bin).
84 // unsigned long m_IInAttractorVel; ///< The index of the input port with velocity of the attractor (such as a net bin).
85 std::string m_attractorName;
86 // InternalCableWithAttractor** m_cableSections; ///< An array holding the cable sections.
87
88
89#ifdef OUTPUT_NODE_POS
90 int m_numNodesToOutput;
91 int* m_nodesToOutput;
92 unsigned long* m_iOutNodePos;
93 unsigned long* m_iOutNodeVel;
94
95 int m_numElementTensionToOutput;
96 int* m_elementTensionToOutput;
97 unsigned long* m_iOutElementTension;
98
99 // double* aadElementTensions
100#endif
101};
Definition CableBranchedAttractor.h:45
void AddAttractorForces(const double dT, const double *const adX) const
Adds the attractor forces at (dT, adX) to the net nodes.
~CableBranchedAttractor()
The destructor deletes dynamically allocated memory.
bool HasJacobians() const override
Definition CableBranchedAttractor.h:58
std::string m_attractorName
The name of the attractor.
Definition CableBranchedAttractor.h:85
void PrepareSections(double dT, const double *adX) const override
Gives every section the motion of its attractor at (dT, adX).
Definition CableBranched.h:238