FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
AddedMassRigidElement.h
1#pragma once
2
24#include "CableSegmentWaterForce.h"
25
26#include <fhsim_coribo/RigidElement.h>
27#include <fhsim_environment/EnvironmentProvider.h>
28
29namespace CoRiBoDynamics
30{
31class AddedMassRigidElement : public StandardRigidElement
32{
33public:
44 AddedMassRigidElement(const vec6& dryInertia, int ix_P, int ix_Q, int ix_V, int ix_W,
45 const trawl_cable_water::Segment& segment, environment::EnvironmentProvider* const* environment)
46 : StandardRigidElement(dryInertia, ix_P, ix_Q, ix_V, ix_W)
47 , m_dryMass(dryInertia(0))
48 , m_segment(segment)
49 , m_environment(environment)
50 {
51 }
52
53 void Setup(double T, const double* const X) override
54 {
55 RigidElement::Setup(T, X); // the position and the axis, for the wet fraction
56 double addedMass = 0.0;
57 if (m_environment && *m_environment && !InSediment()) {
58 const vec3 axis = m_RotationMatrix.col(2);
59 addedMass = trawl_cable_water::kAddedMassCoefficient * trawl_cable_water::kRhoWater * m_segment.displacementVolume * trawl_cable_water::WetFraction(**m_environment, T, m_P, axis, m_segment);
60 }
61 m_Inertia(0) = m_Inertia(1) = m_dryMass + addedMass;
62 StandardRigidElement::Setup(T, X);
63 }
64
65 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
66private:
69 bool InSediment() const
70 {
71 double seaDepth = 0.0;
72 (*m_environment)->GetSeaDepth(m_P.data(), seaDepth);
73 return m_P.z() >= seaDepth;
74 }
75
76 double m_dryMass;
78 environment::EnvironmentProvider* const* m_environment;
79};
80} // namespace CoRiBoDynamics
Definition AddedMassRigidElement.h:32
AddedMassRigidElement(const vec6 &dryInertia, int ix_P, int ix_Q, int ix_V, int ix_W, const trawl_cable_water::Segment &segment, environment::EnvironmentProvider *const *environment)
Definition AddedMassRigidElement.h:44
The properties of the elements of one cable segment.
Definition CableSegmentWaterForce.h:24
double displacementVolume
The volume that gives the buoyancy [m³].
Definition CableSegmentWaterForce.h:28