FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
CablePendulum Class Reference
+ Inheritance diagram for CablePendulum:
+ Collaboration diagram for CablePendulum:

Public Member Functions

 CablePendulum (const std::string &simObjectName, ISimObjectCreator *const creator)
 
void OdeFcn (const double T, const double *const X, double *const XDot) const
 
void InitialConditionSetup (const double T, const double *const currentIC, double *const updatedIC, ISimObjectCreator *const creator)
 
void FinalSetup (const double T, const double *const X, ISimObjectCreator *const creator)
 
bool HasJacobians () const override
 
void OdeJacobian (double T, const double *X, double *J, int nStates) override
 
int GetJacobianSparsity (int nStates, int *rowPtr, int *colIdx) override
 

Protected Member Functions

void SetOutputPortValues (const double T, const double *const X) const
 
const double * MidpointPosition (const double T, const double *const X)
 
const double * BallPosition (const double T, const double *const X)
 
const double * BallVelocity (const double T, const double *const X)
 
void segmentJacobian (const double *pk, const double *pl, const double *vk, const double *vl, double dF_dpk[9], double dF_dpl[9], double dF_dvk[9], double dF_dvl[9]) const
 
Eigen::Vector3d Drag (int k, int l, const double T, const double *const X) const
 
Eigen::Vector3d Spring (int k, int l, const double T, const double *const X) const
 
Eigen::Vector3d Damp (int k, int l, const double T, const double *const X) const
 
const double * SuspensionForce (const double T, const double *const X)
 
const double * CableOnBallForce (const double T, const double *const X)
 

Protected Attributes

ICommonComputation * m_SetOutputPortValues
 
ISignalPort * m_SuspensionPos
 
ISignalPort * m_SuspensionVel
 
environment::EnvironmentProvider * Environment
 
std::vector< int > m_PositionIndex
 
std::vector< int > m_VelocityIndex
 
int m_BallPositionIndex
 
int m_BallVelocityIndex
 
int m_NumPoints
 
double m_MidpointPosition [3]
 
double m_BallPosition [3]
 
double m_BallVelocity [3]
 
double m_SuspensionForce [3]
 
double m_CableOnBallForce [3]
 
double m_BallMass
 
double m_BallRadius
 
double m_BallDragCoef
 
double m_RhoWater
 
double m_BallRho
 
double m_ElementMass
 
double m_ElementLength0
 
double m_SpringCoef
 
double m_DamperCoef
 
double m_GravYancy
 
double m_CrossDragCoef
 
double m_AlongDragCoef
 
double m_Mass
 
double m_Length
 
double m_Diameter
 
double m_RhoCable
 
double m_Modulus
 

Member Function Documentation

◆ segmentJacobian()

void CablePendulum::segmentJacobian ( const double *  pk,
const double *  pl,
const double *  vk,
const double *  vl,
double  dF_dpk[9],
double  dF_dpl[9],
double  dF_dvk[9],
double  dF_dvl[9] 
) const
protected

Computes structural Jacobian blocks for one cable segment. Convention: pk = "this node" (A side), pl = "other end" (B side). Outputs are 3x3 row-major matrices for dForce_on_k / d{pk,pl,vk,vl}. Covers Spring(k,l) + Damp(k,l) terms; ignores hydrodynamic Drag.


The documentation for this class was generated from the following file: