calc_unsteady_cavity 函数说明文档
功能描述
该函数用于计算非定常轴对称空腔的形状和空腔轴线的弯曲。通过考虑模型运动、空化数变化以及水压力扰动等因素,更新空腔半径和轴线位置。
参数说明
| 参数名 |
类型 |
描述 |
PI |
float |
圆周率 |
Rn |
float |
空化器无量纲半径 |
HX |
float |
计算步长 |
Jend |
int |
当前计算步 |
V0 |
float |
模型速度 |
FlagPath |
bool |
是否为路径计算标志 |
T |
ndarray |
时间数组 |
XcBeg |
ndarray |
起始空腔边界数组 |
V |
ndarray |
速度数组 |
AK1 |
float |
经验常数 |
w2 |
float |
相关参数 |
SG |
ndarray |
空化数数组 |
P1w |
ndarray |
水压力扰动数组 |
Rcav |
ndarray |
空腔半径数组 |
DS |
ndarray |
空腔截面膨胀速度数组 |
Ypr1 |
ndarray |
下空腔轮廓Y坐标数组 |
Ypr2 |
ndarray |
上空腔轮廓Y坐标数组 |
Yax0 |
ndarray |
空腔轴线Y坐标数组 |
Cx0 |
float |
阻力系数 |
DeltaRad |
float |
空化器角度的弧度值 |
Lc0 |
float |
空腔长度相关参数 |
返回值
| 返回值名 |
类型 |
描述 |
Rcav |
ndarray |
更新后的空腔半径数组 |
Ypr1 |
ndarray |
更新后的下空腔轮廓Y坐标数组 |
Ypr2 |
ndarray |
更新后的上空腔轮廓Y坐标数组 |
数学公式
空腔半径更新
对于每个计算步 i,计算空腔截面积 Si:
Si=Sagr+AK1⋅work1⋅(w2⋅VJend+1−i−SGJend+1−i⋅work1)
其中,work1 是时间相关的修正项:
work1=0.5⋅(TJend−VJendXcBeg4−TJend+1−i)
水压力扰动修正
空腔截面积 Si 由于水压力扰动进行修正:
Si=Si−AK1⋅HX⋅DSP1/4
其中,DSP1 是水压力扰动的累积项:
DSP1=DSP1+(TJend−TJend+1−i)⋅P1wJend+1−i+(TJend−TJend+2−i)⋅P1wJend+2−i
空腔截面膨胀速度
空腔截面膨胀速度 DS 计算如下:
DSi=AK1⋅(0.5⋅w2⋅VJend+1−i−work1⋅SGJend+1−i)
水压力扰动引起的变形项
空腔截面膨胀速度 DS 由于水压力扰动进行修正:
DSi=DSi−AK1⋅HX⋅DDSP1/4
其中,DDSP1 是水压力扰动的累积项:
DDSP1=DDSP1+P1wJend+1−i+P1wJend+2−i
空腔轴线弯曲
空腔轴线弯曲由空化器侧向力和位移引起,计算如下:
xi=(i−1)⋅HX
Cy=−0.5⋅Cx0⋅sin(2⋅(AlphaJend−i+1+DeltaRad))
hfi=−Cy⋅Rn⋅(0.46−VJend−i+12SGJend−i+1+Lc0⋅Rn2⋅xi)
Ypr2i=Yax0Jend−i+1+hfi+RcavJend,i
Ypr1i=Yax0Jend−i+1+hfi−RcavJend,i
示例调用
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
| PI = np.pi Rn = 0.1 HX = 0.1 Jend = 10 V0 = 10.0 FlagPath = False T = np.linspace(0, 1, Jend) XcBeg = np.array([0.0, 0.1, 0.2, 0.3]) V = np.full(Jend, V0) AK1 = 0.1 w2 = 0.2 SG = np.full(Jend, 0.5) P1w = np.zeros(Jend) Rcav = np.zeros((Jend, Jend)) DS = np.zeros(Jend) Ypr1 = np.zeros(Jend) Ypr2 = np.zeros(Jend) Yax0 = np.zeros(Jend) Cx0 = 0.8275 DeltaRad = np.deg2rad(10) Lc0 = 1.0
calculator = UnsteadyCavityCalculator(PI, Rn, HX, Jend, V0, FlagPath, T, XcBeg, V, AK1, w2, SG, P1w, Rcav, DS, Ypr1, Ypr2, Yax0, Cx0, DeltaRad, Lc0)
calculator.calc_unsteady_cavity()
print("更新后的空腔半径数组:") print(calculator.Rcav) print("更新后的下空腔轮廓Y坐标数组:") print(calculator.Ypr1) print("更新后的上空腔轮廓Y坐标数组:") print(calculator.Ypr2)
|
备注
该类实现了Fortran子程序CalcUnsteadyCavity的核心功能,包括计算非定常轴对称空腔的形状和空腔轴线的弯曲。通过详细的注释和参数说明,使其更易于理解和使用。变量名称沿用了原程序的命名,以便于对照和理解。在子函数内部,先从self中取出变量到最前,在计算完成后将需要更改的变量重新赋值回self,并加上了变量标注,以提升可读性。