📄 单刚_固端力_定位向量.bas
字号:
Attribute VB_Name = "Module8"
Option Explicit
DefInt C, I-N
DefSng X-Y
Dim x1, y1, x2, y2
Sub 求固端力(Ld As 单元荷载, L As Single, 端1 As Integer, 端2 As Integer)
Dim W As Single, aa As Single, pw As Single, α As Single
W = Ld.s
aa = Ld.Po
With 固端力 '两端刚结的单元的固端力
Select Case Ld.Pq
Case "q", "Q"
pw = W * (aa / L) ^ 3
.Q2 = pw * (2 * L - aa) / 2
.M2 = -pw * (4 * L - 3 * aa) * L / 12
.Q1 = W * aa - .Q2
.M1 = .Q1 * L - W * aa * (L - aa / 2) - .M2
Case "T", "t"
.N1 = 0: .N2 = 0
.Q1 = W * (L - aa) / 2
.Q2 = .Q1
α = aa / L
.M1 = W * L * L * (1 - 2 * α * α + α ^ 3) / 12
.M2 = -.M1
Case "P", "p"
pw = W * aa ^ 2
.M2 = -pw * (L - aa) / L ^ 2
.Q2 = pw * (3 * L - 2 * aa) / L ^ 3
.Q1 = W - .Q2
.M1 = W * aa * (L - aa) ^ 2 / L ^ 2
End Select
'由两端刚结的单元的固端力,求两端铰结的单元的固端力
If 端1 < 0 And 端2 < 0 Then
.Q1 = .Q1 - (.M1 + .M2) / L
.Q2 = .Q1 + (.M1 + .M2) / L
.M1 = 0
.M2 = 0
'由两端刚结的单元的固端力,求端1铰结的单元的固端力
ElseIf 端1 < 0 Then
.Q1 = .Q1 - 1.5 * .M1 / L
.Q2 = .Q2 + 1.5 * .M1 / L
.M2 = .M2 - .M1 / 2
.M1 = 0
'由两端刚结的单元的固端力,求端2铰结的单元的固端力
ElseIf 端2 < 0 Then
.Q2 = .Q2 + 1.5 * .M2 / L
.Q1 = .Q1 - 1.5 * .M2 / L
.M1 = .M1 - .M2 / 2
.M2 = 0
End If
End With
End Sub
Sub SetT(Ne As Integer, L As Single, sinA As Single, cosA As Single _
, x1 As Single, y1 As Single, x2 As Single, y2 As Single)
Dim dx As Single, dy As Single
'计算单元Ne 的长度L、倾角的Sin & Cos值,端点座标
x1 = XY(Abs(NGN(Ne, 1)), 1)
y1 = XY(Abs(NGN(Ne, 1)), 2)
x2 = XY(Abs(NGN(Ne, 2)), 1)
y2 = XY(Abs(NGN(Ne, 2)), 2)
dx = x2 - x1
dy = y2 - y1
L = Sqr(dx ^ 2 + dy ^ 2)
sinA = dy / L
cosA = dx / L
End Sub
Sub VEC(Ne As Integer, NV() As Integer)
Dim i, j
For i = 1 To 2 ' 单元定位向量
For j = 1 To 3
NV((i - 1) * 3 + j) = Neq(Abs(NGN(Ne, i)), j)
Next j
Next i
End Sub
Sub ESTF(Ne As Integer, B() As Single)
'输出单元Ne整体坐标下的刚度矩阵
Dim ea As Single, ei As Single, sinA As Single, cosA As Single
Dim C1, C2, C3, C4, C5, C6, i, j
Dim L As Single
Call SetT(Ne, L, sinA, cosA, x1, y1, x2, y2)
ea = EAI(Ne, 1) * EAI(Ne, 2)
ei = EAI(Ne, 1) * EAI(Ne, 3)
C1 = 12: C2 = 6: C4 = C2
C3 = 4: C6 = C3: C5 = 2
B(1, 1) = ea * cosA * cosA / L + C1 * ei * sinA * sinA / L ^ 3: B(4, 4) = B(1, 1)
B(2, 1) = (ea / L - C1 * ei / L ^ 3) * cosA * sinA: B(5, 4) = B(2, 1)
B(2, 2) = ea * sinA * sinA / L + C1 * ei * cosA * cosA / L ^ 3: B(5, 5) = B(2, 2)
B(3, 1) = -C2 * ei * sinA / L ^ 2
B(3, 2) = C2 * ei * cosA / L ^ 2
B(3, 3) = C3 * ei / L
B(4, 1) = -B(1, 1)
B(4, 2) = -B(2, 1)
B(4, 3) = -B(3, 1)
B(5, 1) = -B(2, 1)
B(5, 2) = -B(2, 2)
B(5, 3) = -B(3, 2)
B(6, 1) = -C4 * ei * sinA / L ^ 2
B(6, 2) = C4 * ei * cosA / L ^ 2
B(6, 3) = C5 * ei / L
B(6, 4) = -B(6, 1)
B(6, 5) = -B(6, 2)
B(6, 6) = C6 * ei / L
For i = 1 To 6 '单元刚度矩阵的上三角部分
For j = i + 1 To 6
B(i, j) = B(j, i)
Next j
Next i
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -