📄 计算并保存杆端力.bas
字号:
Attribute VB_Name = "Module9"
Option Explicit
DefInt I-N
DefSng B, D, F, X-Y
Dim x1, y1, x2, y2
Sub 计算内力()
Dim Filename1 As String
Call 方程编号
Call 形成荷载向量 ' 输出D()
Call 形成整体刚度矩阵 ' 输出A()
Call Gauss消去法解方程
Call 计算并保存杆端力(当前荷载)
Filename1 = Fname & "生成数据"
Call 输出文件(Filename1)
Form6.Show
End Sub
Sub 计算并保存杆端力(当前荷载 As String)
Dim DE(6), F(6), b(6, 6)
Dim sinA As Single, cosA As Single
Dim i, j, k, ii, kk, Ne, L As Single
Dim 内力 As 杆端内力
Open Fname & 当前荷载 & "内力" For Random As #100 Len = Len(内力)
For Ne = 1 To Ncell '逐个单元计算杆端力
Call ESTF(Ne, b()) '单元Ne的刚度矩阵
For j = 1 To 2
ii = Abs(NGN(Ne, j)) '单元两端的结点号
For k = 1 To 3
kk = Neq(ii, k) '单元两端结点位移相应的方程号
i = (j - 1) * 3 + k
If kk = 0 Then DE(i) = 0 Else DE(i) = D(kk)
Next k 'DE(1:6) 单元结点位移的6个分量
Next j
For i = 1 To 6
F(i) = 0 '等效结点力作用下,整体坐标下的杆端力
For k = 1 To 6
F(i) = F(i) + b(i, k) * DE(k)
Next k
Next i
Call SetT(Ne, L, sinA, cosA, x1, y1, x2, y2)
'单元Ne的杆端力保存在 "杆端力(Ne)"中,以便作内力图
With 杆端力(Ne) '等效结点力作用下,局部坐标下的杆端力
.N1 = F(1) * cosA + F(2) * sinA
.Q1 = -F(1) * sinA + F(2) * cosA
.M1 = F(3)
.N2 = F(4) * cosA + F(5) * sinA
.Q2 = -F(4) * sinA + F(5) * cosA
.M2 = F(6)
If Ld(Ne).Pq Like "[qptQPT]" Then '迭加上固端力,得最终杆端力
Call 求固端力(Ld(Ne), L, NGN(Ne, 1), NGN(Ne, 2))
.N1 = .N1 + 固端力.N1
.Q1 = .Q1 + 固端力.Q1
.M1 = .M1 + 固端力.M1
.N2 = .N2 + 固端力.N2
.Q2 = .Q2 + 固端力.Q2
.M2 = .M2 + 固端力.M2
End If
End With
Put #100, Ne, 杆端力(Ne)
Next Ne
Close #100
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -