上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
6.2 用重弦法求螺旋桨轴扭转振动固有频率计算程序的编制
设计一个具有保存计算结果功能的简化界面的程序,并将计算结果另存到文本文档中,这实际上是在数值计算程序常用界面的基础上,加上过滤器来建立保存计算的功能。这是在数值计算中用得最多的一种,如图6.4所示。
图6.4 窗体界面
常用窗体界面程序的编制见第3章,并编制计算程序。
单击标准工具栏上的按钮,立即弹出本程序界面,单击钮便弹出下拉菜单,如图6.5所示。
图6.5 下拉菜单
双击下拉菜单钮便弹出:
Private Sub项目计算_Click() End Sub
在事件过程名中编制如下源程序代码:
Private Sub 项目计算_Click() wrap$ = Chr$(13) + Chr$(10) vn1$ = " 版本号:用重弦法计算螺旋桨轴扭转振动固有频率\2014-11-1" vn2$ = " 版本特征:对重弦法与瑞利法固有频率计算的结果进行对比" Print Print vn1$ Print vn2$ Print Text1.Text = " -----用重弦法计算螺旋桨轴扭转振动固有频率计算记录----" string20 = string20 + " " + Text1.Text + vbCrLf + wrap$ Text2.Text = " " & vn1$ string20 = string20 + " " + Text2.Text + wrap$ Text3.Text = " " & vn2$ string20 = string20 + " " + Text3.Text + vbCrLf + wrap$ i1 = i1!: i = i!: i1l = i1l!: GIp = GIp! α = α!: i12f = i12f! 'f = f!: f02 = f02!: ω2 = ω2!: ω02 = ω02!: π = 3.1415926: xπ = π / 180: x180 = 180 / π '用瑞利法求得的螺旋桨轴的扭转振动固有频f g = 980 '重力加速度cms^2 r0 = 60 '简化螺旋桨的钢圆盘半径cm b = 10 '简化螺旋桨的钢圆盘厚度cm ρ = 0.008 '钢密度kg/cm3 m0 = (ρ / g) * b * π * r0 ^ 2 '简化螺旋桨的钢圆盘的质体 m0 kg·s^2 /cm i = (1 / 2) * m0 * r0 ^ 2 '螺旋桨的钢圆盘的惯性i, cm·kg·s^2 L01 = 50 * 10 ^ 2 '螺旋桨轴长度l cm d01 = 25 '螺旋桨轴直径cm r01 = d01 / 2 m01 = (ρ / g) * L01 * π * r01 ^ 2 '螺旋桨轴的质体 m01 kg·s^2 /cm i1l = (1 / 2) * m01 * (d01 ^ 2 / 4) '螺旋桨轴的惯性i1l, cm·kg·s^2 Gjm = 80 * 10 ^ 4 '钢的剪切模量80 GPa=80*10^4 MPa GIp = (Gjm / L01) * (π / 2) * r01 ^ 4 '螺旋桨轴抗扭刚度 cm·kg ω2 = GIp / (i + i1l / 3) '螺旋桨轴角速度平方弧度^2/s^2 f = (1 / (2 * π)) * Sqr(ω2) '螺旋桨轴扭转振动固有频率 周/s Print " 用瑞利法求得的螺旋桨轴的扭转振动固有频f如下" Print " 螺旋桨轴的长度L01="; L01 * 10 ^ -2; "m" Print " 简化螺旋桨的惯性i="; i; "cm·kg·s^2" Print " 桨轴的惯性i1L="; i1l; "cm·kg·s^2" Print " 桨轴抗扭刚度GIp="; GIp; " cm·kg" Print " 桨轴角速度平方ω2="; ω2; "弧度^2/s^2" Print " 桨轴扭转振动固有频率f="; f; "周/s" Print Text1.Text = " 用瑞利法计算螺旋桨轴固有频率" string20 = string20 + " " + Text1.Text + vbCrLf + wrap$ Text2.Text = " 螺旋桨轴的长度L01=" & L01 * 10 ^ -2 '其结果显示于文本文档 Text3.Text = " m " string20 = string20 + " " + Text2.Text + " " + Text3.Text + wrap$ Text4.Text = " 简化螺旋桨的钢圆盘的惯性i=" & i '其结果显示于文本文档 Text5.Text = " cm·kg·s^2" string20 = string20 + " " + Text4.Text + " " + Text5.Text + wrap$ Text6.Text = " 螺旋桨轴的惯性i1L=" & i1l ' 其结果显示于文本文档 Text7.Text = " cm·kg·s^2" string20 = string20 + " " + Text6.Text + " " + Text7.Text + wrap$ Text8.Text = " 螺旋桨轴抗扭刚度GIp=" & GIp '其结果显示于文本文档 Text9.Text = " cm·kg" string20 = string20 + " " + Text8.Text + " " + Text9.Text + wrap$ Text10.Text = " 螺旋桨轴角速度平方ω2==" & ω2 '其结果显示于文本文档 Text11.Text = " 弧度^2/s^2" string20 = string20 + " " + Text10.Text + " " + Text11.Text + wrap$ Text12.Text = " 螺旋桨轴扭转振动固有频率f=" & f '其结果显示于文本文档 Text13.Text = " 周/s" string20 = string20 + " " + Text12.Text + " " + Text13.Text + vbCrLf + wrap$ '用重弦法求得的螺旋桨轴的扭转振动固有频f Print " 用重弦法求螺旋桨轴的扭转振动固有频率" Print " 采用迭代法取误差iab最小的α求出固有频率" Text1.Text = " 用重弦法计算螺旋桨轴的扭转振动固有频率" string20 = string20 + " " + Text1.Text + wrap$ Text2.Text = " 采用迭代法取误差iab最小的α求出固有频率" string20 = string20 + " " + Text2.Text + vbCrLf + wrap$ '用瑞利法取得的数据反算未计算的每单位轴长的质量的惯性矩 i1 =5.67302313 * 10 ^ -4 sα = 0.841 sω = 2770 si1 = sα ^ 2 * (GIp / (i ^ 2 * sω)) si2 = ((π * d01 ^ 4) / 64) / (((1 * π * r01 ^ 2) * ρ) * 5000) '按题意即每单位轴长的质量的惯性矩 syz = si2 / (5.67302313 * 10 ^ -4) si3 = i1l / 5000 i1 = si1 jj = i1l / i '采用迭代法求固有频率: For qq = 1 To 5 α = 0.8415856 - qq * 10 ^ -8 '弦切线角α aa = Tan(α) bb = jj / α iab = Abs(aa - bb) 'α = i * Sqr(i1 * ω2 / GIp) ω02 = α ^ 2 * (GIp / (i ^ 2 * i1)) f02 = (1 / (2 * π)) * Sqr(ω02) i12f = Abs(f - f02) / f Print " α ="; α; "aa="; aa; "bb="; bb; "迭代误差iab="; iab Print " 迭代得的频率f02="; f02; "周/s" Text10.Text = " 迭代误差iab=" & iab '其结果显示于文本文档 Text11.Text = " α =" & α string20 = string20 + " " + Text10.Text + " " + Text11.Text + wrap$ Text12.Text = " 螺旋桨轴扭转振动固有频率f02=" & f02 '其结果显示于文本文档 Text13.Text = " 周/s" string20 = string20 + " " + Text12.Text + " " + Text13.Text + vbCrLf + wrap$ Next qq Print Print " 重弦法与瑞利法计算固有频率误差i12f="; i12f * 100; "%" Text12.Text = " 重弦法与瑞利法计算固有频率误差i12f=" & i12f * 100 '其结果显示于文本文档 Text13.Text = "%" string20 = string20 + " " + Text12.Text + " " + Text13.Text + vbCrLf + wrap$ CommonDialog1.Filter = "Text Files(*.TXT)|*.txt" CommonDialog1.ShowSave If CommonDialog1.FileName <> "" Then Open CommonDialog1.FileName For Output As #1 Print #1, string20 Close #1 End If End Sub Private Sub 退出_Click() End End Sub