Contents

A.Ch44-船舶水动力模型试验

风浪流中,水面船舶一般受到波浪的影响最大。船舶水动力模型试验需要满足:

  • 几何相似;
  • 运动相似;
  • 动力相似。

除此之外,还有热力学相似、初始条件相似、边界条件相似。

关于动力相似,纳维尔-斯托克斯方程组中动量方程主要由惯性项、压力项、粘滞项和重力(体积力)项组成。形成的动力无量纲数有:

  • 弗劳德数(\( Fr = \frac{U}{\sqrt{gL}} \)),其中 \( U, L \) 是特征速度和特征长度,\( g \) 是重力加速度,表示惯性力与重力的相对重要性。
  • 雷诺数(\( Re = \frac{\rho U L}{\mu} \)),其中 \( \rho \) 为密度,\( \mu \) 为粘性系数,表示惯性力与粘性力的比例。
  • 欧拉数(\( Eu = \frac{p}{\rho U^2} \)),其中 \( p \) 为压力,表示压力与惯性力的比例。

可以使用特征长度\( L \)、特征速度\( U \)、特征时间\( t = \frac{L}{U} \)等来定义无量纲变量。由运动相似和动力相似可知,假设模型缩尺比为 \( \lambda \),则实船与模型的转换关系为:

物理量实船/模型
长度\( \lambda \)
速度\( \lambda^{\frac{1}{2}} \)
时间\( \lambda^{\frac{1}{2}} \)

44.1 时序分析

44.1.1 计算船舶响应的 1/3 有义峰值到峰值

船舶专业是一个传统工科专业,往往需要掌握流体力学、结构力学、 水动力学等知识,但有些脚手架代码都是私有的、不共享的, 需要不断地重新造车轮子。

此处使用 Python 语言,基于给定的不规则波浪的时间序列数据, 计算时序的幅值谱、能量谱,并获取 1/3 有义峰值到峰值(P-P, Peak-to-Peak)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Copyright (c) 2023-2024, ZUO Zhihua (zuo.zhihua@foxmail.com)
# hs.py
# 基于给定的时间序列 t, x , 获取时序的幅值谱, 能量谱, 并获取 1/3 有义P-P
import numpy as np
from scipy.fftpack import fft
import matplotlib.pyplot as plt
import scienceplots
from scipy.integrate import trapezoid

data = np.loadtxt("202310-time-series.csv", delimiter=",", skiprows=1, encoding="utf-8")
t = data[:, 0]
x = data[:, 1]

x = x - np.mean(x)

ts = t[1] - t[0]  # 采样时间间隔
fs = 1 / ts  # 采样频率
N = len(t)  # 采样点数
df = fs / N  # 频率分辨率

# 快速傅里叶变换
X_fft = fft(x)
X_amplitude = np.abs(X_fft)[: N // 2 + 1] / N * 2
Fs = np.arange(0, N // 2 + 1) * df

xx = np.argmax(X_amplitude)
yy = max(X_amplitude)

print("max Amplitude frequency (Hz) = ", Fs[xx])
print("max Amplitude = ", yy)

# 转化为波能谱
X_energy = X_amplitude**2 / 2 / df  # S(\omega)*d\omega = \frac{1}{2}\zeta(\omega)^2

# 求解波能谱的0阶谱矩
area = trapezoid(X_energy, Fs)  # 使用梯形法求解面积 (0 阶矩)
print("area    = ", area)  # 0阶谱矩
print("h_{1/3} = ", 4 * np.sqrt(area))  # 1/3 有义P-P
print("a_{1/3} = ", 2 * np.sqrt(area))  # 1/3 有义振幅

# 绘制时序幅值谱与波能谱
with plt.style.context(["science", "no-latex"]):
    fig, axes = plt.subplots(figsize=(3, 1.7), nrows=1, ncols=1)
    axes.plot(Fs, X_amplitude, label="Amplitude")
    axes.plot(Fs[xx], yy, "x", label="Max Amplitude")
    axes.set_xlabel("Frequency (Hz)")
    axes.set_ylabel("Amplitude")
    plt.legend(facecolor="white", framealpha=0.75, frameon=True, loc="lower right")
    plt.show()

示例 202310-time-series.csv 文件内容如下:

1
2
3
4
5
time, jizhuangxiang
0.00 ,189.69
0.02 ,182.45
0.04 ,177.13
...

44.1.2 使用 AMPD 获取周期性响应幅值

1
#TODO: 添加代码

44.2 船舶运动的3个空间坐标系

  1. 固地坐标系:\( O-XYZ \);
  2. 固船坐标系:\( G-XYZ \);
  3. 参考坐标系:\( R-XYZ \)。

44.3 水动力学中的典型问题

  1. 静、动稳性:研究船舶是否满足不倾覆条件;
  2. 抗沉性:研究舱室分舱是否满足几类破舱抗沉;
  3. 波浪载荷:研究湿表面外载荷(包括砰击入水载荷),用于校验结构强度;
  4. 阻力、兴波:研究船舶阻力、推进效率、快速性;
  5. 回转性:研究船舶控制和回转水动力;
  6. 水动力干扰:研究船船、船岸等水动力影响;
  7. 螺旋桨推进:螺旋桨结构强度和推进效率。