|
| | CableRM (const std::string &simObjectName, ISimObjectCreator *const creator) |
| | Reads parameters, registers states, input/output ports and shared resources.
|
| |
| void | OdeFcn (const double T, const double *const X, double *const XDot) const |
| | Computes object derivatives as a function of time, states and input ports.
|
| |
|
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) |
| |
|
void | PreOdeFcn (const double T, const double *const X) override |
| | Takes the other objects' wakes at the centres of all elements for the step (MARE-0223).
|
| |
| const double * | forceA (const double T, const double *const X) |
| | Output port. Returns current force in endpoint A of cable.
|
| |
| const double * | forceB (const double T, const double *const X) |
| | Output port. Returns current force in endpoint B of cable.
|
| |
| void | calculations (const double T, const double *const X) |
| | Performs a series of computations within the cable object.
|
| |
| void | BuildChain (wet_cylinder_water::ChainJoints &chain, const double *X, int firstElement, int numElements) const |
| | Builds chain from elements firstElement ... firstElement + numElements - 1 at the state X.
|
| |
|
void | QueryJointWater (const double T, const double *const X) |
| |
|
void | calculationsCommon (const double T, const double *const X) const |
| |
|
| void | DistributeCatenary (Eigen::Matrix< double, 3, 1 > P1, Eigen::Matrix< double, 3, 1 > P2, double L, double lengthA, double lengthB, const double *currentIC, double *states, int i1, int i2) |
| |
| void | DistributeOnArcMidpoints (const vec3 &P1, const Eigen::Matrix< double, 2, 1 > &CatenaryU, double HorizontalDistance, double VerticalDifference, double L, const double *currentIC, double *states, int i1, int i2) |
| |
| void | SetElementUnlessUserSet (int i, const vec3 ¢re, double angle, const Eigen::Matrix< double, 2, 1 > &CatenaryU, const double *currentIC, double *states) |
| |
| void | ReportError (const std::string &message) const |
| |
| Retraction | ClampRetraction (double lengthA, double lengthB, double speedA, double speedB) const |
| |
|
|
PrintDuringExec * | m_print |
| | Null if the creator has no printer (fhsim::kSimMgrKeyPrinter), as in a unit test.
|
| |
|
environment::SeafloorForcesInterface * | m_seafloor = nullptr |
| | The shared SeafloorForces, from FinalSetup: the soil load of each element, a rigid cylinder.
|
| |
|
environment::wake::ElementFlowInteraction | m_flow |
| | The flow at the element centres, the other objects' wakes taken per step (MARE-0223); the Environment, from FinalSetup.
|
| |
|
int | m_numElements |
| |
|
double | m_totalLength |
| |
|
double | m_radius |
| |
|
double | m_weight |
| |
|
double | m_alphaN |
| |
|
double | m_betaN |
| |
|
double | m_epsilonN |
| |
|
JointLaw | m_joint |
| | The bending and twist moments of the joints between the elements (MARE-0395).
|
| |
|
double | m_length |
| |
|
double | m_mass |
| |
|
double | m_Ixy |
| |
|
double | m_Iz |
| |
|
bool | m_kelp |
| |
|
double | m_wKelp |
| |
|
bool | m_gaussPointDrag = true |
| | Gauss-point drag with the water at the joints (MARE-0396).
|
| |
|
wet_cylinder_water::ChainJoints | m_chainJoints |
| | The joints of the free elements and the water at them; buffers kept from call to call.
|
| |
|
wet_cylinder_water::ChainJoints | m_takeJoints |
| | The joints of all elements, where the wakes are taken (PreOdeFcn); buffers kept from call to call.
|
| |
|
element * | m_el |
| |
|
ISignalPort * | m_posA |
| |
|
ISignalPort * | m_posB |
| |
|
ISignalPort * | m_velA |
| |
|
ISignalPort * | m_velB |
| |
|
ISignalPort * | m_retractedLengthA |
| |
|
ISignalPort * | m_retractedLengthB |
| |
|
ISignalPort * | m_retractedSpeedA |
| |
|
ISignalPort * | m_retractedSpeedB |
| |
|
int | m_retractedNodesA |
| |
|
int | m_retractedNodesB |
| |
|
int | m_numFreeNodes |
| |
|
vec3 | m_ka |
| |
|
vec3 | m_kb |
| |
|
ICommonComputation * | m_calcDynamics |
| |
|
Eigen::Matrix< double, Eigen::Dynamic, 1 > | m_lambda |
| |
|
Eigen::Matrix< double, Eigen::Dynamic, 1 > | m_F_MDotV |
| |
|
Eigen::Matrix< double, Eigen::Dynamic, 1 > | m_B |
| |
|
double | m_forceA [3] |
| |
|
double | m_forceB [3] |
| |
- Author
- Jørgen Haavind Jensen
Simobject name for use in input file: Cable.
Retains the same structural properties as the simObject CFlexibleBottomRing, but has a simpler interface where Young's and shear moduluses are provided rather than using the \(\alpha\), \(\beta\) and \(\epsilon\) values used in CFlexibleBottomRing.
- Parameters
| Parameter | Default | Comment |
| cableLength | - | total length of the cable [m] |
| numElements | - | number of rigid elements in the cable [#] |
| diameter | - | diameter of the cable. [m] |
| cableWeight | - | weight of the cable [kg/m] |
| E-modulus | - | Young's modulus for cable material [Pa] (used as given in the compliance formulas of the class description) |
| G-modulus | \(\frac{E-modulus}{2.6}\) | shear modulus for cable material [Pa] |
| EI | \(E\,7\pi D^4/5184\) | bending stiffness of the cable [N m^2] |
| damping | 1 | structural damping of the axial constraints in the cable [-] |
| axialBaumgarteRate | - | Baumgarte rate of the axial constraints [1/s]; 100 to 1/dt, dt the solver's explicit step (class description) |
| ExternalWakeUpdate | Step | How the other objects' wakes reach the element centres; listed in fhsim_environment's doc/user/wake-parameters.md
|
- Input ports
| Tag | Size | Comment |
| PositionA | 3 | position of end-connection point A |
| PositionB | 3 | position of end-connection point B |
| VelocityA | 3 | velocity of end-connection point A |
| VelocityB | 3 | velocity of end-connection point B |
| RetractedLengthA | 1 | length of cable retracted on side A |
| RetractedLengthB | 1 | length of cable retracted on side B |
| RetractedSpeedA | 1 | retraction rate of cable retracted on side A |
| RetractedSpeedB | 1 | retraction rate of cable retracted on side B |
- Output ports
| Tag | Size | Comment |
| ForceA | 3 | Reaction force on side A |
| ForceB | 3 | Reaction force on side B |
- States
| Tag | Size | Comment |
| pos<i> | 3 | Position (x,y,z) of element with index <i> |
| vel<i> | 3 | Velocity of element with index <i> |
| theta<i> | 4 | Quaternion of element with index <i> |
| omega<i> | 3 | Angular derivatives of element (?) <i>
|
- Note
- Each element carries the added mass Ca rho V f normal to its axis in its translational inertia (Ca = 1, DNV-RP-C205 (2021) Table A-1; V its volume, f its wet fraction; MARE-0314, owner ruling 2026-10-13, as fhsim_base Cable and TrawlCable), so its translational inertia is m I + Ca rho V f (I - N N^T), N its axis; nothing is added along the axis, to its moment of inertia, and the change of f in time is not included. Each element's load is that of water for its wet fraction f against the wave surface (a cylinder between its ends, gated by MaxWaveElevation) and that of air for 1 - f, and in waves it takes the Morison inertia force (1 + Ca) rho f V a_n normal to its axis (owner ruling R104,
CableRMWaterLoad.h); the turning added mass gives a Coriolis force on the velocity relative to the water (MARE-0323). It was all water or all air by its centre's side of the surface. The other objects' wakes are taken once per integrator step, in PreOdeFcn, at the centres of all elements and held for the step; the current and the waves stay live (MARE-0223).
The seabed: each element is a rigid cylinder (D = 2 r, the element length, its axis) at rest in the soil's frame, and the soil load of the environment's shared SeafloorForces (force and moment) is added to its load, below the seabed too: the water load always applies (MARE-0392). The soil parameters are the environment's; the cable has none.
- Revision history:
- Q3 2011 JHJ: Initial version.
| Retraction RbCable::CableRM::ClampRetraction |
( |
double |
lengthA, |
|
|
double |
lengthB, |
|
|
double |
speedA, |
|
|
double |
speedB |
|
) |
| const |
|
protected |
The retracted lengths and speeds of the two ports under the limits of the model, one place for set-up, OdeFcn, calculations and the rendering (owner ruling D20, MARE-0413).
A negative length is 0 (with speed 0). Each end keeps two elements free, and the two ends together too: when the ends would retract more, the end that retracted more gives whole elements back until two are free. A cable of fewer than two elements does not retract.
- Parameters
-
| lengthA | Retracted length at end A [m]. |
| lengthB | Retracted length at end B [m]. |
| speedA | Retraction speed at end A [m/s]. |
| speedB | Retraction speed at end B [m/s]. |
- Returns
- The limited lengths and speeds and the whole elements retracted at each end.