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

Public Member Functions

 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.
 
virtual bool CheckAndInitialize ()
 Does the initialization and checking to make sure that the element is ready for simulation.
 
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

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.
 

Static Public Attributes

static constexpr double kAddedMassCoefficient = environment::cylinder_hydro::kCylinderAddedMassCoefficient
 

Protected Member Functions

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)
 
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.
 
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.
 

Protected Attributes

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.
 

Member Function Documentation

◆ AddStructuralForces()

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

Reimplemented in CableElDynStiff.

◆ AppendagesNearTheSurface()

virtual bool CableElBasics::AppendagesNearTheSurface ( )
inlineprotectedvirtual

◆ CalcFoundation()

void CableElBasics::CalcFoundation ( const double  adPosA[3],
const double  adVelA[3],
const double  adPosB[3],
const double  adVelB[3],
const double  adFluidVel[3],
const double  rhoWater 
)
protected

Calculates the member variables used for increased computational efficiency, and must be run before any further calculations.

◆ CalcMassAndWeight()

virtual void CableElBasics::CalcMassAndWeight ( )
virtual

◆ CheckAndInitialize()

virtual bool CableElBasics::CheckAndInitialize ( )
virtual

◆ SetConstants()

virtual void CableElBasics::SetConstants ( )
virtual

◆ SetSurfaceElevation()

void CableElBasics::SetSurfaceElevation ( double  etaA,
double  etaB 
)
inline

Sets the surface elevation η above the two ends for the next force evaluations (owner ruling R66).

The owner evaluates η at the ends, or passes 0 where the element is deeper, or higher, than the maximum wave elevation plus SurfaceHalfSize() (then the fraction is the same).

Parameters
etaAη above end A [m], positive up.
etaBη above end B [m].

◆ SetWaveAcceleration()

void CableElBasics::SetWaveAcceleration ( const double  acceleration[3])
inline

Sets the water particle acceleration at the element for the next force evaluations (owner rulings R67, R104); 0 by default, so an owner without waves adds nothing.

Parameters
accelerationThe acceleration [m/s²], NED.

◆ SurfaceHalfSize()

virtual double CableElBasics::SurfaceHalfSize ( ) const
inlinevirtual

◆ WaveExcitationPositionJacobian()

void CableElBasics::WaveExcitationPositionJacobian ( const double  posA[3],
const double  posB[3],
const double  acceleration[3],
double  dF_dpB[9] 
) const

The derivative of the rope's wave excitation (AddWaveExcitationCable) in the position of end B through the turning of the element's axis (owner ruling R108), for an analytical Jacobian. The force is the same on both ends, and its derivative in end A is the negative. The wet fraction is the last CalcFoundation's, and the gradient of the wave field and of the wet fraction are left out, as the drag's current gradient is.

Parameters
posAEnd A [m], NED.
posBEnd B [m], NED.
accelerationThe water particle acceleration at the element [m/s²], NED.
dF_dpBOut: dF[j]/dpB[k] at [3 * j + k] [N/m].

Member Data Documentation

◆ kAddedMassCoefficient

constexpr double CableElBasics::kAddedMassCoefficient = environment::cylinder_hydro::kCylinderAddedMassCoefficient
staticconstexpr

The added-mass coefficient of the rope normal to its axis: a circular cylinder, Ca = 1 (DNV-RP-C205 (2021), Appendix A, Table A-1; the table was not checked here). The element's inertia (rho_c + rho) A L (CalcMassAndWeight) carries the same Ca, in every direction.


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