风浪流中,水面船舶一般受到波浪的影响最大。船舶水动力模型试验需要满足:
除此之外,还有热力学相似、初始条件相似、边界条件相似。
关于动力相似,纳维尔-斯托克斯方程组中动量方程主要由惯性项、压力项、粘滞项和重力(体积力)项组成。形成的动力无量纲数有:
- 弗劳德数(\( 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 获取周期性响应幅值
44.2 船舶运动的3个空间坐标系
- 固地坐标系:\( O-XYZ \);
- 固船坐标系:\( G-XYZ \);
- 参考坐标系:\( R-XYZ \)。
44.3 水动力学中的典型问题
- 静、动稳性:研究船舶是否满足不倾覆条件;
- 抗沉性:研究舱室分舱是否满足几类破舱抗沉;
- 波浪载荷:研究湿表面外载荷(包括砰击入水载荷),用于校验结构强度;
- 阻力、兴波:研究船舶阻力、推进效率、快速性;
- 回转性:研究船舶控制和回转水动力;
- 水动力干扰:研究船船、船岸等水动力影响;
- 螺旋桨推进:螺旋桨结构强度和推进效率。