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

Public Member Functions

 CableElDynStiff ()
 The constructor.
 
 ~CableElDynStiff ()
 The destructor.
 
virtual bool CheckAndInitialize ()
 Does the initialization and checking to make sure that the element is ready for simulation.
 
virtual void UpdateLength (double newLength, double step, bool forceUpdate=false)
 Updates the length of the cable element, and its dependant properties.
 
void UpdateMeanTension (double step)
 Updates the mean tension of the cable element.
 
void UpdateMeanTensionAt (const double adPosA[3], const double adPosB[3], double step)
 
double GetEFactor () const
 Returns the current stiffness reduction factor (1 = full stiffness, <1 = reduced for numerical stability).
 
virtual void AddStructuralForces (double adForceA[3], double adForceB[3])
 Adds the forces from tension and internal damping to the nodes. CalcFoundation must be run first.
 
- Public Member Functions inherited from CableElBasics
 CableElBasics ()
 The constructor.
 
 ~CableElBasics ()
 The destructor.
 
virtual void AddEndForces (const double adPosA[3], const double adVelA[3], const double adPosB[3], const double adVelB[3], const double adFluidVel[3], const double rhoWater, double adForceA[3], double adForceB[3])
 Calculates the end forces on the cable element.
 
virtual void SetConstants ()
 Calculates parameters and sets physical constants.
 
virtual void CalcMassAndWeight ()
 Calculates the mass and weight of the element in water.
 
double GetDampingCoeff () const
 Returns the structural damping coefficient (negative value: -2*dampRatio*area*sqrt(E*rho)).
 
virtual void UpdateLength (double newLength)
 Upates the length of the cable element, and its dependant properties.
 
double GetLength ()
 
void SetSurfaceElevation (double etaA, double etaB)
 
virtual double SurfaceHalfSize () const
 The half-size the surface gate needs: the element's radius; larger with floats (NetCableElement).
 
void SetWaveAcceleration (const double acceleration[3])
 
double InertiaShare () const
 The inertia force factor of one end node: half of (1 + Ca) rho V f (environment::cylinder_hydro::InertiaForceFactor).
 
void WaveExcitationPositionJacobian (const double posA[3], const double posB[3], const double acceleration[3], double dF_dpB[9]) const
 

Public Attributes

double m_maxStep
 The maximum step of the integration routine.
 
double m_meanTension
 The mean tension of the cable element.
 
double m_eAdaptationPeriod
 The time constant of the adaptation of the mean tension.
 
double m_stepSafetyFactor
 The safety factor when calculating the Young modulus of the element.
 
- Public Attributes inherited from CableElBasics
unsigned long m_iD
 The ID of the element.
 
std::string m_cableName
 The name of the parent cable.
 
double m_dL0
 The relaxed length of the element.
 
double m_dD
 The diameter of the element.
 
double m_dE
 The Young modulus of the element.
 
double m_rho
 The density of the element material.
 
double m_addedWeightInWater
 The weight in water added to the element.
 
double m_tangentialFrictionCoeff
 The tangential drag coefficient of the cable element.
 
double m_normalDragCoeff
 The normal drag coefficient of the cable element.
 
double m_rhoWater
 The density of the surrounding fluid: the water density blended with the air density by the submerged fraction (CalcFoundation).
 
double m_rhoAir = 1.2
 The air density, kg/m³; the owner sets the environment's (cable_air::EnvironmentAirDensity, owner ruling R65).
 
double m_minLength
 The minimum length of the element.
 
double m_maxTension
 The maximum tension in the element.
 
double m_dampingRatio
 The relative damping ratio of the cable.
 
double m_eA
 The linear stiffness of the element.
 
double m_dA
 The cross sectional area of the cable.
 
double m_weightInWater [2]
 The weight in water distributed to each node.
 
double m_massInWater [2]
 The mass in water distributed to each node.
 
double m_weightInWaterPerMeter [2]
 The weight in water distributed to each node, per meter cable.
 
double m_massInWaterPerMeter [2]
 The mass in water distributed to each node, per meter cable.
 

Protected Attributes

double ma_dEps
 The stretching of the cable.
 
double m_eFactor
 The factor multiplied by the Young modulus.
 
double m_meanTensionDamp
 The damping of the development of the mean tension.
 
double ma_adMeanTensionForceA [3]
 
double ma_dAdaptationDamping
 
sfh::filters::PID m_MeanTensionController
 
