Programme File
Programme File
P, EEND, HL, H, B, AS Q, AST, D1, D2, EC, K1, K2, K3, C, Cs, O, Ea, E(250, 500), S(250, 500) As Double Dim LP(500, 250), CE(500, 250), X(500, 250), TB(500, 250), R(500, 250), TOF(500, 250), TTA(500, 250), DEF(500, 250), EAS(500), EASY(500) As Double Sub Programme() 'start --------- get values of inputs Sheets("Input").Select HL = Range("F3").Value NV = Range("F4").Value H = Range("F7").Value B = Range("F8").Value ASQ = Range("F9").Value AST = Range("F11").Value D1 = Range("F10").Value D2 = Range("F12").Value P = Range("F13").Value N = Range("F16").Value DCE = Range("F17").Value EEND = Range("F18").Value CCSO = Range("F22").Value CCEO = Range("F23").Value CCEU = Range("F24").Value CTSO = Range("F25").Value CTEO = Range("F26").Value CTEU = Range("F27").Value EO = Range("F28").Value SSY = Range("F30").Value SEY = Range("F31").Value K1 = Range("F33").Value K2 = Range("F34").Value K3 = Range("F35").Value C = Range("F36").Value Cs = Range("F37").Value O = Range("F38").Value 'End ------ Get value of inputs ' Start -------- Calculation EC = EO / 1000000# DH = H / N DHL = HL / NV CE1 = P / B / H / EC 'Initialized For j = 0 To 500 For k = 0 To 250 CE(j, k) = 0 X(j, k) = 0 LP(j, k) = 0 TOF(j, k) = 0 TB(j, k) = 0 R(j, k) = 0 EASY(j) = 0 Next Next k = 0
j = 0 '------------------- Loop of calculation TE = CE1 - DCE STARTPOINT: k = 0 j = j + 1 noloop = j CE(j, 0) = CE1 + DCE + CE(j - 1, 0) If CE(j, 0) > EEND Then GoTo STEPNEXT GoSub FBALANCE GoSub MCAL GoTo STARTPOINT 'Get Correesponding value of M and Phi along length STEPNEXT: For j = 1 To (noloop - 1) For k = 1 To NV TB(j, k) = TB(j, 0) * (1 - k jj = j Do While jj >= 0 If TB(j, k) <= TB(jj, 0) And R(j, k) = ((TB(j, k) - TB(jj 0) - R(jj - 1, 0))) + R(jj - 1, jj = -1 ElseIf TB(j, k) >= TB(jj, 0) R(j, k) = ((TB(j, k) - TB(jj 0) - R(jj - 1, 0))) + R(jj - 1, jj = -1 End If jj = jj - 1 Loop Next Next
/ NV) TB(j, k) >= TB(jj - 1, 0) Then - 1, 0)) / (TB(jj, 0) - TB(jj - 1, 0)) * (R(jj, 0) And TB(jj, k) <= TB(j - 1, 0) Then - 1, 0)) / (TB(jj, 0) - TB(jj - 1, 0)) * (R(jj, 0)
'Get the theta and DEF For j = 1 To noloop - 1 TTA(j, 0) = 0 DEF(j, 0) = 0 For k = 1 To NV TTA(j, k) = TTA(j, k - 1) + 0.5 * (R(j, k) + R(j, k - 1)) * DHL DEF(j, k) = DEF(j, k - 1) + TTA(j, k) * DHL Next Next 'Write output to Excel & crack width WRITEOUT: Sheets("Output").Select Range("A4:BZ1002").Select Selection.ClearContents Range("A3").Select j = 1 Do While j <= noloop - 1 ActiveCell.Offset(j, 0).FormulaR1C1 = CE(j, 0) ActiveCell.Offset(j, 1).FormulaR1C1 = LP(j, 0) ActiveCell.Offset(j, 2).FormulaR1C1 = DEF(j, NV) For k = 0 To NV
ActiveCell.Offset(j, 3 + 2 * k).FormulaR1C1 = R(j, k) ActiveCell.Offset(j, 4 + 2 * k).FormulaR1C1 = TB(j, k) Next j = j + 1 Loop Sheets("Crack width").Select Range("A4:BZ1002").Select Selection.ClearContents Range("A3").Select j = 1 Do While j <= noloop - 1 ActiveCell.Offset(j, 0).FormulaR1C1 = EASY(j) ActiveCell.Offset(j, 1).FormulaR1C1 = LP(j, 0) j = j + 1 Loop Exit Sub
'Loop of Adjusting the Force Balance FBALANCE: N1 = 0 DTE = 250 SUMOK = Falase Do While SUMOK <> True ' steel SE = (CE(j, k) - TE) * (H - D1) / H + TE STCE = SE GoSub STSTR SNC = ASQ * SS SE = (CE(j, k) - TE) * D2 / H + TE STTE = SE GoSub STSTR SNT = AST * SS EAS(j) = SE 'Concrete DCN = 0 For i = 1 To N E(i, j) = (CE(j, k) - TE) / H * (H - DH * i + DH / 2) + TE CCE = E(i, j) GoSub CCSTR S(i, j) = CCS DCN = DCN + CCS Next CN = DCN * DH * B 'Equilibrium of Force TOF(j, k) = CN + SNC + SNT - P If Abs(TOF(j, k)) < 0.05 Then SUMOK = True '<---------------Allowable Erro r! If TOF(j, k) < 0 Then If N1 = 0 Or N1 = 2 Then N1 = 2 TE = TE + DTE ElseIf N1 = 1 Or N1 = 3 Or N1 = 4 Then DTE = DTE / 2 TE = TE + DTE N1 = 3 End If
'End loop of Adjusting Force Balance 'Calculation of Moment and Curvature MCAL: OMC = 0 For i = 1 To N OMC = OMC + S(i, j) * DH * B * (DH * i - DH / 2) Next CTM = SNC * D1 STM = SNT * (H - D2) TB(j, k) = -(OMC + CTM + STM) / 1000 R(j, k) = (CE(j, k) - TE) / H * 0.00001 X(j, k) = CE(j, k) * H / (CE(j, k) - TE) LP(j, k) = TB(j, k) / HL EASY(j) = 1.1 * K1 * K2 * K3 * (4 * C + 0.7 * (Cs - O)) * EAS(j) * 0.00000 1 Return 'End----------- calculation of Moment and Curvature 'Stress-Strain of Concrete CCSTR: 'Compression If CCE >= 0 Then CCSU = CCSO * 0.85 If CCE <= CCEO Then CCS = CCSO * (2 * (CCE / CCEO) - (CCE / CCEO) ^ 2) ElseIf CCE <= CCEU Then CCS = (CCSU - CCSO) / (CCEU - CCEO) * (CCE - CCEU) + CCSU Else: CCS = 0 End If End If 'Tension If CCE < 0 Then CTSU = CTSO * 0.85 HE = -CCE If HE <= CTEO Then CCS = -CTSO * (2 * (HE / CTEO) - (HE / CTEO) ^ 2) ElseIf HE <= CTEU Then CCS = -((CTSU - CTSO) / (CTEU - CTEO) * (HE - CTEU) + CTSU) Else: CCS = 0 End If End If Return 'End - Stress-Strain of Concrete
' Stress-strain of steel STSTR: 'Compression If SE >= 0 Then If SE <= SEY Then SS = SSY / SEY * SE Else: SS = SSY End If End If 'Tension If SE < 0 Then SE = -SE If SE <= SEY Then SS = -SSY / SEY * SE Else: SS = -SSY End If End If Return 'End - Stress-Strain of Steel End Sub