Programa para revisar vigas doblemente reforzadas

Todo lo relacionado con al analisis de estructuras y elementos finitos.

Moderadores: mgf2004, gatogalaxi

Reglas del Foro
Favor de usar el boton de Dar Gracias
En el mensaje del usuario al que deseas agradecer
En vez de escribir gracias repetidamente
Responder
Avatar de Usuario

Topic author
IngenieroJB
Usuario Principiante
Usuario Principiante
Mensajes: 13
Registrado: Mar Mar 03, 2009 10:51 am
Ubicación: Cartagena
Zodiac: Sagittarius

#1

Mar May 26, 2009 5:19 pm

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
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.


Avatar de Usuario

davidarellano
Usuario Master 1
Usuario Master 1
Mensajes: 201
Registrado: Dom Oct 14, 2007 2:31 pm
Ubicación: celaya

#2

Mar May 26, 2009 5:26 pm

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

Avatar de Usuario

Topic author
IngenieroJB
Usuario Principiante
Usuario Principiante
Mensajes: 13
Registrado: Mar Mar 03, 2009 10:51 am
Ubicación: Cartagena
Zodiac: Sagittarius

#3

Mar May 26, 2009 5:48 pm

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
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.


vicaraneda
Usuario Principiante
Usuario Principiante
Mensajes: 13
Registrado: Lun Ago 24, 2009 10:15 pm

#4

Vie Sep 25, 2009 5:40 pm

me serviria mucho...andaba buscando esto


Gilbellys
Usuario Principiante
Usuario Principiante
Mensajes: 14
Registrado: Jue Jun 16, 2005 5:50 am
Ubicación: barcelona

#5

Lun Oct 05, 2009 5:56 pm

Hola. Buen aporte seria excelente loq ue propones, me gustaria enviarte el flujograma para calcular plnachas metalicas. Saludos .mi correo es gilbellys@hotmail.com

Avatar de Usuario

brgallegos
Usuario Master 1
Usuario Master 1
Mensajes: 292
Registrado: Mié Sep 22, 2004 3:58 pm
Ubicación: Loja
Agradecimiento recibido: 7 veces
Zodiac: Pisces
Contactar:
Ecuador

#6

Mié Oct 07, 2009 12:02 pm

Excelente programa te propongo si lo puedes modificar para hallas la capacidad pero utilizando capas de acero tanto inferior como superior

Avatar de Usuario

Topic author
IngenieroJB
Usuario Principiante
Usuario Principiante
Mensajes: 13
Registrado: Mar Mar 03, 2009 10:51 am
Ubicación: Cartagena
Zodiac: Sagittarius

#7

Mié Abr 28, 2010 5:10 pm

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...

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje

Volver a “Analisis y Diseño Estructural”

  • Información