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]=Y1ri−Ymod[2Ncon+2−k]
其中,Y1ri 是通过线性插值得到的空腔轮廓Y坐标:
Y1ri=Ypr1[i−1]+HX(Xmod[2Ncon+2−k]−Xpr[i−1])×(Ypr1[i]−Ypr1[i−1])
下部沾湿长度计算
如果存在接触(Cl1[k] > 0),计算下部沾湿长度 fdl1:
fdl1=Xmod[2Ncon+2−k]−Xpr[i]
沾湿面积 Sw1:
Sw1=fdl1×2×BaseR[k]×fh1
上间隙计算
对于每个模型肋部 k,计算上间隙 Cl2[k]:
Cl2[k]=Ymod[k+1]−Y2ri
其中,Y2ri 是通过线性插值得到的空腔轮廓Y坐标:
Y2ri=Ypr2[i−1]+HX(Xmod[k+1]−Xpr[i−1])×(Ypr2[i]−Ypr2[i−1])
上部沾湿长度计算
如果存在接触(Cl2[k] > 0),计算上部沾湿长度 fdl2:
fdl2=Xmod[k+1]−Xpr[i]
沾湿面积 Sw2:
Sw2=fdl2×2×BaseR[k]×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的核心功能,包括计算模型肋部的间隙和沾湿长度。通过详细的注释和参数说明,使其更易于理解和使用。变量名称沿用了原程序的命名,以便于对照和理解。