calc_clearances 函数说明文档

功能描述

该函数用于计算模型肋部的间隙和沾湿长度。通过分析模型轮廓与空腔轮廓的相对位置,确定模型各肋部的上下间隙以及沾湿部分的长度和面积。

参数说明

参数名 类型 描述
Nview int 可视化窗口中的步数
Ncon int 模型的节数
HX float 计算步长
Xpr ndarray 空腔点的X坐标数组
Ypr1 ndarray 下空腔轮廓的Y坐标数组
Ypr2 ndarray 上空腔轮廓的Y坐标数组
Xmod ndarray 模型轮廓点的X坐标数组
Ymod ndarray 模型轮廓点的Y坐标数组
RibTan ndarray 模型各节的边缘线角度的正切值
Part ndarray 模型各节的无量纲长度
Xc float 模型质心的无量纲X坐标
BaseR ndarray 模型各节末端的无量纲半径数组

返回值

返回值名 类型 描述
fh1 float 最小下间隙(正值表示浸没深度)
fh2 float 最小上间隙(正值表示浸没深度)
fdl1 float 下部沾湿长度
fdl2 float 上部沾湿长度
Sw1 float 下部沾湿面积
Sw2 float 上部沾湿面积
Imin1 int 下间隙最小值对应的肋编号
Imin2 int 上间隙最小值对应的肋编号
FlagAhead bool 是否模型前端超出质心的标志

数学公式

下间隙计算

对于每个模型肋部 k,计算下间隙 Cl1[k]

Cl1[k]=Y1riYmod[2Ncon+2k]\text{Cl1}[k] = Y1ri - Ymod[2Ncon + 2 - k]

其中,Y1ri 是通过线性插值得到的空腔轮廓Y坐标:

Y1ri=Ypr1[i1]+(Xmod[2Ncon+2k]Xpr[i1])HX×(Ypr1[i]Ypr1[i1])Y1ri = Ypr1[i-1] + \frac{(Xmod[2Ncon + 2 - k] - Xpr[i-1])}{HX} \times (Ypr1[i] - Ypr1[i-1])

下部沾湿长度计算

如果存在接触(Cl1[k] > 0),计算下部沾湿长度 fdl1

fdl1=Xmod[2Ncon+2k]Xpr[i]fdl1 = Xmod[2Ncon + 2 - k] - Xpr[i]

沾湿面积 Sw1

Sw1=fdl1×2×BaseR[k]×fh1Sw1 = fdl1 \times \sqrt{2 \times BaseR[k] \times fh1}

上间隙计算

对于每个模型肋部 k,计算上间隙 Cl2[k]

Cl2[k]=Ymod[k+1]Y2ri\text{Cl2}[k] = Ymod[k + 1] - Y2ri

其中,Y2ri 是通过线性插值得到的空腔轮廓Y坐标:

Y2ri=Ypr2[i1]+(Xmod[k+1]Xpr[i1])HX×(Ypr2[i]Ypr2[i1])Y2ri = Ypr2[i-1] + \frac{(Xmod[k + 1] - Xpr[i-1])}{HX} \times (Ypr2[i] - Ypr2[i-1])

上部沾湿长度计算

如果存在接触(Cl2[k] > 0),计算上部沾湿长度 fdl2

fdl2=Xmod[k+1]Xpr[i]fdl2 = Xmod[k + 1] - Xpr[i]

沾湿面积 Sw2

Sw2=fdl2×2×BaseR[k]×fh2Sw2 = fdl2 \times \sqrt{2 \times BaseR[k] \times fh2}

示例调用

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
# 示例数据
Nview = 100
Ncon = 3
HX = 0.1
Xpr = np.linspace(0, 10, Nview)
Ypr1 = np.sin(Xpr)
Ypr2 = np.cos(Xpr)
Xmod = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0])
Ymod = np.array([0.0, 0.5, 1.0, 0.5, 0.0, -0.5, -1.0, -0.5, 0.0, 0.5, 1.0])
RibTan = np.array([0.1, 0.2, 0.3])
Part = np.array([0.0, 0.3, 0.6, 1.0])
Xc = 0.5
BaseR = np.array([0.1, 0.2, 0.3])

# 调用函数
fh1, fh2, fdl1, fdl2, Sw1, Sw2, Imin1, Imin2, FlagAhead = calc_clearances(
Nview, Ncon, HX, Xpr, Ypr1, Ypr2, Xmod, Ymod, RibTan, Part, Xc, BaseR
)

# 输出结果
print(f"最小下间隙: {fh1}")
print(f"最小上间隙: {fh2}")
print(f"下部沾湿长度: {fdl1}")
print(f"上部沾湿长度: {fdl2}")
print(f"下部沾湿面积: {Sw1}")
print(f"上部沾湿面积: {Sw2}")
print(f"下间隙最小值对应的肋编号: {Imin1}")
print(f"上间隙最小值对应的肋编号: {Imin2}")
print(f"是否模型前端超出质心: {FlagAhead}")

备注

该函数实现了Fortran子程序CalcClearances的核心功能,包括计算模型肋部的间隙和沾湿长度。通过详细的注释和参数说明,使其更易于理解和使用。变量名称沿用了原程序的命名,以便于对照和理解。

1