46 : StandardRigidElement(dryInertia, ix_P, ix_Q, ix_V, ix_W)
47 , m_dryMass(dryInertia(0))
49 , m_environment(environment)
53 void Setup(
double T,
const double*
const X)
override
55 RigidElement::Setup(T, X);
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);
61 m_Inertia(0) = m_Inertia(1) = m_dryMass + addedMass;
62 StandardRigidElement::Setup(T, X);
65 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
69 bool InSediment()
const
71 double seaDepth = 0.0;
72 (*m_environment)->GetSeaDepth(m_P.data(), seaDepth);
73 return m_P.z() >= seaDepth;
78 environment::EnvironmentProvider*
const* m_environment;
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