Đây là code cho hàm tính cột 1 phương
Option Explicit
Dim Rbc, Ebc
Dim Rsc, Es
Dim Lim_vungnen
Public Sub Beton_Steel(beton, thep, Kbt, Kthep) 'Unit Mpa
If beton = "B12.5" Then
Rbc = 7.5 * Kbt: Ebc = 21000
ElseIf beton = "B15" Then
Rbc = 8.5 * Kbt: Ebc = 23000
ElseIf beton = "B20" Then
Rbc = 11.5 * Kbt: Ebc = 27000
ElseIf beton = "B22.5" Then
Rbc = 13 * Kbt: Ebc = 29000
ElseIf beton = "B25" Then
Rbc = 14.5 * Kbt: Ebc = 30000
Else
Rbc = 17 * Kbt: Ebc = 32500
End If
If thep = "CII(AII)" Then
Rsc = 280 * Kthep: Es = 210000
Else
Rsc = 365 * Kthep: Es = 200000
End If
Lim_vungnen = (0.85 - 0.008 * Rbc) / (1 + Rsc / 400 * (1 - (0.85 - 0.008 * Rbc) / 1.1))
End Sub
' Kbd ke den lien ket hai dau Frame
' Kdh ke den tai trong dai han
' He so dieu kien lam viec Kbt, Kthep
' Kbt, Kthep he so dieu kien lam viec
Public Function COT(n, M, L, b, h, a, beton, thep, Kbd, Kdh, Kbt, Kthep)
Dim lo, nuy, S, ea, e1, eo, Teta, Ncr, e, X1, Za, MuyMin
Dim Fatt, Fa
Dim No, Efxilon, Phi1, Gama1, Ko, K1, K2, Anpha2, Gama2, K, A2, D2, Csi2, x ' Phuong Trinh bac 3
Dim tam1, tam2 ' use khi LT be va PT bac 3 khong giai duoc
' He don vi N, cm
'Kiem tra tiet dien la rectangle
If b * h = 0 Then
COT = "Tron" ' Tiet dien hinh tron chua tinh
Exit Function
End If
' Nhap mac be tong va thep
Call Beton_Steel(beton, thep, Kbt, Kthep)
lo = L * Kbd
Select Case lo / (0.288 * b)
Case Is >= 83
MuyMin = 0.25
Case Is > 35
MuyMin = 0.2
Case Is > 17
MuyMin = 0.1
Case Is <= 17
MuyMin = 0.05
End Select
Fatt = 2 * MuyMin * b * (h - a) / 100 ' unit cm2
Fa = Fatt
ea = WorksheetFunction.Max(L / 600, h / 30, 1)
e1 = M / n * 100
' If Lienket = "Sieu tinh" Then
eo = WorksheetFunction.Max(ea, e1)
'Else
' eo = ea + e1 ' He khop-khop
' End If
S = 0.1 + 0.11 / (0.1 + WorksheetFunction.Max(eo / h, 0.5 - 0.01 * lo / h - 0.01 * Rbc))
'-----------------------------------------------
' Tinh nuy
If lo / h <= 8 Then
nuy = 1
' Khoang cach tu luc doc N den trong tam Fa
e = nuy * eo + h / 2 - a
' So bo xac dinh chieu cao vung nen X1
X1 = n / (Rbc * b) * 10
' Cac truong hop co the xay ra cua chieu cao vung nen X1
Za = ((h - a) - a)
Select Case X1
Case Is > Lim_vungnen * (h - a) ' Lech tam be
' Giai phuong trinh bac 3 de xac dinh Csi2 (Trang 45 Nguyen Dinh Cong)
No = n * 10 / (Rbc * b * (h - a)) ' khong don vi. He so trung gian de giai phuong trinh
Efxilon = e / (h - a)
'Phi1 = 0.5 * (1 - Lim_vungnen)
Gama1 = Za / (h - a)
' Cac he so k cua phuong trinh bac 3 x3+K2*X2+K1*X+Ko=0
'Ko = 2 * No * (2 * Phi1 * Efxilon - Gama1 * Phi1 - Efxilon)
'K1 = 2 * (1 + Phi1 * Gama1 + No * Efxilon - 2 * Phi1)
'K2 = (-1) * (Lim_vungnen + 2)
' Giai phuong trinh theo Phu luc 5 Nguyen Dinh Cong
'Anpha2 = K1 - K2 * K2 / 3
'Gama2 = 2 * K2 * K2 * K2 / 27 + Ko - K2 * K1 / 3
'K = Gama2 * Gama2 + 4 * WorksheetFunction.Power(Anpha2 / 3, 3)
' Kiem soat gia tri K truoc khi dung ham Sqr
'If K > 0 Then
'A2 = WorksheetFunction.Power((Gama2 + Sqr(K)) / 2, 1 / 3)
'D2 = WorksheetFunction.Power((Gama2 - Sqr(K)) / 2, 1 / 3)
'Nghiem cua phuong trinh
'Csi2 = -(A2 + D2) - K2 / 3
' Dieu kien chan cua Csi2
'If Csi2 < Lim_vungnen Then Csi2 = Lim_vungnen
'If Csi2 > 1 Then Csi2 = 1
' Chieu cao vung nen tinh toan
' x = Csi2 * (h - a)
'Else ' Use formula 5-28 pape 145 of Pham Quang Minh
' Tinh gan dung theo trang 145 Pham Quang Minh
tam1 = ((1 - Lim_vungnen) * Gama1 * No + 2 * Lim_vungnen * (No * Efxilon - 0.48)) * (h - a)
tam2 = (1 - Lim_vungnen) * Gama1 + 2 * (No * Efxilon - 0.48)
x = tam1 / tam2
If x > h - a Then x = h - a
If x < Lim_vungnen * (h - a) Then x = Lim_vungnen * (h - a)
'End If
Fa = (n * 1000 * e - 100 * Rbc * b * x * (h - a - 0.5 * x)) / (100 * Rsc * (h - a - a))
Case Is >= 2 * a ' Lech tam lon
Fa = n * (e + 0.5 * X1 - (h - a)) / (Rsc * Za) * 10 ' Unit cm2
Case Is < 2 * a
Fa = n * (e - Za) / (Rsc * Za) * 10 'unit cm2
End Select
'--------------------------------------------------------------
'Loop do nuy khac 1
Else
Do
Fatt = 0.5 * (Fatt + Fa)
Ncr = 6.4 * Ebc / (lo * lo) * (S * b * h * h * h / 12 / Kdh _
+ Es / Ebc * 2 * Fatt * (0.5 * h - a) * (0.5 * h - a)) * 100 'Unit N; 100 he so chuyen doi don vi
' Test kha nang chiu luc cua column
If n * 1000 > Ncr Then ' Luc nen > kha nang cua cot
If Fatt > 3 * b * (h - a) / 100 Then ' Lon hon ham luong max
COT = "Redo"
Exit Function
Else
Fatt = Fatt + 0.1
Fa = Fa + 0.1
GoTo LastLine
End If
End If
nuy = 1 / (1 - n * 1000 / Ncr)
' Khoang cach tu luc doc N den trong tam Fa
e = nuy * eo + h / 2 - a
' So bo xac dinh chieu cao vung nen X1
X1 = n / (Rbc * b) * 10
' Cac truong hop co the xay ra cua chieu cao vung nen X1
Za = ((h - a) - a)
Select Case X1
Case Is > Lim_vungnen * (h - a) ' Lech tam be
'****************************************************
' Giai phuong trinh bac 3 de xac dinh Csi2 (Trang 45 Nguyen Dinh Cong)
No = n * 10 / (Rbc * b * (h - a)) ' khong don vi. He so trung gian de giai phuong trinh
Efxilon = e / (h - a)
'Phi1 = 0.5 * (1 - Lim_vungnen)
Gama1 = Za / (h - a)
' Cac he so k cua phuong trinh bac 3 x3+K2*X2+K1*X+Ko=0
'Ko = 2 * No * (2 * Phi1 * Efxilon - Gama1 * Phi1 - Efxilon)
'K1 = 2 * (1 + Phi1 * Gama1 + No * Efxilon - 2 * Phi1)
'K2 = (-1) * (Lim_vungnen + 2)
' Giai phuong trinh theo Phu luc 5 Nguyen Dinh Cong
'Anpha2 = K1 - K2 * K2 / 3
'Gama2 = 2 * K2 * K2 * K2 / 27 + Ko - K2 * K1 / 3
'K = Gama2 * Gama2 + 4 * WorksheetFunction.Power(Anpha2 / 3, 3)
' Kiem soat gia tri K truoc khi dung ham Sqr
'If K > 0 Then
' A2 = WorksheetFunction.Power((Gama2 + Sqr(K)) / 2, 1 / 3)
'D2 = WorksheetFunction.Power((Gama2 - Sqr(K)) / 2, 1 / 3)
'Nghiem cua phuong trinh
'Csi2 = -(A2 + D2) - K2 / 3
' Dieu kien chan cua Csi2
'If Csi2 < Lim_vungnen Then Csi2 = Lim_vungnen
' If Csi2 > 1 Then Csi2 = 1
' Chieu cao vung nen tinh toan
' x = Csi2 * (h - a)
'Else ' Use formula 5-28 pape 145 of Pham Quang Minh
'***************************************
' Tinh gan dung theo trang 145 Pham Quang Minh
tam1 = ((1 - Lim_vungnen) * Gama1 * No + 2 * Lim_vungnen * (No * Efxilon - 0.48)) * (h - a)
tam2 = (1 - Lim_vungnen) * Gama1 + 2 * (No * Efxilon - 0.48)
x = tam1 / tam2
If x > h - a Then x = h - a
If x < Lim_vungnen * (h - a) Then x = Lim_vungnen * (h - a)
'End If
Fa = (n * 1000 * e - 100 * Rbc * b * x * (h - a - 0.5 * x)) / (100 * Rsc * (h - a - a))
Case Is >= 2 * a ' Lech tam lon
Fa = n * (e + 0.5 * X1 - (h - a)) / (Rsc * Za) * 10 ' Unit cm2
Case Is < 2 * a
Fa = n * (e - Za) / (Rsc * Za) * 10 'unit cm2
End Select
'Kiem soat gia tri Fa truoc khi loop
' Khi Fa <0 thi loop khong co y nghia. Tuy nhien khi loop fa<0 thi ket qua Fa cuoi se <0
' nen khong anh huong toi ket qua cuoi cung ( Fa<0 thi chon muymin), nen khong sua code
LastLine:
Loop Until Abs(Fa - Fatt) < 0.01
End If
'-------------------------------------------------------
COT = Fa
End Function
Có gì thắc mắc thì liên lạc theo
SDT: 0914172224 Quang