1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| Function Reaction_Bolt_kN(N_Bolt As Integer, Theta_0_deg As Double, Theta_deg As Double, Bolt_Circle_Diameter_m As Double, Mx_kNm As Double, My_kNm As Double) As Double
Dim X As Double
Dim Y As Double
Dim Pi As Double
Dim XX As Double
Dim YY As Double
Dim Rj As Double
X = 0
Y = 0
Pi = Application.Pi()
XX = 0
YY = 0
Rj = 0
Reaction_Bolt_kN = 0
For i = 0 To (N_Bolt - 1)
X = Bolt_Circle_Diameter_m / 2 * Cos((Theta_0_deg + Theta_deg * i) / 180 * Pi)
Y = Bolt_Circle_Diameter_m / 2 * Sin((Theta_0_deg + Theta_deg * i) / 180 * Pi)
XX = XX + X * X
YY = YY + Y * Y
Next i
For j = 0 To (N_Bolt - 2)
X = Bolt_Circle_Diameter_m / 2 * Cos((Theta_0_deg + Theta_deg * j) / 180 * Pi)
Y = Bolt_Circle_Diameter_m / 2 * Sin((Theta_0_deg + Theta_deg * j) / 180 * Pi)
Rj = -My_kNm * X / XX + Mx_kNm * Y / YY
If (-Abs(Rj) < Reaction_Bolt_kN < Abs(Rj)) Then
Reaction_Bolt_kN = Abs(Rj)
End If
Next j
End Function
Function Max_Reaction_Bolt_kN(N_Bolt As Integer, Theta_0_deg As Double, Theta_deg As Double, Bolt_Circle_Diameter_m As Double, LC, Mx_kNm As Double, My_kNm As Double)
X = UBound(LC)
Y = UBound(Mx_kNm)
Z = UBound(My_kNm)
If ((X <> Y) Or (X <> Z)) Then
Max_Reaction_kN(1) = "Error"
Max_Reaction_kN(2) = "Error"
Max_Reaction_kN(3) = "Error"
Max_Reaction_kN(4) = "Error"
Else
For i = 1 To X
R = Reaction_Bolt_kN(N_Bolt, Theta_0_deg, Theta_deg, Bolt_Circle_Diameter_m, Mx_kNm(i), My_kNm(i))
If Max_Reaction_kN(4) < R Then
Max_Reaction_kN(1) = LC(i)
Max_Reaction_kN(2) = Mx_kN(i)
Max_Reaction_kN(3) = My_kN(i)
Max_Reaction_kN(4) = R
End If
Next
End If
End Function |
Partager