Shallow water corrections (shallow)

Addressing additional resistance caused by changes to viscosity and additional sinkage in shallow water

When ships pass through shallow water, they experience higher resistance due to changes in the viscous friction and the impact of squatting or sinkage in the water. These effects are due to the water passing under the ship being constricted and thus having a higher velocity. The change in velocity results in a difference in the buoyancy of the ship in accordance with the Bernoulli principle, which states that

\[P +\frac{1}{2} \rho v^2 + \rho g h = \textrm{Constant}\]

Where \(P\) is pressure, \(\rho\) is water density, \(v\) is the speed through water, \(g\) is gravity, and \(h\) is the distance from the reference plane. As can be seen, an increase in water velocity must be balanced by a change in at least one of the other two variables. Changes in pressure result in the ship’s buoyancy being reduced, causing it to sink slightly or squat. As the coefficient of friction experienced by the vessel is proportional to the square of the speed through water, the frictional resistance on the ship increases. A secondary effect is that the sinkage exposes an additional surface area of the ship to the water, increasing the friction effects further. Finally, as the ship’s hull gets closer to the sea floor, the boundary layer between the hull and the free-flowing water thickens and becomes more turbulent increasing resistance. As a result of the additional resistance, the engine is required to deliver more power to maintain speed.

As such, when calculating the performance of a ship in shallow water, care needs to be taken to adjust for the effects this produces or risk misinterpreting the performance results.

1 Importing the module

The module is called shallow import as

from pyseatrials.shallow import *

2 Raven shallow water correction

Although there are several correction approaches to correcting for the effect of shallow water this library uses the method introduced by Raven in 2016 and described fully in Raven 2019. The correction has two component resistance due to changes in viscous friction, resistance due to sinkage.

Consider the following

\(R_{V, \,\textrm{deep}} = C_v'\frac{1}{2} \rho V_S^2 S\)

Is the viscous friction in deep water, where \(C_v'\) is the coeficient of viscous friction, \(\rho\) is the density of water, \(V_S\) is the speed through water, and \(S\) is the wetted surface area

The correction due to the changes in viscous resistance are given as

\[ R_{V} = R_{V, \,\textrm{deep}} 0.57 (\frac{T_M}{h})^{1.79},\]

Where, \(T_M\) is the draught at midship and \(h\) is the water depth.

The sinkage is calculated using the following method,

\[d(\textrm{sinkage}) = 1.46 \frac{\nabla}{L_\textrm{pp}^2}\left[ \frac{\textrm{Fr}_\textrm{h}^2}{\sqrt{1 - \textrm{Fr}_\textrm{h}^2}} - \frac{\textrm{Fr}_\textrm{hd}^2}{\sqrt{1 - \textrm{Fr}_\textrm{hd}^2}} \right],\]

where L_ is the length between perpendiculars, \(\nabla\) is \(\nabla = L_\textrm{pp} B T_M C_B\), and \(B\) is the ships beam (m), \(C_B\) is the dimensionless block coefficient, \(\textrm{Fr}_\textrm{hd}\) is the Froude number where \(h = 0.3 L_\textrm{pp}\), \(\textrm{Fr}_\textrm{h}\) is the Froude number where \(h\) is water depth. It should be noted that $d() $.

Additional displacement due to sinkage is then found such that

\[\delta \nabla = \begin{cases} d(\textrm{sinkage})\frac{A_W}{\nabla} & \text{if } d(\textrm{sinkage})\frac{A_W}{\nabla} < 0.05 \\ 0.05 & \text{if } d(\textrm{sinkage})\frac{A_W}{\nabla} \geq 0.05 \end{cases} \]

Where \(A_W\) is the water plane area. With \(\delta nabla\) now known we find the sinkage value using

\[\textrm{rsink} = (1- \delta \nabla)^\frac{2}{3} \]

We then correct the power shallow water power to deep water power using

\[P_\textrm{D,deep} = \frac{P_\textrm{D, shallow}}{\textrm{rsink}} - \frac{\Delta R_V V_S}{\eta_{Did}}\]

Finally we perform a check to ensure that

\[R_{V, \,\textrm{deep}} \leq \frac{P_\textrm{D,deep} \eta_\textrm{Did}}{V_s}\]

if the above condition is not satisfied \(R_{V, \,\textrm{deep}}\) is set to the upper limit and the process is repeated.


source

2.1 shallow_water_correction

 shallow_water_correction (coef_visc_frict:float, stw:float, L_pp:float,
                           beam:float, draught:float, C_B:float,
                           displacement:float, wetted_surface_area:float,
                           waterplane_area:float, power:float, etad:float,
                           water_density:float, water_depth:float,
                           R_V_deep=None)

Perform Raven corrections for shallow water performance

Type Default Details
coef_visc_frict float the coefficient of viscous friction [none]
stw float speed through water [m/s^2]
L_pp float The length between perpendiculars of the ship [m]
beam float The beam of the ship [m]
draught float The draught at mid-ship [m]
C_B float The block coefficient of the ship [none]
displacement float The measured displacement from the trial [m^3]
wetted_surface_area float The wetted surface area of the ships hull [m^2]
waterplane_area float area of the waterline from the trail [m^2]
power float The engine power [kW]
etad float The propulsive efficiency of the propeller [none]
water_density float Water density [kg/m^3]
water_depth float The depth of the water [m]
R_V_deep NoneType None The viscous friction experienced by the ship, this is left as none and used internally by the function
Returns tuple Returns 3 values the equivalent deep water power, the sinkage, the viscous resistance correction

The example below shows a simple use case

coef_visc_frict = 0.0015
stw = np.array([8.0, 10.0, 12.0])  # m/s
L_pp = 200.0  # m
beam = 30.0  # m
draught = 10.0  # m
C_B = 0.7
displacement = 16800.0 # m^3
wetted_surface_area = 2500.0  # m^2
waterplane_area = 1920.0
power = np.array([6000.0, 8000.0, 10000.0])*1000  # W
etad = 0.7
water_density = 1025.0
water_depth = np.array([40.0, 40.0, 40.0])  # m

# Call the function with the example inputs
P_D_deep, sinkage, R_V = shallow_water_correction(coef_visc_frict, stw, L_pp, beam, draught,
                                                  C_B, displacement, wetted_surface_area,
                                                  waterplane_area, power, etad,
                                                  water_density, water_depth)
P_D_deep /= 1000
# Print the results
print("Equivalent deep water power:", (P_D_deep).astype(int), "kW")
print("Sinkage:", np.round(sinkage,2), "m")
print("Viscous resistance correction:", (R_V).astype(int), "N")