- Protected Attributes inherited from CableElBasics
double m_surfaceElevation [2] = {0.0, 0.0}
 η above the ends [m] (SetSurfaceElevation).
 
double m_submergence [2] = {1e10, 1e10}
 z + η at the ends at the last CalcFoundation [m]; deep before the first.
 
double m_axisVertical = 0.0
 The vertical component of the unit axis A→B at the last CalcFoundation.
 
double m_wetFraction = 1.0
 The element's wet fraction at the last CalcFoundation (CylinderWetFraction).
 
double m_rhoWaterFull = 1025.0
 The water density the owner passed, unblended [kg/m³].
 
double m_waveAcceleration [3] = {0.0, 0.0, 0.0}
 The water particle acceleration at the element (SetWaveAcceleration) [m/s²].
 
double ma_adDirection [3]
 Memory allocation to increase the computational efficiency.
 
double ma_dDampingCoeff
 A intermediate damping calculation to increase the computational efficiency.
 
double ma_adVel [3]
 The average hydrodynamic velocity of the element.
 
double ma_dVelAmp
 The scalar average hydrodynamic velocity of the element.
 
double ma_adVt [3]
 The average tangential hydrodynamic velocity of the element.
 
double ma_dVtAmp
 The scalar average tangential hydrodynamic velocity of the element.
 
double ma_adVn [3]
 The average normal hydrodynamic velocity of the element.
 
double ma_dVnAmp
 The scalar average normal hydrodynamic velocity of the element.
 
double ma_adVn_A [3]
 The hydrodynamic normal velocity of the end A.
 
double ma_adVn_B [3]
 The hydrodynamic normal velocity of the end B.
 
double ma_dVnAmp_A
 The scalar hydrodynamic normal velocity of the end A.
 
double ma_dVnAmp_B
 The scalar hydrodynamic normal velocity of the end B.
 
double ma_dLength
 The actual distance between the ends.
 
double ma_dCompressionSpeed
 The speed at which the distance between the two ends decreases.
 
double ma_dTangentialDragFactor
 A factor used when calculating the tangential drag force.
 
double ma_dNormalDragFactor
 A factor used when calculating the normal drag force.
 

Additional Inherited Members

- Static Public Attributes inherited from CableElBasics
static constexpr double kAddedMassCoefficient = environment::cylinder_hydro::kCylinderAddedMassCoefficient
 
- Protected Member Functions inherited from CableElBasics
virtual bool AppendagesNearTheSurface ()
 True when a float on the element is near the surface, so its weight must be recomputed every call; none here.
 
void AddWaveExcitationCable (double adForceA[3], double adForceB[3]) const
 Adds the rope's Froude-Krylov and added-mass wave excitation (owner rulings R67, R104). CalcFoundation must be run first.
 
void CalcFoundation (const double adPosA[3], const double adVelA[3], const double adPosB[3], const double adVelB[3], const double adFluidVel[3], const double rhoWater)
 
void AddGravityBuoyancy (double adForceA[3], double adForceB[3], const double adPosA[3], const double adPosB[3])
 Adds the forces from gravity and buoyancy to the nodes. CalcFoundation must be run first.
 
void AddHydroForcesCable (double adForceA[3], double adForceB[3])
 Calculates the hydrodynamic forces on the cable and the spheres and disks attached to it. CalcFoundation must be run first.
 

Member Function Documentation

◆ AddStructuralForces()

virtual void CableElDynStiff::AddStructuralForces ( double  adForceA[3],
double  adForceB[3] 
)
virtual

Reimplemented from CableElBasics.

◆ CheckAndInitialize()

virtual bool CableElDynStiff::CheckAndInitialize ( )
virtual

Reimplemented from CableElBasics.

Reimplemented in NetCableElement, and NetCableElementWithConstraints.

◆ UpdateMeanTensionAt()

void CableElDynStiff::UpdateMeanTensionAt ( const double  adPosA[3],
const double  adPosB[3],
double  step 
)

Advances the mean tension from the element's end positions at the start of an integrator step.

The dynamic-stiffness mean tension is a per-step filter (owner ruling R64, MARE-0224): the owner calls this from PreOdeFcn with the accepted state, and the right-hand side only reads it, so every evaluation of a step (RK stages, Jacobian columns) sees the same mean tension. Does nothing when m_eAdaptationPeriod is 0.

Parameters
adPosAThe position of end A at the step start [m].
adPosBThe position of end B at the step start [m].
stepThe time since the previous call [s].

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