FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Wave propulsion hull

A Vessel/WaveHull driven by one propeller and one rudder behind it.

+ Collaboration diagram for Wave propulsion hull:

Everything of Vessel/WaveHull (states, waves, parameters, outputs, visualization) plus the loads of a propeller turning at PropellerSpeed and a rudder at RudderAngle, both on the centreline. The inputs act directly (no servo or engine dynamics).

Propeller

The open-water thrust coefficient is K_T(J) = KT0 + KT1 J + KT2 J^2 with the advance ratio J = u_P / (n D) and the inflow u_P = (1 - WakeFraction) u. Multiplied out, so it stays finite at n = 0:

T = Rho D^4 KT0 n|n| + Rho D^3 KT1 |n| u_P + Rho D^2 KT2 sign(n) u_P^2

The hull feels (1 - ThrustDeduction) T in surge and the pitch moment PropellerZ T. The polynomial describes the first quadrant (n >= 0, u >= 0); outside it the thrust is an extrapolation.

Rudder

The MMG normal-force model. The rudder sits in the slipstream, whose speed at the rudder follows from actuator-disc theory:

u_R = u_P + SlipstreamFactor (sqrt(u_P^2 + 8 T / (Rho pi D^2)) - u_P)   (T > 0; else u_P)
v_R = v + RudderX r

With U_R^2 = u_R^2 + v_R^2, the angle of attack alpha_R = delta + atan(v_R / u_R) and Fujii's lift slope f_alpha = 6.13 Lambda / (Lambda + 2.25) of the aspect ratio Lambda, the normal force is F_N = Rho / 2 RudderArea f_alpha U_R^2 sin(alpha_R), and on the hull

X_R = -F_N sin(delta)
Y_R = -(1 + HullInteraction) F_N cos(delta)
N_R = -(RudderX + HullInteraction x_H) F_N cos(delta),   x_H = -0.45 Length
K_R =  RudderZ F_N cos(delta),   M_R = -RudderZ F_N sin(delta)

A positive RudderAngle turns the vessel to starboard (positive yaw rate) and heels it to starboard when the rudder is below the CG. There is no stall: the force follows sin(alpha_R) at any angle.

Model notes

Example configuration excerpt

<Lib
LibName = "marine_elements"
SimObject = "Vessel/WavePropulsionHull"
Name = "Boat"
Length = "20"
Breadth = "6"
Mass = "150000"
RollInertia = "6.0e5"
PitchInertia = "4.5e6"
YawInertia = "4.5e6"
GMT = "0.8"
GML = "25"
RollQuadraticDamping = "2.0e5"
SurgeQuadraticDamping = "1.5e3"
PropellerDiameter = "1.4"
KT0 = "0.45"
KT1 = "-0.35"
KT2 = "-0.1"
WakeFraction = "0.2"
ThrustDeduction = "0.15"
RudderArea = "1.5"
RudderAspectRatio = "1.5"
/>
...
<Connection
Boat.PropellerSpeed = "4"
Boat.RudderAngle = "0"
/>

Input Ports

Name Width Description
PropellerSpeed 1 Propeller speed n [rev/s].
RudderAngle 1 Rudder angle delta [rad], positive turns to starboard.

Output Ports

Those of Vessel/WaveHull, and:

Name Width Description
Thrust 1 Open-water propeller thrust T [N].
RudderForce 2 Rudder surge and sway force X_R, Y_R on the hull [N].

Configuration parameters

Those of Vessel/WaveHull, and:

Name Width Description
PropellerDiameter 1 Propeller diameter D [m]. Required.
KT0 1 Thrust coefficient K_T at J = 0. Required.
KT1 1 Linear coefficient of K_T(J). Required.
KT2 1 Quadratic coefficient of K_T(J). Required.
WakeFraction 1 Wake fraction w (Default: 0).
ThrustDeduction 1 Thrust deduction t (Default: 0).
PropellerX 1 Propeller position forward of the CG [m] (Default: Lcf - Length / 2).
PropellerZ 1 Propeller position below the CG [m] (Default: draught / 2).
RudderArea 1 Rudder area A_R [m^2]. Required.
RudderAspectRatio 1 Rudder aspect ratio Lambda (span^2 / area). Required.
RudderX 1 Rudder position forward of the CG [m] (Default: PropellerX).
RudderZ 1 Rudder position below the CG [m] (Default: PropellerZ).
HullInteraction 1 Hull-rudder interaction factor a_H (Default: 0).
SlipstreamFactor 1 Fraction of the slipstream acceleration reached at the rudder (Default: 0.5).

Full example file

