Public Function ValorBeta1(fc_MPa) As Double Dim Beta1 As Double Beta1 = 0.85 - 0.05 / 7 * (fc_MPa - 28) If Beta1 < 0.65 Then 'Beta1 según NSR-10 Beta1 = 0.65 'C.10.2.7.3 End If If Beta1 > 0.85 Then Beta1 = 0.85 End If ValorBeta1 = Beta1 End Function '---------------------------------------------------------------- ' CALCULO DEL COEFICIENTE DE REDUCCION DE RESISTENCIA '---------------------------------------------------------------- Public Function ValorPhi(Def_Unitaria_EPSt) As Single Dim et As Double, Phi As Double et = Def_Unitaria_EPSt Phi = 250 / 3 * et + 29 / 60 'Según NSR-10 C.9.3.2 If Phi > 0.9 Then Phi = 0.9 End If If Phi < 0.65 Then Phi = 0.65 End If ValorPhi = Phi End Function '---------------------------------------------------------------- ' CALCULO DEL ESFUERZO EN REFUERZO SEGUN MODELO BI-LINEAL '---------------------------------------------------------------- Public Function Esfuerzo_fsMPa(Def_Unitaria_EPSt, fy_MPa) As Single Dim et As Double, fs As Double, fy As Double fy = fy_MPa et = Def_Unitaria_EPSt fs = 200000 * et If Abs(fs) > fy Then fs = fy * Sgn(et) End If Esfuerzo_fsMPa = fs End Function '---------------------------------------------------------------- ' FUNCION DE ERROR PARA COLUMNAS '---------------------------------------------------------------- Public Function fCol(c, b_cm, h_cm, dc_cm, As_cm2, Ass_cm2, fc_MPa, fy_MPa, Pu_ton) As Double Dim Beta1 As Double, a As Double, Cc As Double Dim et As Double, fs As Double, Ts As Double Dim esc As Double, fsc As Double, Cs As Double Dim ess As Double, fss As Double, Css As Double Dim b As Double, h As Double, d As Double, dc As Double Dim Ass As Double, At As Double, Asc As Double, Pu As Double Const g = 9.80665 'Aceleración g en [m/s²] Const eu = 0.003 'Según NSR-10 C.10.3.3 b = b_cm * 10 'Cambio de unidades cm a mm h = h_cm * 10 dc = dc_cm * 10 d = h - dc At = As_cm2 * 100 'Cambio de unidades cm² a mm² Ass = Ass_cm2 * 100 Asc = At Pu = Pu_ton * (10) ^ 3 * g 'Cambio de unidades ton a N Beta1 = ValorBeta1(fc_MPa) 'a=beta1·c a = Beta1 * c If a > h Then 'a<=h a = h End If Cc = 0.85 * fc_MPa * a * b 'Cc=0.85f'c*ab et = (d - c) / c * eu esc = (c - dc) / c * eu ess = (c - h / 2) * eu / c fs = Esfuerzo_fsMPa(et, fy_MPa) 'Ts=fs*As fsc = Esfuerzo_fsMPa(esc, fy_MPa) 'Cs=fs*Asc fss = Esfuerzo_fsMPa(ess, fy_MPa) 'Css=fss*Ass Ts = fs * At Cs = fsc * Asc Css = fss * Ass fCol = Cc + Cs + Css - Ts - Pu 'Cc+Cs+Css-Ts-Pu->0? End Function '---------------------------------------------------------------- ' CALCULO DEL EJE NEUTRO EN COLUMNAS '---------------------------------------------------------------- Public Function cCol(b_cm, h_cm, dc_cm, As_cm2, Ass_cm2, fc_MPa, fy_MPa, Pu_ton) As Double Dim i As Integer, d As Double, dc As Double, h As Double Dim x() As Double, f() As Double Dim Dy As Double, Dx As Double h = h_cm * 10 dc = dc_cm * 10 d = h - dc ReDim x(3), f(2) x(1) = 3 / 7 * d x(2) = 10 / 17 * d Do For i = 1 To 2 f(i) = fCol(x(i), b_cm, h_cm, dc_cm, As_cm2, Ass_cm2, fc_MPa, fy_MPa, Pu_ton) Next i Dy = f(2) - f(1) 'Método de Newton Dx = x(2) - x(1) 'Algoritmo secante x(3) = x(2) - f(2) / Dy * Dx 'x=x-f(x)/dy*dx x(1) = x(2) x(2) = x(3) Loop While Abs(f(2)) > 1 'Se acepta error=Cc+Cs+Css-Ts-Pu<1N cCol = x(2) * 1 / 10 'Cambio de unidades mm a cm End Function '---------------------------------------------------------------- ' CALCULO DE RESISTENCIA NOMINAL A AXIAL EN COLUMNAS '---------------------------------------------------------------- Public Function PnCol(c_cm, b_cm, h_cm, dc_cm, As_cm2, Ass_cm2, fc_MPa, fy_MPa) As Double Dim a As Double, b As Double, c As Double, d As Double, dc As Double, h As Double Dim Beta1 As Double, fc As Double, Cc As Double Dim et As Double, fs As Double, At As Double, Ts As Double Dim esc As Double, fsc As Double, Asc As Double, Cs As Double Dim ess As Double, fss As Double, Ass As Double, Css As Double Const g = 9.80665 'Aceleración g en [m/s²] Const eu = 0.003 'Según NSR-10 C.10.3.3 b = b_cm * 10 c = c_cm * 10 h = h_cm * 10 dc = dc_cm * 10 At = As_cm2 * 100 'Cambio de unidades cm² a mm² Ass = Ass_cm2 * 100 fc = fc_MPa Asc = At d = h - dc Beta1 = ValorBeta1(fc_MPa) a = Beta1 * c Cc = 0.85 * fc * a * b et = (d - c) / c * eu fs = Esfuerzo_fsMPa(et, fy_MPa) Ts = fs * At esc = (c - dc) / c * eu fsc = Esfuerzo_fsMPa(esc, fy_MPa) Cs = fsc * Asc ess = (c - h / 2) * eu / c fss = Esfuerzo_fsMPa(ess, fy_MPa) Css = fss * Ass PnCol = Cc + Cs + Css - Ts PnCol = PnCol * 1 / ((10) ^ 3 * g) End Function '---------------------------------------------------------------- ' CALCULO DE RESISTENCIA NOMINAL A FLEXIÓN EN COLUMNAS '---------------------------------------------------------------- Public Function MnCol(c_cm, b_cm, h_cm, dc_cm, As_cm2, Ass_cm2, fc_MPa, fy_MPa) As Double Dim a As Double, b As Double, c As Double, d As Double, dc As Double, h As Double Dim Beta1 As Double, fc As Double, Cc As Double Dim et As Double, fs As Double, At As Double, Ts As Double Dim esc As Double, fsc As Double, Asc As Double, Cs As Double Dim ess As Double, fss As Double, Ass As Double, Css As Double Const g = 9.80665 'Aceleración g en [m/s²] Const eu = 0.003 'Según NSR-10 C.10.3.3 b = b_cm * 10 c = c_cm * 10 h = h_cm * 10 dc = dc_cm * 10 At = As_cm2 * 100 'Cambio de unidades cm² a mm² Ass = Ass_cm2 * 100 fc = fc_MPa Asc = At d = h - dc Beta1 = ValorBeta1(fc_MPa) a = Beta1 * c Cc = 0.85 * fc * a * b et = (d - c) / c * eu fs = Esfuerzo_fsMPa(et, fy_MPa) Ts = fs * At esc = (c - dc) / c * eu fsc = Esfuerzo_fsMPa(esc, fy_MPa) Cs = fsc * Asc ess = (c - h / 2) * eu / c fss = Esfuerzo_fsMPa(ess, fy_MPa) Css = fss * Ass MnCol = Cc * (d - a / 2) + Cs * (d - dc) + Css * (d - h / 2) MnCol = MnCol / ((10) ^ 6 * g) 'Cambio de unidades N·mm a ton·m End Function '---------------------------------------------------------------- ' CALCULO DE RESISTENCIA DE DISEÑO A AXIAL EN COLUMNAS '---------------------------------------------------------------- Public Function PhiPnCol(c_cm, b_cm, h_cm, dc_cm, As_cm2, Ass_cm2, fc_MPa, fy_MPa) As Double Dim a As Double, b As Double, c As Double, d As Double, dc As Double, h As Double Dim Beta1 As Double, fc As Double, Cc As Double Dim et As Double, fs As Double, At As Double, Ts As Double Dim esc As Double, fsc As Double, Asc As Double, Cs As Double Dim ess As Double, fss As Double, Ass As Double, Css As Double Dim Phi As Double, Ag As Double, Ast As Double, PhiPnMax As Double Const g = 9.80665 'Aceleración g en [m/s²] Const eu = 0.003 'Según NSR-10 C.10.3.3 b = b_cm * 10 c = c_cm * 10 h = h_cm * 10 dc = dc_cm * 10 At = As_cm2 * 100 'Cambio de unidades cm² a mm² Ass = Ass_cm2 * 100 fc = fc_MPa Asc = At d = h - dc Beta1 = ValorBeta1(fc_MPa) a = Beta1 * c Cc = 0.85 * fc * a * b et = (d - c) / c * eu fs = Esfuerzo_fsMPa(et, fy_MPa) Ts = fs * At esc = (c - dc) / c * eu fsc = Esfuerzo_fsMPa(esc, fy_MPa) Cs = fsc * Asc ess = (c - h / 2) * eu / c fss = Esfuerzo_fsMPa(ess, fy_MPa) Css = fss * Ass Ag = b * h Ast = At + Asc + Ass PhiPnMax = 0.85 * fc * (Ag - Ast) + fy_MPa * Ast 'Según NSR-10 C.10.3.6.1 PhiPnMax = 0.8 * 0.65 * PhiPnMax Phi = ValorPhi(et) PhiPnCol = Cc + Cs + Css - Ts PhiPnCol = Phi * PhiPnCol If PhiPnCol > PhiPnMax Then PhiPnCol = PhiPnMax End If PhiPnCol = PhiPnCol * 1 / ((10) ^ 3 * g) End Function '---------------------------------------------------------------- ' CALCULO DE RESISTENCIA DE DISEÑO A FLEXIÓN EN COLUMNAS '---------------------------------------------------------------- Public Function PhiMnCol(c_cm, b_cm, h_cm, dc_cm, As_cm2, Ass_cm2, fc_MPa, fy_MPa) As Double Dim a As Double, b As Double, c As Double, d As Double, dc As Double, h As Double Dim Beta1 As Double, fc As Double, Cc As Double Dim et As Double, fs As Double, At As Double, Ts As Double Dim esc As Double, fsc As Double, Asc As Double, Cs As Double Dim ess As Double, fss As Double, Ass As Double, Css As Double Dim Phi As Double Const g = 9.80665 'Aceleración g en [m/s²] Const eu = 0.003 'Según NSR-10 C.10.3.3 b = b_cm * 10 c = c_cm * 10 h = h_cm * 10 dc = dc_cm * 10 At = As_cm2 * 100 'Cambio de unidades cm² a mm² Ass = Ass_cm2 * 100 fc = fc_MPa Asc = At d = h - dc Beta1 = ValorBeta1(fc_MPa) a = Beta1 * c Cc = 0.85 * fc * a * b et = (d - c) / c * eu fs = Esfuerzo_fsMPa(et, fy_MPa) Ts = fs * At esc = (c - dc) / c * eu fsc = Esfuerzo_fsMPa(esc, fy_MPa) Cs = fsc * Asc ess = (c - h / 2) * eu / c fss = Esfuerzo_fsMPa(ess, fy_MPa) Css = fss * Ass Phi = ValorPhi(et) PhiMnCol = Cc * (d - a / 2) + Cs * (d - dc) + Css * (d - h / 2) PhiMnCol = Phi * PhiMnCol / ((10) ^ 6 * g) 'Cambio de unidades N·mm a ton·m End Function