Página 1 de 1

Programa para revisar vigas doblemente reforzadas

Publicado: Mar May 26, 2009 5:19 pm
por IngenieroJB
Hola a todos...
viendo este foro, y los aportes de los usuarios, me gustaria hacer mi aporte...


este es un programa que revisa vigas con refuerzo en traccion y compresion...
Imagen
Espero que les guste... acepto sugerencias...

Nota:
Lenguaje de programacion: Visual Basic 2005
Aplicacion para construaprende

Si les gusta el programa...

me gustaria hacer una aplicacion entre todos los foristas... alguien me pasa la bibliografia y yo programo...(luego se publica la aplicacion por aqui) me gustraria programar el calculo de una columna corta por los diversos metodos...
Saludos desde Colombia

Re: Programa para revisar vigas doblemente reforzadas

Publicado: Mar May 26, 2009 5:26 pm
por davidarellano
IngenieroJB escribió:Hola a todos...
viendo este foro, y los aportes de los usuarios, me gustaria hacer mi aporte...


este es un programa que revisa vigas con refuerzo en traccion y compresion...
Imagen
Espero que les guste... acepto sugerencias...

Nota:
Lenguaje de programacion: Visual Basic 2005
Aplicacion para construaprende

Si les gusta el programa...

me gustaria hacer una aplicacion entre todos los foristas... alguien me pasa la bibliografia y yo programo...(luego se publica la aplicacion por aqui) me gustraria programar el calculo de una columna corta por los diversos metodos...
Saludos desde Colombia
Excelente JB gracias; y el codigo fuente? Gracias: Ing H David Arellano carioca502000@yahoo.com

Re: Programa para revisar vigas doblemente reforzadas

Publicado: Mar May 26, 2009 5:48 pm
por IngenieroJB
davidarellano escribió: Excelente JB gracias; y el codigo fuente? Gracias: Ing H David Arellano carioca502000@yahoo.com
Espero que te guste...

aqui mando el code fuente, para abrirlo necesitas tener instalado Visual Basic 2005
....
Envio el proyecto adjunto y posteo aqui el code fuente de la clase que hace esto...

Código: Seleccionar todo

Imports System.IO
Imports System.Math

