102 HydroCable(
const std::string& simObjectName, ISimObjectCreator*
const creator);
103 void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
104 void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
106 bool HasJacobians()
const override;
107 void OdeJacobian(
double T,
const double* X,
double* J,
int nStates)
override;
108 int GetJacobianSparsity(
int nStates,
int* rowPtr,
int* colIdx)
override;
110#ifdef FH_VISUALIZATION
111 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
112 void RenderUpdate(
const double T,
const double*
const X);
116 void SetOutputPortValues(
const double T,
const double*
const X)
const;
118 Eigen::Vector3d
NodePosition(
int k,
const double T,
const double*
const X)
const;
120 Eigen::Vector3d
NodeVelocity(
int k,
const double T,
const double*
const X)
const;
121 Eigen::Vector3d Drag(
int k,
int l,
const double T,
const double*
const X)
const;
122 Eigen::Vector3d Spring(
int k,
int l,
const double T,
const double*
const X)
const;
123 Eigen::Vector3d Damp(
int k,
int l,
const double T,
const double*
const X)
const;
127 const double* ForceA(
const double T,
const double*
const X);
128 const double* ForceB(
const double T,
const double*
const X);
129 const double* PosA(
const double T,
const double*
const X);
130 const double* PosB(
const double T,
const double*
const X);
132 ICommonComputation* m_SetOutputPortValues;
133 ISignalPort* m_PositionA;
134 ISignalPort* m_PositionB;
135 ISignalPort* m_VelocityA;
136 ISignalPort* m_VelocityB;
137 ISignalPort* m_Current;
139 std::vector<int> m_PositionIndex, m_VelocityIndex;
143 mutable double m_ForceA[3];
144 mutable double m_ForceB[3];
146 mutable double m_PosA[3];
147 mutable double m_PosB[3];
150 double m_ElementMass, m_ElementLength0;
151 double m_SpringCoef, m_DamperCoef, m_GravYancy;
153 double m_Mass, m_Length, m_Diameter, m_RhoCable, m_Modulus;
155#ifdef FH_VISUALIZATION
156 Ogre::ManualObject* m_Line;
CableSegmentStructuralForces StructuralForce(int k, int l, const double T, const double *const X) const
Spring and Damp of the segment k-l with one evaluation of the law.
Eigen::Vector3d NodeVelocity(int k, const double T, const double *const X) const
Velocity of node k, numbered as NodePosition.
Eigen::Vector3d NodePosition(int k, const double T, const double *const X) const
Position of node k: 0 is end A, 1..n are the cable's states, n+1 is end B.