98 HydroCable(
const std::string& simObjectName, ISimObjectCreator*
const creator);
99 void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
100 void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
102 bool HasJacobians()
const override;
103 void OdeJacobian(
double T,
const double* X,
double* J,
int nStates)
override;
104 int GetJacobianSparsity(
int nStates,
int* rowPtr,
int* colIdx)
override;
106#ifdef FH_VISUALIZATION
107 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
108 void RenderUpdate(
const double T,
const double*
const X);
112 void SetOutputPortValues(
const double T,
const double*
const X)
const;
113 Eigen::Vector3d Drag(
int k,
int l,
const double T,
const double*
const X)
const;
114 Eigen::Vector3d Spring(
int k,
int l,
const double T,
const double*
const X)
const;
115 Eigen::Vector3d Damp(
int k,
int l,
const double T,
const double*
const X)
const;
117 const double* ForceA(
const double T,
const double*
const X);
118 const double* ForceB(
const double T,
const double*
const X);
119 const double* PosA(
const double T,
const double*
const X);
120 const double* PosB(
const double T,
const double*
const X);
122 ICommonComputation* m_SetOutputPortValues;
123 ISignalPort* m_PositionA;
124 ISignalPort* m_PositionB;
125 ISignalPort* m_VelocityA;
126 ISignalPort* m_VelocityB;
127 ISignalPort* m_Current;
129 std::vector<int> m_PositionIndex, m_VelocityIndex;
133 mutable double m_ForceA[3];
134 mutable double m_ForceB[3];
136 mutable double m_PosA[3];
137 mutable double m_PosB[3];
140 double m_ElementMass, m_ElementLength0;
141 double m_SpringCoef, m_DamperCoef, m_GravYancy;
143 double m_Mass, m_Length, m_Diameter, m_RhoCable, m_Modulus;
145#ifdef FH_VISUALIZATION
146 Ogre::ManualObject* m_Line;