Public Class Revision_Vigas
    'Heredando los textos
    Inherits Texto

    '**************** VARIABLES PRIVADAS *****************
    '*****************************************************
    'almacena la base de la viga
    Private Base As Single
    'almacena la altura d (altura efectiva a tension en cm)
    Private d_Tens As Single
    'almacena la altura d' (altura efectiva a compresion en cm)
    Private d_Comp As Single
    'Area de Acero a Tension (AS en cm ^2)
    Private As_Tens As Single
    'Area de Acero a Compresion (A'S en cm ^2)
    Private As_Comp As Single
    'resistencia a la compresion del concreto (kg/cm^2)
    Private fc_ As Single
    'resistencia a la compresion del Acero (kg/cm^2)
    Private fy_ As Single
    'factor de seguridad fi: para vigas es 0.9
    Private Fi_ As Single
    '*****************************************************

    '**************** VARIABLES PUBLICAS *****************
    '*****************************************************
    ''' <summary>
    ''' Momento último expresado en Ton*metros
    ''' </summary>
    ''' <remarks>Nilson</remarks>
    Public Mu As Single        'Momento expresado en Ton*metro
    ''' <summary>
    ''' Esfuerzo de Tension de las barras de acero expresado en kg/cm^2
    ''' </summary>
    ''' <remarks>Nilson</remarks>
    Public fs_Comp As Single
    ''' <summary>
    ''' Esfuerzo de Compresion de las barras de acero expresado en kg/cm^2
    ''' </summary>
    ''' <remarks>Nilson</remarks>
    Public fs_Tens As Single
    ''' <summary>
    ''' Esta es la cuantia de la sección (en decimas), valor adimensional
    ''' </summary>
    ''' <remarks>Nilson</remarks>
    Public Cuantia_Calc As Single
    ''' <summary>
    ''' Cuantia mínima. Si el valor de la cuantia calculada es mayor que este, entonces el acero a compresión fluye.
    ''' Si la cuantia calculada es menor que este, el acero a compresion no fluye y debe calcularse por la siguiente formula:
    ''' f's = 6000*(c-d')/c
    ''' </summary>
    ''' <remarks></remarks>
    Public Cuantia_Min As Single
    ''' <summary>
    ''' Equivale al 75% de la cuantia balanceada. Este es el valor limite de la cuantia permitida según NSR 98.
    ''' </summary>
    ''' <remarks></remarks>
    Public Cuantia_Max As Single
    ''' <summary>
    ''' Cuantia Balanceada. Si la cuantia calculada es mayor que este valor, la viga es Sobre-reforzada. 
    ''' Caso contrario, Sub-reforzada.
    ''' </summary>
    ''' <remarks></remarks>
    Public Cuantia_Bal As Single





    'Propiedad que almacenar valor de la base de la viga
    Public Property Base_() As Single
        Get
            Return Base
        End Get
        Set(ByVal Valor As Single)
            If Valor <= 0 Then
                MsgBox("La base no puede ser menor o igual a cero")
            Else
                Base = Valor
            End If
        End Set
    End Property

    'Propiedad para la altura efectiva a tensión de la viga
    Public Property Altura_Efectiva_Tension() As Single
        Get
            Return d_Tens
        End Get
        Set(ByVal Valor As Single)
            If Valor <= 0 Then
                MsgBox("La Altura efectiva no puede ser menor o igual a cero")
            Else
                d_Tens = Valor
            End If
        End Set
    End Property

    'Propiedad para la altura efectiva a compresión de la viga
    Public Property Altura_Efectiva_Compresion() As Single
        Get
            Return d_Comp
        End Get
        Set(ByVal Valor As Single)
            If Valor <= 0 Then
                MsgBox("La Altura efectiva a compresion no puede ser menor o igual a cero")
            Else
                d_Comp = Valor
            End If
        End Set
    End Property

    Public Property AS_Tens_() As Single
        Get
            Return As_Tens
        End Get
        Set(ByVal Valor As Single)
            If Valor < 0 Then
                MsgBox("Error: Area negativa no se puede")
            Else
                As_Tens = Valor
            End If
        End Set
    End Property

    Public Property AS_Comp_() As Single
        Get
            Return As_Comp
        End Get
        Set(ByVal Valor As Single)
            If Valor < 0 Then
                MsgBox("Error: Area negativa no se puede")
            Else
                As_Comp = Valor
            End If

        End Set
    End Property

    Public Property fc() As Single
        Get
            Return fc_
        End Get
        Set(ByVal Valor As Single)
            If Valor <= 0 Then
                MsgBox("Error, este valor no puede ser menor ni igual que cero")
            Else
                fc_ = Valor
            End If
        End Set
    End Property

    Public Property fy() As Single
        Get
            Return fy_
        End Get
        Set(ByVal Valor As Single)
            If Valor <= 0 Then
                MsgBox("Error, este valor no puede ser menor ni igual que cero")
            Else
                fy_ = Valor
            End If
        End Set
    End Property

    Public Property Fi() As Single
        Get
            Return Fi_
        End Get
        Set(ByVal Valor As Single)
            If Valor <= 0 Then
                MsgBox("Error en el factor de seguridad")
            Else
                Fi_ = Valor
            End If
        End Set
    End Property



    ''' <summary>
    ''' Funcion que halla la cuantia balanceada (pagina 88 del Libro Rochel tomo 1)
    ''' </summary>
    ''' <param name="fc">Resistencia del concreto expresado en kg/cm^2</param>
    ''' <param name="fy">Resistencia del acero expresado en kg/cm^2</param>
    ''' <returns>Valor de la cuantia balanceada. Valor Adimensional</returns>
    ''' <remarks>Nilson</remarks>
    Private Function pb(ByVal fc As Single, ByVal fy As Single) As Single
        Return Alfa(fc) * fc / fy * 6000 / (6000 + fy)
    End Function

    'Ecuacion 6.11 (pagina 88)
    Private Function pnet_Max(ByVal fc As Single, ByVal fy As Single) As Single
        Return 0.75 * pb(fc, fy)
    End Function

    'Ecuacion 7.6 (pag 108)
    Private Function pnet_Min(ByVal fc As Single, ByVal fy As Single, ByVal d_Comp As Single, ByVal d_Tens As Single) As Single
        pnet_Min = Alfa(fc) * fc / fy * 6000 * d_Comp / ((6000 - fy) * d_Tens)
    End Function

    'Funcion que halla la cuantia de la sección
    Private Function pnet_Calc(ByVal As_Comp As Single, ByVal As_tens As Single, ByVal b As Single, ByVal d As Single) As Single
        Return (As_tens - As_Comp) / (b * d)
    End Function

    Public Sub Revisar_Viga()
        'Procedimiento que ejecuta la revision de la viga

        

        

        Dim C_neut As Single
        Dim a As Single

        Dim Momento As Single 'Ton*metro

        Cuantia_Min = pnet_Min(fc_, fy_, d_Comp, d_Tens)
        Cuantia_Max = pnet_Max(fc_, fy_)
        Cuantia_Calc = pnet_Calc(As_Comp, As_Tens, Base, d_Tens)
        Cuantia_Bal = pb(fc_, fy_)

        If Cuantia_Calc >= Cuantia_Min And Cuantia_Calc < Cuantia_Bal Then
            fs_Comp = fy_
            fs_Tens = fy_

            a = (As_Tens * fs_Tens - As_Comp * fs_Comp) / (0.85 * fc_ * Base) + As_Comp / Base
            C_neut = a / 0.85

            'Momento exacto
            Momento = Momento_Exacto(a)

            Mu = Momento / 100000

        ElseIf Cuantia_Calc < Cuantia_Min And Cuantia_Calc < Cuantia_Bal Then
            'Sub reforzada pero el acero a compresion no fluye, entonces debe calcularse su esfuerzo
            fs_Tens = fy_
            C_neut = Cuadratica(0.85 ^ 2 * fc_ * Base, -(0.85 * fc_ * As_Comp + As_Tens * fs_Tens - 6000 * As_Comp), -6000 * As_Comp * d_Comp)
            a = C_neut * 0.85
            fs_Comp = 6000 * (C_neut - d_Comp) / C_neut

            'Momento exacto
            Momento = Momento_Exacto(a)
            Mu = Momento / 100000

        ElseIf Cuantia_Calc >= Cuantia_Min And Cuantia_Calc > Cuantia_Bal Then
            fs_Comp = fy_
            C_neut = Cuadratica(0.85 ^ 2 * fc_ * Base, -(0.85 * fc_ * As_Comp - As_Comp * fs_Comp - As_Tens * 6000), -As_Tens * 6000 * d_Tens)
            a = C_neut * 0.85
            fs_Tens = 6000 * (d_Tens - C_neut) / C_neut
            'Momento exacto
            Momento = Momento_Exacto(a)
            Mu = Momento / 100000

        ElseIf Cuantia_Calc < Cuantia_Min And Cuantia_Calc > Cuantia_Bal Then
            'Acero a compresion no fluye: f's = 6000*(c-d')/c ===> por no cumplir limite minimo
            'Viga sobre reforzada, Acero a tension no fluye: fs = 6000*(d-c)/c
            C_neut = Cuadratica(0.85 ^ 2 * fc_ * Base, -(0.85 * fc_ * As_Comp - As_Comp * 6000 - As_Tens * 6000), -(As_Comp * 6000 * d_Comp + As_Tens * 6000 * d_Tens))
            a = C_neut * 0.85
            fs_Comp = 6000 * (C_neut - d_Comp) / C_neut
            fs_Tens = 6000 * (d_Tens - C_neut) / C_neut
            'Momento exacto
            Momento = Momento_Exacto(a)
            Mu = Momento / 100000

        Else
            MsgBox("Falta programar")
        End If
    End Sub

    Private Function Momento_Exacto(ByVal a As Single) As Single
        'Momento exacto
        Momento_Exacto = Fi_ * 0.85 * fc_ * Base * a * (d_Tens - a / 2) - Fi_ * As_Comp * 0.85 * fc_ * (d_Tens - d_Comp) + Fi_ * As_Comp * fs_Comp * (d_Tens - d_Comp)
    End Function

    Public Sub Guardar_Datos()
        'Guardando en el bloc de notas
        Call EscribirDatoMATRIZ(1, 1, Me.Fi_, Dir_Bloc_Notas)
        Call EscribirDatoMATRIZ(2, 1, Me.Base, Dir_Bloc_Notas)
        Call EscribirDatoMATRIZ(3, 1, Me.d_Tens, Dir_Bloc_Notas)
        Call EscribirDatoMATRIZ(4, 1, Me.d_Comp, Dir_Bloc_Notas)
        Call EscribirDatoMATRIZ(5, 1, Me.As_Tens, Dir_Bloc_Notas)
        Call EscribirDatoMATRIZ(6, 1, Me.As_Comp, Dir_Bloc_Notas)
        Call EscribirDatoMATRIZ(7, 1, Me.fc_, Dir_Bloc_Notas)
        Call EscribirDatoMATRIZ(8, 1, Me.fy_, Dir_Bloc_Notas)
    End Sub

    Public Sub Cargar_Datos(ByVal Text_Fi As TextBox, ByVal Text_Base As TextBox, _
    ByVal Text_d_Tens As TextBox, ByVal Text_d_Comp As TextBox _
    , ByVal Text_As_Tens As TextBox, ByVal Text_As_Comp As TextBox _
    , ByVal Text_fc As TextBox, ByVal Text_fy As TextBox)

        'cargando los datos desde el bloc de notas
        Try
            With Me
                .Fi_ = LeerDatoMATRIZ(1, 1, Dir_Bloc_Notas)
                Text_Fi.Text = .Fi_

                .Base = LeerDatoMATRIZ(2, 1, Dir_Bloc_Notas)
                Text_Base.Text = .Base

                .d_Tens = LeerDatoMATRIZ(3, 1, Dir_Bloc_Notas)
                Text_d_Tens.Text = .d_Tens

                .d_Comp = LeerDatoMATRIZ(4, 1, Dir_Bloc_Notas)
                Text_d_Comp.Text = .d_Comp

                .As_Tens = LeerDatoMATRIZ(5, 1, Dir_Bloc_Notas)
                Text_As_Tens.Text = .As_Tens

                .As_Comp = LeerDatoMATRIZ(6, 1, Dir_Bloc_Notas)
                Text_As_Comp.Text = .As_Comp

                .fc_ = LeerDatoMATRIZ(7, 1, Dir_Bloc_Notas)
                Text_fc.Text = .fc_

                .fy_ = LeerDatoMATRIZ(8, 1, Dir_Bloc_Notas)
                Text_fy.Text = .fy_
            End With
        Catch
            MsgBox("No se cargaron los datos")
        End Try
    End Sub



    Function Cuadratica(ByVal A_ As Single, ByVal B_ As Single, ByVal C_ As Single, Optional ByVal Positivo As Boolean = True) As Single
        'funcion que devuelve la raiz de la ecuación.
        'Ecuación de la forma: AX^2 + BX + C = 0
        If Positivo = True Then
            Cuadratica = (-B_ + Sqrt(B_ ^ 2 - 4 * A_ * C_)) / (2 * A_)
        Else
            Cuadratica = (-B_ - Sqrt(B_ ^ 2 - 4 * A_ * C_)) / (2 * A_)
        End If
    End Function


End Class

Re: Programa para revisar vigas doblemente reforzadas

Publicado: Vie Sep 25, 2009 5:40 pm
por vicaraneda
me serviria mucho...andaba buscando esto

Re: Programa para revisar vigas doblemente reforzadas

Publicado: Lun Oct 05, 2009 5:56 pm
por Gilbellys
Hola. Buen aporte seria excelente loq ue propones, me gustaria enviarte el flujograma para calcular plnachas metalicas. Saludos .mi correo es gilbellys@hotmail.com

Re: Programa para revisar vigas doblemente reforzadas

Publicado: Mié Oct 07, 2009 12:02 pm
por brgallegos
Excelente programa te propongo si lo puedes modificar para hallas la capacidad pero utilizando capas de acero tanto inferior como superior

Re: Programa para revisar vigas doblemente reforzadas

Publicado: Mié Abr 28, 2010 5:10 pm
por IngenieroJB
Gilbellys escribió:Hola. Buen aporte seria excelente loq ue propones, me gustaria enviarte el flujograma para calcular plnachas metalicas. Saludos .mi correo es gilbellys@hotmail.com
Excelente, siento ausentarme por mucho tiempo, pero ya volví.... me gusta tu actitud... gracias amigo....
brgallegos escribió:Excelente programa te propongo si lo puedes modificar para hallas la capacidad pero utilizando capas de acero tanto inferior como superior
Si, si lo puedo modificar, ya estoy en eso ^_^
Cuando lo termine, lo publico...

saludos...