|
| CCable (const string &simObjectName, ISimObjectCreator *const creator) |
| Reads parameters, registers states, input/output ports and shared resources. More...
|
|
void | OdeFcn (const double T, const double *const X, double *const XDot, const bool bIsMajorTimeStep) |
| free allocated memory More...
|
|
void | InitialConditionSetup (const double T, const double *const currentIC, double *const updatedIC, ISimObjectCreator *const creator) |
| Sets initial conditions based on the value of input ports. More...
|
|
void | FinalSetup (const double T, const double *const X, ISimObjectCreator *const creator) |
|
const double * | ForceA (const double T, const double *const X) |
| retrieves pointer to environment object
|
|
const double * | ForceB (const double T, const double *const X) |
| output port. See PortDefs.h. Returns force at point A
|
|
void | computeEndForces (const double T, const double *const X) |
| output port. See PortDefs.h. Returns force at point B
|
|
| CCable (std::string sSimObjectName, ISimObjectCreator *pCreator) |
| The constructor sets the pointer to the output object and the parser object.
|
|
| ~CCable () |
| The destructor deletes dynamically allocated memory.
|
|
void | OdeFcn (const double dT, const double *const adX, double *const adXDot, const bool bIsMajorTimeStep) |
|
void | InitialConditionSetup (const double dT, const double *const adCurrentIC, double *const adUpdatedIC, ISimObjectCreator *const pCreator) |
| functionality for setting initialconditions based on input port results.
|
|
void | FinalSetup (const double dT, const double *const adX, ISimObjectCreator *const pCreator) |
|
void | CalcOutput (const double dT, const double *const adX) |
|
const double * | OutForceA (const double dT, const double *const adX) |
|
const double * | OutForceB (const double dT, const double *const adX) |
|
const double * | OutPosA (const double dT, const double *const adX) |
|
const double * | OutPosB (const double dT, const double *const adX) |
|
|
void | computeSegmentForces (const double T, const double *X, const double *pA, const double *pB, const double *vA, const double *vB, double *FA, double *FB) |
| computes free nodes and both end forces More...
|
|
void | computeVirtualPoint (const double *const target, const double *const point, const double *const targetVel, const double *const pointVel, double *virtualPoint, double *virtualPointVel, double residual, double dResidual) |
| Computes position and velocity of the virtual point. More...
|
|
void | testPositiveParam (double value, ISimObjectCreator *creator, string valueName) |
|
void | computeElementTension (const double *prev, const double *curr, double *force) |
| test if a parameter is positive, and reports error if not.
|
|
void | UpdateLength (double dNewLength, double dDeltaT) |
|
void | UpdateStiffness (const double *const adForceA, const double *const adForceB) |
| Updates the stiffness of the cable to ensure that this is not too large.
|
|
void | UpdateInertia () |
| Updates the inertia of the cable according to the changing length.
|
|
|
double | m_cableLength |
| compute structural tension for a single element
|
|
double | m_cableWeight |
| total cable length [m]
|
|
double | m_Emodulus |
| cable weight [kg/m]
|
|
double | m_tensileCrossSectionArea |
| Young's modulus of load bearing material [Pa].
|
|
double | m_displacementCrossSectionArea |
| cross section area of load bearing material [m^2]
|
|
double | m_diameter |
| displaced fluid volume per meter cable [m^2]
|
|
double | m_hydrodynamicDiameter |
| cable diameter [m]
|
|
double | m_submergedWeight |
| effective hydrodynamic diameter [m]
|
|
double | m_internalDamping |
| weight of cable underwater [kg/m]
|
|
int | m_numElements |
| structural axial damping. [N*s/m]
|
|
double | m_elementMass |
| number of elements in the cable [#]
|
|
double | m_elementMassInverse |
| mass of each element [kg]
|
|
double | m_segmentMass |
| inverse mass of each element [kg^-1]
|
|
double | m_segmentSubmergedMass |
| mass of each segment [kg]
|
|
double | m_segmentLength |
| submerged weight of each element [kg]
|
|
double | m_segmentStiffness |
| length of spring between elements [m]
|
|
int * | m_elementPositionIndex |
| spring stiffness [N/m]
|
|
int * | m_elementVelocityIndex |
| The relative index of the position state in the state array for each element [#].
|
|
ISignalPort * | m_PositionA |
| The relative index of the velocity state in the state array for each element [#].
|
|
ISignalPort * | m_PositionB |
| input port. Position of point A [m]
|
|
ISignalPort * | m_VelocityA |
| input port. Position of point B [m]
|
|
ISignalPort * | m_VelocityB |
| input port. Velocity of point A [m/s]
|
|
ISignalPort * | m_retractedLengthPortA |
| input port. Velocity of point B [m/s]
|
|
ISignalPort * | m_retractedLengthPortB |
| amount of retracted cable at endpoint A [m]
|
|
ISignalPort * | m_retractedSpeedPortA |
| amount of retracted cable at endpoint B [m]
|
|
ISignalPort * | m_retractedSpeedPortB |
| retraction rate at endpoint A [m/s]
|
|
double | m_endForceA [3] |
| retraction rate at endpoint B [m/s]
|
|
double | m_endForceB [3] |
| reactive force at endpoint A [N]
|
|
double | m_nodeForceA [3] |
| reactive force at endpoint A [N]
|
|
double | m_nodeForceB [3] |
| force on first free node at endpoint A [N]
|
|
double | m_retractedLengthA |
| force on first free node at endpoint A [N]
|
|
double | m_retractedLengthB |
| amount of retracted cable at endpoint A [m]
|
|
int | m_retractedNodesA |
| amount of retracted cable at endpoint B [m]
|
|
int | m_retractedNodesB |
| number of nodes currently on winch A
|
|
double | m_virtualPointA [3] |
| number of nodes currently on winch B
|
|
double | m_virtualPointB [3] |
| when cable is winched, the closest free node is attracted towards a ghost point "beyond" the actual endpoint [m]
|
|
double | m_virtualPointVelocityA [3] |
| when cable is winched, the closest free node is attracted towards a ghost point "beyond" the actual endpoint [m]
|
|
double | m_virtualPointVelocityB [3] |
| when cable is winched, the closest free node is attracted towards a ghost point "beyond" the actual endpoint [m/s]
|
|
double | m_residualA |
| when cable is winched, the closest free node is attracted towards a ghost point "beyond" the actual endpoint [m/s]
|
|
double | m_residualB |
| free length of closest free node [m]
|
|
ICommonComputation * | m_computeEndForces |
| free length of closest free node [m]
|
|
const double * | m_posA |
| computation node for endpoint reaction forces
|
|
const double * | m_posB |
| Position of point A [m].
|
|
const double * | m_velA |
| Position of point B [m].
|
|
const double * | m_velB |
| Velocity of point A [m].
|
|
CEnvironment * | m_environment |
| Velocity of point B [m].
|
|
ISignalPort * | m_pInLength |
| The cable length input port.
|
|
ISignalPort * | m_pInVelA |
| The velocity A input port.
|
|
ISignalPort * | m_pInVelB |
| The velocity B input port.
|
|
ISignalPort * | m_pInPosA |
| The position A input port.
|
|
ISignalPort * | m_pInPosB |
| The position B input port.
|
|
int | m_IStates |
| The index to the internal states of the cable.
|
|
ICommonComputation * | m_pCommonCalc |
| Calculations necessary for more than one output port.
|
|
int | m_iNumElements |
| The number of elements to divide the cable into.
|
|
int | m_iNumNodes |
| The number of nodes of the cable.
|
|
double | m_dInertiaA |
| The inertia of the end A.
|
|
double | m_dInertiaB |
| The inertia of the end B.
|
|
double | m_adForceA [3] |
| The force on the end A.
|
|
double | m_adForceB [3] |
| The force on the end B.
|
|
double * | m_adLengths |
| The lengths of the cable elements.
|
|
std::string | m_sCableName |
| The identification name of the cable;.
|
|
CInternalCableWithBottomContact * | m_pInternalCable |
|
SCableSpec | m_CableSpec |
| The cable specification.
|
|
IBasicBottom ** | m_ppBottom |
|
ICurrentVel ** | m_ppCurrentVel |
|
This class simulates a cable object consisting of one or more elements. Each element is of type CCableElDynStiff. Each element has methods to make it possible to use larger time steps in the integration. This is done by decreasing the stiffness of the element until the eigenfrequency of the element is low enough for the integration to be performed with the defined maximum step size.
Each element is regarded as a straight segment, responsible for calculating the forces acting on each of its ends, as well as the mass associated with each end node. The forces and mass from each element is added to the corresponding nodes of the cable, and the acceleration of each node is calculated in the OdeFcn.
The cable is influenced by:
- Internal stiffness
- Internal damping
- Hydrodynamic normal and tangential forces
- Buoyancy and gravity
- Added mass
The calculation of these forces are more thoroughly explained in CCableElDynStiff.
- Properties
Property | Default | Comment |
NumElements | 2 | The number of cable elements. |
Length | 100 | Not used, as it is now read from an input port. |
Density | - | The density of the cable (kg/m^3). |
NumericalDamping | 0 | Added numerical damping on each node. The damping force is calculated as \(\vec F_i = -k m_i \vec v_i\), where \(\vec F_i\) is the added damping force, \(k\) is the numerical damping factor, \(m_i\) is the node inertia and \(\vec v_i\) is the velocity of the node. |
Diameter | - | The diameter of the cable. |
E | - | The Young's modulus (elasticity) of the cable. |
DampingRatio | 1 | The relative axial damping of the cable. 0 is no damping, 1 is critical damping. |
FluidRho | 1025 | The density of the ambient fluid. |
MaxStepLength | 0.01 | Controls the stiffness of the cable to allow integration with step lengths up to this value. |
MaxTension | - | The maximum tension. If above this value, the tension is set to this this value. |
MaxAcceleration | 1000 | The maximum acceleration. If above this value, the acceleration is set to this this value. |
StepSafetyFactor | 50 | A safety factor between the MaxStepLength and the one used for calculating the stiffness of the cable. |
MeanTension | 0 | Possibility to add a mean tension to correct for decreased stiffness of the cable. |
AdaptationPeriod | 0 | If above zero, this tells the cable to correct its initial length to avoid length errors because of decreased stiffness. |
MaterialName | Trawl/Wire2 | The material to use for visualizing the cable. |
NumFaces | 5 | The number of planes to visualize the cable surface. |
DrawScale | 2 | The scale of the visual appearance of the cable. This is used to make it more visible. |
- Input ports
Tag | Size | Comment |
Length | 1 | The length of the cable. |
PosA | 3 | The position of end A. |
PosB | 3 | The position of end B. |
VelA | 3 | The velocity of end A. |
VelB | 3 | The velocity of end B. |
VelWater | 3 | The velocity of the water. |
- Output ports
Tag | Size | Comment |
ForceA | 3 | The force from end A of the cable. |
ForceB | 3 | The force from end B of the cable. |
PosA | 3 | The position of end A. |
PosB | 3 | The position of end B. |
- Revision history:
- 24.07.2007 KJR: Initial version.
- 24.11.2010 KJR: Added some class documentation.