<Contents>
<!--
Three WavePropulsionHull hulls of 12, 20 and 40 m in a 1.5 m irregular sea, drawn in the ocean
of the environment.
The sea is a JONSWAP spectrum, mean period 6 s, travelling south (MainDirectionDeg 180). Each
hull steams in a turning circle, so it stays in view and meets the waves from every direction:
the 12 and 40 m hulls to starboard, the 20 m hull to port.
The 12 and 40 m hulls are the 20 m workboat Froude-scaled by 0.6 and 2: lengths, GM and the
propeller diameter scale by s, areas and the resistance by s^2, mass by s^3, inertias and
RollQuadraticDamping by s^5, and the propeller speed by s^-1/2. Each starts at about its
straight-course speed. Added mass and the sway and yaw damping take their defaults.
SampleLevel grows with the length so the sample spacing stays below the shortest waves with
energy (about 6 m; see "Short waves" in the WaveHull documentation).
The live view needs a visualization build and the <Visualization> observer below;
simulationSpeed="1" runs it in real time. The camera starts at NED (-30, 0, 0) looking north
towards the hulls.
-->
<OBJECTS>
<Lib
LibName = "marine_elements"
SimObject = "Vessel/WavePropulsionHull"
Name = "Small"
Length = "12"
Breadth = "3.6"
Mass = "32400"
RollInertia = "46656"
PitchInertia = "349920"
YawInertia = "349920"
GMT = "0.48"
GML = "15"
RollQuadraticDamping = "15552"
SurgeQuadraticDamping = "540"
PropellerDiameter = "0.84"
KT0 = "0.45"
KT1 = "-0.35"
KT2 = "-0.1"
WakeFraction = "0.2"
ThrustDeduction = "0.15"
RudderArea = "0.54"
RudderAspectRatio = "1.5"
HullInteraction = "0.2"
SampleLevel = "2"
/>
<Lib
LibName = "marine_elements"
SimObject = "Vessel/WavePropulsionHull"
Name = "Medium"
Length = "20"
Breadth = "6"
Mass = "150000"
RollInertia = "6.0e5"
PitchInertia = "4.5e6"
YawInertia = "4.5e6"
GMT = "0.8"
GML = "25"
RollQuadraticDamping = "2.0e5"
SurgeQuadraticDamping = "1.5e3"
PropellerDiameter = "1.4"
KT0 = "0.45"
KT1 = "-0.35"
KT2 = "-0.1"
WakeFraction = "0.2"
ThrustDeduction = "0.15"
RudderArea = "1.5"
RudderAspectRatio = "1.5"
HullInteraction = "0.2"
SampleLevel = "3"
/>
<Lib
LibName = "marine_elements"
SimObject = "Vessel/WavePropulsionHull"
Name = "Large"
Length = "40"
Breadth = "12"
Mass = "1.2e6"
RollInertia = "1.92e7"
PitchInertia = "1.44e8"
YawInertia = "1.44e8"
GMT = "1.6"
GML = "50"
RollQuadraticDamping = "6.4e6"
SurgeQuadraticDamping = "6.0e3"
PropellerDiameter = "2.8"
KT0 = "0.45"
KT1 = "-0.35"
KT2 = "-0.1"
WakeFraction = "0.2"
ThrustDeduction = "0.15"
RudderArea = "6.0"
RudderAspectRatio = "1.5"
HullInteraction = "0.2"
SampleLevel = "4"
/>
<Lib
LibName = "environment"
SimObject = "Environment"
Name = "Environment"
Waves.Spectrum = "JONSWAP"
Waves.Theory = "Airy"
Waves.Hs = "1.5"
Waves.MeanPeriod = "6"
Waves.MainDirectionDeg = "180"
Waves.DirectionCosinePower = "10"
Waves.NumWaves = "40"
Bathymetry.Depth = "1000"
Visual.WorldRadius = "500"
/>
</OBJECTS>
<INTERCONNECTIONS>
<Connection
Small.PropellerSpeed = "5.16"
Small.RudderAngle = "0.35"
Medium.PropellerSpeed = "4"
Medium.RudderAngle = "-0.35"
Large.PropellerSpeed = "2.83"
Large.RudderAngle = "0.35"
/>
</INTERCONNECTIONS>
<INITIALIZATION>
<InitialCondition
Small.Pose = "40,-70,0"
Small.Velocity = "2.42,0,0"
Medium.Pose = "40,40,0"
Medium.Velocity = "3.13,0,0"
Large.Pose = "40,85,0"
Large.Velocity = "4.42,0,0"
/>
</INITIALIZATION>
<SIMULATION simulationSpeed="1">
<Timing TStart="0" TEnd="600"/>
<Integrator Method="RK45_i">
<StepControl StepMax="0.05" StepMin="1e-10" AbsTol="1e-3" RelTol="1e-3"/>
</Integrator>
</SIMULATION>
<OBSERVERS>
<FileOutput TOutput="0, 0:0.5:600, 600" Select="objects:all"/>
<Visualization frameRate="25"/>
</OBSERVERS>
</Contents>

This SimObject is referred to as Vessel/WavePropulsionHull