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 VIGAS DOBL. REFORZADAS '---------------------------------------------------------------- Public Function fMnVDR(c, b_cm, d_cm, dc_cm, As_cm2, Asc_cm2, fc_MPa, fy_MPa) 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 b As Double, d As Double, dc As Double, At As Double, Asc As Double Const eu = 0.003 'Según NSR-10 C.10.3.3 Const es = 200000 'Según NSR-10 C.8.5.2 b = b_cm * 10 'Cambio de unidades cm a mm d = d_cm * 10 dc = dc_cm * 10 At = As_cm2 * 100 'Cambio de unidades cm² a mm² Asc = Asc_cm2 * 100 Beta1 = ValorBeta1(fc_MPa) 'a=beta1·c a = Beta1 * c Cc = 0.85 * fc_MPa * a * b 'Cc=0.85f'c*ab et = (d - c) / c * eu esc = (c - dc) / c * eu fs = Esfuerzo_fsMPa(et, fy_MPa) 'Ts=fs*As fsc = Esfuerzo_fsMPa(esc, fy_MPa) 'Cs=fs*Asc Ts = fs * At Cs = fsc * Asc fMnVDR = Cc + Cs - Ts 'Cc+Cs+Ts->0? End Function '---------------------------------------------------------------- ' CALCULO DEL EJE NEUTRO '---------------------------------------------------------------- Public Function cVDR(b_cm, d_cm, dc_cm, As_cm2, Asc_cm2, fc_MPa, fy_MPa) As Double Dim i As Integer, d As Double Dim x() As Double, f() As Double Dim Dy As Double, Dx As Double d = d_cm * 10 ReDim x(3), f(2) x(1) = 1 / 7 * d x(2) = 3 / 7 * d Do For i = 1 To 2 f(i) = fMnVDR(x(i), b_cm, d_cm, dc_cm, As_cm2, Asc_cm2, fc_MPa, fy_MPa) Next i Dy = f(2) - f(1) Dx = x(2) - x(1) x(3) = x(2) - f(2) / Dy * Dx x(1) = x(2) x(2) = x(3) Loop While Abs(f(2)) > 1 'Se acepta error=Cc+Cs-Ts<1N cVDR = x(2) End Function '---------------------------------------------------------------- ' RESISTENCIA NOMINAL A LA FLEXION EN VIGAS RECTANGULARES '---------------------------------------------------------------- Public Function MnVDR(b_cm, d_cm, dc_cm, As_cm2, Asc_cm2, fc_MPa, fy_MPa) As Double Dim b As Double, d As Double, dc As Double Dim c As Double, a As Double, Cc As Double Dim esc As Double, fsc As Double, Cs As Double, Asc 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 d = d_cm * 10 dc = dc_cm * 10 Asc = Asc_cm2 * 100 c = cVDR(b_cm, d_cm, dc_cm, As_cm2, Asc_cm2, fc_MPa, fy_MPa) a = ValorBeta1(fc_MPa) * c 'a=beta1*c Cc = 0.85 * fc_MPa * a * b 'Cc=0.85*f'c*a*b esc = (c - dc) / c * eu fsc = Esfuerzo_fsMPa(esc, fy_MPa) 'Cs=fs*Asc Cs = fsc * Asc MnVDR = Cc * (d - a / 2) + Cs * (d - dc) 'Mn=Cc*(d-a/2)+Cs(d-d') MnVDR = MnVDR * 1 / ((10) ^ 6 * g) 'Cambio N·mm a [ton·m] End Function '---------------------------------------------------------------- ' RESISTENCIA DE DISEÑO A LA FLEXION EN VIGAS RECTANGULARES '---------------------------------------------------------------- Public Function PhiMnVDR(b_cm, d_cm, dc_cm, As_cm2, Asc_cm2, fc_MPa, fy_MPa) As Double Dim b As Double, d As Double, dc As Double Dim c As Double, a As Double, Cc As Double Dim esc As Double, fsc As Double, Cs As Double, Asc As Double Dim et As Double, 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 d = d_cm * 10 dc = dc_cm * 10 Asc = Asc_cm2 * 100 c = cVDR(b_cm, d_cm, dc_cm, As_cm2, Asc_cm2, fc_MPa, fy_MPa) a = ValorBeta1(fc_MPa) * c 'a=beta1*c Cc = 0.85 * fc_MPa * a * b 'Cc=0.85*f'c*a*b esc = (c - dc) / c * eu fsc = Esfuerzo_fsMPa(esc, fy_MPa) 'Cs=fs*Asc Cs = fsc * Asc et = (d - c) / c * eu Phi = ValorPhi(et) PhiMnVDR = Phi * Cc * (d - a / 2) + Phi * Cs * (d - dc) 'Mn=Cc*(d-a/2)+Cs(d-d') PhiMnVDR = PhiMnVDR * 1 / ((10) ^ 6 * g) 'Cambio N·mm a [ton·m] End Function