|
FhSim
3.1.0
Marine systems simulation
|
Inheritance diagram for Ship::ShipSimObject:
Collaboration diagram for Ship::ShipSimObject:Public Member Functions | |
| ShipSimObject (const std::string simObjectName, ISimObjectCreator *const creator) | |
| void | FinalSetup (const double T, const double *const X, ISimObjectCreator *const creator) |
| virtual void | PreOdeFcn (const double T, const double *const X) |
| virtual void | OdeFcn (const double T, const double *const X, double *const XDot) const |
| void | AcceptedStep (double T, const double *X) override |
| const double * | PositionNED (const double T, const double *const X) |
| const double * | PositionZeroCrossNED (const double T, const double *const X) |
| const double * | PositionAPNED (const double T, const double *const X) |
| const double * | VelocityNED (const double T, const double *const X) |
| const double * | QuaternionNED (const double T, const double *const X) |
| const double * | EulerAnglesNED (const double T, const double *const X) |
| const double * | RotationBody (const double T, const double *const X) |
| const double * | OmegaNED (const double T, const double *const X) |
| void | ComputeRollPitchYaw (const double T, const double *const X) const |
| void | ComputeRelativeVelocity (const double T, const double *const X) const |
| const double * | BodyForce (const double T, const double *const X) |
| const double * | VelocityBody (const double T, const double *const X) |
| const double * | FirstOrderWaveBody (const double T, const double *const X) |
| The first order wave force, or froude-krylov force, as experienced in the body frame of the vessel The first order wave loads are defined as a sum of harmonic functions with the same frequency distribution as the wave elevation. | |
| const double * | WaveDriftBody (const double T, const double *const X) |
| The mean value of the higher order wave forces as experienced in the body frame of the vessel. The mean value of the heave, roll and pitch direction equals zero. | |
| const double *const | FluidMemForceBody (const double T, const double *const X) |
| const double * | RestoringForceBody (const double T, const double *const X) |
| const double * | RelativeVelocityBody (const double T, const double *const X) |
| const double * | ViscousForceBody (const double T, const double *const X) |
| const double * | Encounter (const double T, const double *const X) |
| const double * | CoriolisRigidBody (const double T, const double *const X) |
| const double * | CoriolisFluidBody (const double T, const double *const X) |
| const double * | SpeedInfo (const double T, const double *const X) |
| const double * | RotationForceFrame (const double T, const double *const X) |
| const double * | KineticEnergy (const double T, const double *const X) |
| const double * | FluidEnergy (const double T, const double *const X) |
| const double * | FluidEnergy2 (const double T, const double *const X) |
| const double * | UFluidMemSpeed (const double T, const double *const X) |
| const double * | FluidForceBySpeedBody (const double T, const double *const X, int index) |
| const double * | FluidMemoryForceBody (const double T, const double *const X) |
| const double * | CrossFlowBody (const double T, const double *const X) |
| const double * | ResistanceBody (const double T, const double *const X) |
| The calm water resistance of the hull in the surge direction The resistance force is the defined as the calm water resistance of the hull. The calm water resistance is divided into the Reynolds number ( \( R_n\)) dependent friction contribution, and the Froude number ( \( F_n\)) dependent wave generation from the flow pattern around the hull. The resistance is calculated by scaling the dimensional total resistance coefficient, \( C_{ts}\), by the wet surface, \( S\), on the current waterline. The total resistance coefficient is both \( R_n\) and \( F_n\) dependent and is defined as. | |
| const double * | AdditionalDampeningBody (const double T, const double *const X) |
| const double * | ExternalForceNED (const double T, const double *const X) |
| const double * | ExternalForceBody (const double T, const double *const X) |
| const double * | ViscousRoll (const double T, const double *const X) |
| const double * | DriftSpeed (const double T, const double *const X) |
| ViscousShip & | Viscous () |
| The viscous model of the hull: manoeuvring and DP damping, roll damping with its amplitude history. | |
| const ViscousShip & | Viscous () const |
Public Attributes | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW | |
| double | m_ViscousRoll [6] |
| double | m_waveElevation |
| double | m_waveSlope |
| const double * Ship::ShipSimObject::AdditionalDampeningBody | ( | const double | T, |
| const double *const | X | ||
| ) |
The model supports additional user defined dampening forces. The forces are calculated from dimensionless dampening coefficients made dimensionless by \(m\) and by \(m\cdot L_{pp}\) for linear and rotational degrees of freedom respectively. The dampening force contains a linear and a quadratic modulus term which are controlled by separate dampening coefficients.
\[ F = C_{d_linear} \cdot m \cdot v + C_{d_quadratic} \cdot m \cdot v|v|\]
\[ M = C_{d_linear} \cdot m \cdot L_{pp} \cdot v + C_{d_quadratic} \cdot m \cdot L_{pp}\cdot v|v|\]
The dampening force decreases with increasing forward velocity by weighting the force with \(exp{-\frac{1}{2}|U|}\)
| const double * Ship::ShipSimObject::BodyForce | ( | const double | T, |
| const double *const | X | ||
| ) |
The total force acting on the vessel
| const double * Ship::ShipSimObject::CoriolisFluidBody | ( | const double | T, |
| const double *const | X | ||
| ) |
Coriolis force of the added mass and inertia tensors as formulated in the center of gravity
| const double * Ship::ShipSimObject::CoriolisRigidBody | ( | const double | T, |
| const double *const | X | ||
| ) |
Coriolis force of the rigid body mass and inertia tensors as formulated in the center of gravity
| const double * Ship::ShipSimObject::CrossFlowBody | ( | const double | T, |
| const double *const | X | ||
| ) |
Cross flow are calculated by summation of section wise cross flow drag along the hull. Dampening in yaw is computed by calculating the moment contribution around the center of gravity for each sections cross flow drag force
\[ v_r = v-x\cdot r\]
\[ Y_{cross-flow} = -\frac{1}{2}\rho\int_{-Lpp/2}^{Lpp/2}T(x)C_d^2d(x)|v_r|v_r dx \]
\[ N_{cross-flow} = -\frac{1}{2}\rho\int_{-Lpp/2}^{Lpp/2}T(x)\cdot x\cdot C_d^2d(x)|v_r|v_r dx \]
| const double * Ship::ShipSimObject::DriftSpeed | ( | const double | T, |
| const double *const | X | ||
| ) |
The speed over ground in the horizontal plane, the norm of the surge and sway velocity in the body frame
| const double * Ship::ShipSimObject::Encounter | ( | const double | T, |
| const double *const | X | ||
| ) |
Encounter frequency of the last wave in the sea environment list
| const double * Ship::ShipSimObject::EulerAnglesNED | ( | const double | T, |
| const double *const | X | ||
| ) |
The rotation of the body as three Euler angles (z-x-z sequence, canonical angles of the unit quaternion)
| const double * Ship::ShipSimObject::ExternalForceBody | ( | const double | T, |
| const double *const | X | ||
| ) |
External force in Body
| const double * Ship::ShipSimObject::ExternalForceNED | ( | const double | T, |
| const double *const | X | ||
| ) |
External force in NED
| const double * Ship::ShipSimObject::FirstOrderWaveBody | ( | const double | T, |
| const double *const | X | ||
| ) |
\[ \tau_{1. order} = \sum_{n=0}^{n_{waves}}\zeta_n A(\omega_n,\psi_n,U) \cdot cos( \omega_{n} - k_n x + \epsilon_n) \]
The excitation RAO A is read at the forward speed U of the ship through the water (bilinear in speed and frequency, the speed held to the speeds of the data set, MAR-0092); the radiation model stays at zero speed.
| const double * Ship::ShipSimObject::FluidEnergy | ( | const double | T, |
| const double *const | X | ||
| ) |
The squared norm of the collection of fluid memory model states
| const double *const Ship::ShipSimObject::FluidMemForceBody | ( | const double | T, |
| const double *const | X | ||
| ) |
The dampening force from wave generation by the vessel motions. This is the output of the "fluid memory" model
| const double * Ship::ShipSimObject::FluidMemoryForceBody | ( | const double | T, |
| const double *const | X | ||
| ) |
Fluid memory forces on body
| const double * Ship::ShipSimObject::KineticEnergy | ( | const double | T, |
| const double *const | X | ||
| ) |
The kinetic energy of the rigid body of the vessel
| const double * Ship::ShipSimObject::OmegaNED | ( | const double | T, |
| const double *const | X | ||
| ) |
The rotational speed of the ship in the global "north-east-down" coordinate system
| const double * Ship::ShipSimObject::PositionAPNED | ( | const double | T, |
| const double *const | X | ||
| ) |
The position of the intersection between the aft perpendicular, baseline in the global "north-east-down" coordinate system
| const double * Ship::ShipSimObject::PositionNED | ( | const double | T, |
| const double *const | X | ||
| ) |
The position of the center of gravity in the global "north-east-down" coordinate system
| const double * Ship::ShipSimObject::PositionZeroCrossNED | ( | const double | T, |
| const double *const | X | ||
| ) |
The position of the midpoint of the water plane at Lpp/2 in the global "north-east-down" coordinate system
| const double * Ship::ShipSimObject::QuaternionNED | ( | const double | T, |
| const double *const | X | ||
| ) |
The rotation quaternion of the body as w,x,y,z
| const double * Ship::ShipSimObject::RelativeVelocityBody | ( | const double | T, |
| const double *const | X | ||
| ) |
The relative velocity of the ship relative to the ambient (current) velocity
| const double * Ship::ShipSimObject::ResistanceBody | ( | const double | T, |
| const double *const | X | ||
| ) |
\[ C_{ts} = (1+k) (C_f(R_n) + \Delta C_f(R_n)) + C_r(F_n) \]
Where
\[ R_{ts} = \frac{1}{2}\rho U^2 \cdot S \cdot C_{ts}\]
Astern: for a negative surge speed the resistance is evaluated at \(5|U|\) and acts against the motion, so it is about 25 times the resistance at the same speed ahead (owner decision, kept on purpose: the empirical curves are for ahead running only). The speed is limited to 100 m/s.
| const double * Ship::ShipSimObject::RestoringForceBody | ( | const double | T, |
| const double *const | X | ||
| ) |
The hydrostatic restoring force on the body
| const double * Ship::ShipSimObject::RotationBody | ( | const double | T, |
| const double *const | X | ||
| ) |
The vessels roll, pitch and yaw angles in the local coordinate system. The yaw angle is relative to the north direction.
| const double * Ship::ShipSimObject::RotationForceFrame | ( | const double | T, |
| const double *const | X | ||
| ) |
Rotation body if constrained to move parallel to the still ocean surface
| const double * Ship::ShipSimObject::SpeedInfo | ( | const double | T, |
| const double *const | X | ||
| ) |
Information about the reference speeds in the potential data and the current speed of the vessel
| const double * Ship::ShipSimObject::UFluidMemSpeed | ( | const double | T, |
| const double *const | X | ||
| ) |
The speed the fluid memory model sees: the velocity of the vessel relative to the ambient (current) velocity in the body frame, 6 values
| const double * Ship::ShipSimObject::VelocityBody | ( | const double | T, |
| const double *const | X | ||
| ) |
The full velocity vector of the vessel in body coordinates
| const double * Ship::ShipSimObject::VelocityNED | ( | const double | T, |
| const double *const | X | ||
| ) |
The six-dof velocity vector for the center of gravity in the global "north-east-down" coordinate system
| const double * Ship::ShipSimObject::ViscousForceBody | ( | const double | T, |
| const double *const | X | ||
| ) |
Viscous forces on body
| const double * Ship::ShipSimObject::ViscousRoll | ( | const double | T, |
| const double *const | X | ||
| ) |
The viscous roll damping in its six components: 1) friction damping, 2) eddy damping, 3) lift damping, 4) bilge keel damping, 5) skeg damping, 6) skeg lift damping
| const double * Ship::ShipSimObject::WaveDriftBody | ( | const double | T, |
| const double *const | X | ||
| ) |
\[ \tau_{wave-drift} = \sum_{n=0}^{n_{waves}} {\zeta_{n}}^2 A(\omega_n,\psi_n,U) \]