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

Public Member Functions

 NetCableElement (const NetCableElementSpec *spec, const NetCableOptions &options={})
 
void AddEndForces (double deltaT, 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])
 
void SetConstants ()
 Calculates parameters and sets physical constants.
 
void CalcMassAndWeight ()
 Calculates the mass and weight of the element in water.
 
bool CheckAndInitialize ()
 Does the initialization and checking to make sure that the element is ready for simulation.
 
double GetStrainEnergy (const double adPosA[3], const double adPosB[3]) const
 
void StrainEnergyGradient (const double adPosA[3], const double adPosB[3], double gradA[3], double gradB[3]) const
 
double SurfaceHalfSize () const override
 The largest of the element's and its floats' half-sizes, for the surface gate (R66).
 
- Public Member Functions inherited from CableElDynStiff
 CableElDynStiff ()
 The constructor.
 
 ~CableElDynStiff ()
 The destructor.
 
virtual void UpdateLength (double newLength, bool forceUpdate=false)
 Updates the length of the cable element, and its dependant properties; not the mean tension.
 
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).
 
cable_axial_law::Element AxialElement () const
 The element's properties for the axial law (CableAxialLaw.h), as they are now.
 
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.
 
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)
 
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
 
void DragVelocityJacobian (const double posA[3], const double posB[3], const double velA[3], const double velB[3], const double vFluid[3], double rhoWater, double dFA_dvA[9], double dFA_dvB[9], double dFB_dvA[9], double dFB_dvB[9]) const
 
void DragPositionJacobian (const double posA[3], const double posB[3], const double velA[3], const double velB[3], const double vFluid[3], double rhoWater, double dFA_dpA[9], double dFA_dpB[9], double dFB_dpA[9], double dFB_dpB[9]) const
 
double BlendedFluidDensity (const double posA[3], const double posB[3]) const
 

Public Attributes

double m_nodeOffset
 The offset between the original nodes of the added node of this cable.
 
int m_fromNodes [2]
 The nodes which this cable is constructed by dividing.
 
int m_conn [2]
 The node numbers that the element is connected to.
 
double m_refineFactor
 The factor telling how much mesh refinement is desired for this element.
 
unsigned int m_numSpheres
 The number of spheres connected.
 
double * m_sphereD
 The diameter of the connected spheres.
 
double * m_sphereMass
 The mass of the connected spheres.
 
double * m_spherePos
 The position of the connected spheres.
 
unsigned int m_numDisks
 The number of disks connected.
 
double * m_diskD
 The diameter of the connected disks.
 
double * m_diskThickness
 The thickness of the connected disks.
 
double * m_diskMass
 The mass of the connected disks.
 
double * m_diskPos
 The position of the connected disks.
 
double m_addedWeightInWater
 The weight in water added to the element.
 
std::vector< std::string > m_VsDiskMeshName
 The names of the materials of the attached disks.
 
std::vector< std::string > m_VsSphereMeshName
 The names of the materials of the attached spheres.
 
- Public Attributes inherited from CableElDynStiff
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_rhoWaterFull = 1025.0
 The water density the owner passed, unblended [kg/m³]; also that of the stiffness factor (CableElDynStiff, MARE-0357).
 
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 Member Functions

bool AppendagesNearTheSurface () override
 True while a float may be at the surface (R66).
 
double SphereWetFraction (unsigned int i) const
 The wet fraction of sphere i, its own cap at its position (R66).
 
double DiskWetFraction (unsigned int i) const
 The wet fraction of disk i (R66).
 
void AddWaveExcitation (double adForceA[3], double adForceB[3]) const
 Adds the Froude-Krylov and added-mass wave excitation of the element (normal to it, R108) and its floats (the full acceleration) (R67).
 
void AddHydroForcesAppendices (double adForceA[3], double adForceB[3])
 Calculates the hydrodynamic forces on spheres and disks attached to the cable.
 
- Protected Member Functions inherited from CableElBasics
double WetFractionAt (const double posA[3], const double posB[3], double submergence[2], double &axisVertical) const
 
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.
 

Protected Attributes

bool m_appendagesWereNearTheSurface = false
 AppendagesNearTheSurface at the last call.
 
NetCableOptions m_options
 From the constructor.
 
double m_dragCoeffSphere
 The drag coefficient of a sphere.
 
double m_normalDragCoeffDisk
 The normal drag coefficient of a disk.
 
- Protected Attributes inherited from CableElDynStiff
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
 
- 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_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: its own velocity against the water, the part normal to the element, saturated.
 
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 (saturated with the vector).
 
double ma_dVnAmp_B
 The scalar hydrodynamic normal velocity of the end B.
 
double ma_adVt_A [3]
 The hydrodynamic axial velocity of the end A: its own velocity against the water, the part along the element, saturated.
 
double ma_adVt_B [3]
 The hydrodynamic axial velocity of the end B.
 
double ma_dVtAmp_A
 The speed of the hydrodynamic axial velocity of the end A (unsigned, saturated with the vector).
 
double ma_dVtAmp_B
 The speed of the hydrodynamic axial 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.
 

Constructor & Destructor Documentation

◆ NetCableElement()

NetCableElement::NetCableElement ( const NetCableElementSpec *  spec,
const NetCableOptions &  options = {} 
)
Parameters
specThe element's properties from the net file.
optionsWhat the element adds and how it is drawn (NetCableOptions).

Member Function Documentation

◆ AppendagesNearTheSurface()

bool NetCableElement::AppendagesNearTheSurface ( )
overrideprotectedvirtual

Reimplemented from CableElBasics.

◆ CalcMassAndWeight()

void NetCableElement::CalcMassAndWeight ( )
virtual

Reimplemented from CableElBasics.

◆ CheckAndInitialize()

bool NetCableElement::CheckAndInitialize ( )
virtual

Reimplemented from CableElDynStiff.

◆ SetConstants()

void NetCableElement::SetConstants ( )
virtual

Reimplemented from CableElBasics.

◆ StrainEnergyGradient()

void NetCableElement::StrainEnergyGradient ( const double  adPosA[3],
const double  adPosB[3],
double  gradA[3],
double  gradB[3] 
) const

Derivative of GetStrainEnergy() with respect to the end positions, which are its only state dependence: L0 and the full stiffness EA are fixed. Ignores the 1 mm and 10 km length saturation of CableElBasics, where the true derivative is zero.

Parameters
[out]gradADerivative with respect to end A [N].
[out]gradBDerivative with respect to end B [N].

◆ SurfaceHalfSize()

double NetCableElement::SurfaceHalfSize ( ) const
overridevirtual

Reimplemented from CableElBasics.


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