⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 单刚_固端力_定位向量.bas

📁 钢筋混凝土框架结构设计计算源程序
💻 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 + -