48 : StandardRigidElement(dryInertia, ix_P, ix_Q, ix_V, ix_W)
49 , m_dryMass(dryInertia(0))
51 , m_environment(environment)
55 void Setup(
double T,
const double*
const X)
override
57 RigidElement::Setup(T, X);
58 double addedMass = 0.0;
59 if (m_environment && *m_environment && !InSediment()) {
60 const vec3 axis = m_RotationMatrix.col(2);
61 addedMass = environment::wet_cylinder::AddedMass(trawl_cable_water::CylinderOf(m_segment), trawl_cable_water::WetFraction(**m_environment, T, m_P, axis, m_segment));
63 m_Inertia(0) = m_Inertia(1) = m_dryMass + addedMass;
64 StandardRigidElement::Setup(T, X);
67 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
71 bool InSediment()
const
73 double seaDepth = 0.0;
74 (*m_environment)->GetSeaDepth(m_P.data(), seaDepth);
75 return m_P.z() >= seaDepth;
80 environment::EnvironmentProvider*
const* m_environment;
Definition AddedMassRigidElement.h:34
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:46