Download Tutorial Visual Basic (Aplicado a Hormigón Armado)...
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA Apunte de Visual Basic de Excel aplicado a Hormigón Armado I USM Campus Santiago I Semestre 2015
Hormigón Armado I, UTFSM Santiago.
TABLA DE CONTENIDOS 1. ALCANCE
4
2. NOCIONES BÁSICAS
5
2.1. INGRESAR AL AMBIENTE VISUAL BASIC 2.2. AMBIENTE VISUAL BASIC 2.3. ENTRANDO A UN ESPACIO DE PROGRAMACIÓN
5 7 8
3. PROGRAMACIÓN
10
3.1. VARIABLES 3.1.1. TIPOS DE VARIABLES 3.1.2. DECLARACIÓN DE UNA VARIABLE 3.2. DECLARACIÓN DE UNA SUB 3.3. DECLARACIÓN DE UNA FUNCIÓN 3.4. SENTENCIAS BÁSICAS DE PROGRAMACIÓN 3.4.1. DECLARACIÓN DE UN "FOR" 3.4.2. DECLARACIÓN DE UN "IF" 3.4.3. DECLARACIÓN DE UN "SELECT CASE" 3.4.4. DECLARACIÓN DE UN "DO WHILE". 3.5. LLAMADO DE SUB, FUNCIONES Y VARIABLES DESDE OTRAS SECCIONES 3.6. HERRAMIENTAS ÚTILES DE VISUAL BASIC 3.6.1. MENSAJE EN PANTALLA 3.6.2. CONCATENAR (&) 3.7. MANEJO DE ARREGLOS (MATRICES). 3.7.1. DECLARACIÓN DE UN ARREGLO 3.7.2. DIMENSIONES DE UN ARREGLO 3.7.3. REDIMENSIONAR UN ARREGLO 3.7.4. PEGAR UN ARREGLO EN UNA HOJA DE CÁLCULO 3.8. MANEJO DE CADENAS DE TEXTO. 3.8.1. FUNCIÓN REPLACE 3.8.2. FUNCIÓN LEN 3.8.3. FUNCIÓN SPLIT 3.8.4. FUNCIÓN LEFT 3.8.5. FUNCIÓN RIGHT 3.8.6. FUNCIÓN MID 3.8.7. FUNCIÓN INSTR 3.8.8. FUNCIÓN JOIN 3.8.9. FUNCIÓN LCASE 3.8.10. FUNCIÓN UCASE 3.9. MANEJO DE ARCHIVOS DE TEXTOS
10 10 11 11 12 14 14 15 16 17 18 19 19 22 22 23 23 24 26 28 29 29 29 29 30 30 30 31 31 31 31
Tutorial
1 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. 3.9.1. ABRIR UN ARCHIVO DE TEXTO 3.9.2. LEER UN ARCHIVO DE TEXTO 3.9.3. ESCRIBIR UN ARCHIVO DE TEXTO NUEVO: 3.9.4. ESCRIBIR UN ARCHIVO DE TEXTO CONSERVANDO LO ALMACENADO 3.9.5. EJEMPLO DE UTILIDAD 3.10. FUNCIONES ÚTILES DE MICROSOFT EXCEL 3.10.1. GRABAR MACRO 3.10.2. BUSCARV – BUSCARH 3.10.3. K.ESIMO.MAYOR & K.ESIMO.MENOR 3.11. MANEJO DE CELDAS 3.11.1. REFERENCIAR UNA CELDA MEDIANTE CELLS(). 3.11.2. REFERENCIAR UNA CELDA O RANGO MEDIANTE RANGE() 3.12. RUTINA BUSCAR OBJETIVO 3.12.1. BUSCAR OBJETIVO, FUNCIÓN DE EXCEL. 3.12.2. BUSCAR OBJETIVO, PROGRAMADA EN VISUAL BASIC A. 3.13. FUNCIONES MATEMÁTICAS DE VB. 3.14. FUNCIONES DE EXCEL 3.15. MANEJO DE ERRORES 3.15.1. EVITAR QUE LOS ERRORES DERIVEN EN MOSTRAR EL CÓDIGO
32 32 33 34 34 36 36 38 39 40 40 41 42 42 43 44 45 46 47
4. INTERFAZ GRÁFICA DE VB
49
4.1. INTRODUCCIÓN A LOS FORMULARIOS (USERFORM) 4.1.1. INICIANDO UN FORMULARIO 4.1.2. PROGRAMACIÓN EN UN FORMULARIO 4.2. OBJETOS (CONTROLES) 4.2.1. PROGRAMACIÓN DE LA RUTINA DE RESPUESTA A UNA ACCIÓN DE UN OBJETO 4.2.2. MANEJO DE LAS PROPIEDADES DE UN OBJETO
49 49 50 51 52 53
4.2.3. CUADRO DE TEXTO , TEXTBOX ( 4.2.4. ETIQUETA, LABEL ( )
56 57
4.2.5. 4.2.6. 4.2.7. 4.2.8. 4.2.9.
)
MARCO, FRAME ( ) BOTÓN DE COMANDO, COMMANDBUTTON ( CASILLA DE VERIFICACIÓN, CKECKBOX ( ) BOTÓN DE OPCIÓN, OPTIONBUTTON ( ) CUADRO DE LISTA , LISTBOX ( )
4.2.10. CUADRO COMBINADO, COMBOBOX ( 4.2.11. BOTÓN DE NÚMERO, SPINBUTTON (
)
)
57 58 59 59 60 61
)
62
4.2.12. TOGGLEBUTTON ( ) 4.3. EJECUCIÓN DE RUTINAS
63 64
5. EJEMPLOS APLICADOS A HORMIGÓN ARMADO
65
Tutorial
2 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. 5.1. MOMENTO CURVATURA 65 5.1.1. CONSIDERACIONES 65 5.1.2. GEOMETRÍA Y PROPIEDADES DE LA VIGA 66 5.1.3. ANÁLISIS Y DESARROLLO 67 5.1.4. PROGRAMACIÓN EN VISUAL BASIC 67 5.2. ARMADO DE VIGAS 73 5.2.1. DISEÑO VIGA SIMPLEMENTE ARMADA 73 5.2.2. ANÁLISIS DE LA VIGA DOBLEMENTE ARMADA 76 5.2.3. PROGRAMACIÓN EN VISUAL BASIC COMO CÓDIGO 80 5.2.4. INTERACCIÓN EXCEL - VISUAL BASIC 84 5.3. DIAGRAMA DE INTERACCIÓN CARGA AXIAL – MOMENTO 85 5.4. PUNTOS CARACTERÍSTICOS DEL DIAGRAMA DE INTERACCIÓN CARGA AXIAL - MOMENTO 88 5.4.1. PUNTO DE TRACCIÓN PURA : 88 5.4.2. PUNTO DE FLEXIÓN PURA : 88 5.4.3. PUNTO DE BALANCE EN FLEXO COMPRESIÓN : 89 5.4.4. PUNTO DE 90 5.4.5. PUNTO DE : 90 5.4.6. PUNTO DE COMPRESIÓN PURA : 91 5.5. DIAGRAMA DE INTERACCIÓN P-M DE DISEÑO 92 5.6. EJEMPLO DIAGRAMA DE INTERACCIÓN CARGA AXIAL - MOMENTO : 93 5.6.1. CÁLCULO DEL CENTROIDE PLÁSTICO : 94 5.6.2. TRACCIÓN PURA: 94 5.6.3. FLEXIÓN PURA: 94 5.6.4. PUNTO DE : 96 5.6.5. PUNTO DE : 96 5.6.6. PUNTO DE BALANCE EN FLEXO COMPRESIÓN : 97 5.6.7. PUNTO DE COMPRESIÓN PURA: 98 5.6.8. RESUMEN DE LOS PUNTOS CARACTERÍSTICOS : 98 5.7. ELABORACIÓN DE UNA RUTINA EN VISUAL BASIC DE EXCEL QUE CALCULE UN DIAGRAMA DE INTERACCIÓN 99 CARGA AXIAL - MOMENTO. 5.8. DIAGRAMA MOMENTO CURVATURA CON CARGA AXIAL 106 5.8.1. CÓDIGO EN VISUAL BASIC: 109 258.1. GRÁFICA DE KENT & PARK PARA DISTINTAS CUANTÍAS DE CONFINAMIENTO 114 258.1.1. CÓDIGO Y COMENTARIOS: 115 258.1.2. UTILIZACIÓN DEL CÓDIGO MEDIANTE BOTÓN EN PLANILLA . 118
,
,
=. =.
,
,
=. =.
Tutorial
3 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
El presente documento tiene por objetivo acercar al alumno de Hormigón Armado I a las herramientas de análisis contenidas en Microsoft Excel a través de Visual Basic. El documento se encuentra en desarrollo a medida que el curso avanza en contenidos, los cuales se enumeran a continuación: Capitulo Introducción Materiales Diseño
Tópico Condiciones del curso - 1. Introducción NCh 430 - Otra normas 2. Materiales 3. Conceptos de Diseño - Ejemplo 4. Flexión: Comportamiento - Momento-Curvatura - Agrietamiento 4. Flexión: Post-agrietamiento - Rango no lineal
Flexión
4. Flexión: Rango no-lineal 4. Flexión: Diseño sección rectangular refuerzo en tracción - Ref en compresión 4. Flexión: Viga de sección T 4. Flexión - Ejemplos 5. Corte: General - Previo agrietamiento - Post agrietamiento
Corte en Vigas
5. Corte: Post agrietamiento - Diseño 5. Corte: Diseño - Ejemplos 6. Flexo-compresión: Compr. Axial - Flexo-compr. Uniaxial
Flexo-compresión
6. Flexo-compresión: Diseño 6. Flexo-compresión: Cap. de deformación - Flexión Bi-axial 6. Flexo-compresión: Ejemplo Marco
Adherencia y Anclajes Detallamiento Diseño por capacidad
Tutorial
7. Adherencia y Anclajes 8. Detallamiento 9. Diseño por capacidad: Mecanismo de Colapso 9. Diseño por Capacidad: Casos
Profesor Casa Central: curso. Profesor Campus Santiago: Ayudantes Campus Santiago: o Ignacio Mayorga, o Ignacio Ruiz,
Gilberto Leiva,
[email protected], coordinador del Ricardo Bustamante,
[email protected] [email protected] [email protected]
4 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
2.1. Ingresar al Ambiente Visual Basic
Para utilizar Visual Basic para Excel, es necesario ejecutar el software Excel para luego proceder a ejecutar el VB. Importante destacar que al guardar una planilla de Excel en la cual se programará, ésta debe ser guardada como un archivo de Excel habilitada para Macros
∗..
A continuación se mostrará la interfaz de Excel
Ilustración 1-¡Error! Utilice la pestaña Inicio para aplicar 0 al texto que desea que aparezca aquí..1: Vista "Normal" de una hoja de Excel.
Luego es necesario ejecutar Visual Basic, para lo cual se tienen dos opciones, la primera es tener activada en la barra de herramientas de Excel la sección de Programación (Excel 2010 y anteriores) o de Desarrollador (Excel 2013 y posteriores), como se muestra a continuación:
Tutorial
5 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
Ilustración 2-1-¡Error! Utilice la pestaña Inicio para aplicar 0 al texto que desea que aparezca aquí..2: se muestra cómo abrir Visual Basic mediante las herramientas de Excel.
En la imagen anterior se aprecia que en la barra de herramienta, anteriormente mencionada, se encuentra la opción para acceder a Visual Basic. En el caso que esta no esté activada, se puede activar en la sección de opciones de Excel, yendo a “Archivo” y luego a “Opciones”, en donde se ejecutará la siguiente pantalla:
Ilustración 2-1-¡Error! Utilice la pestaña Inicio para aplicar 0 al texto que desea que aparezca aquí..3: modo de activar la herramienta programador o desarrollador de Excel.
Tutorial
6 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. Luego se tiene que dirigir a la sección de “Personalizar cinta de opciones” y darle un ‘check’ a la opción de “Desarrollador” o “Programación” dependiendo el Excel en el que se esté trabajando.
Una forma más fácil y rápida de entrar a Visual Basic es oprimiendo las teclas "Alt+F11".
2.2. Ambiente Visual Basic Una vez ingresando desde Excel a Visual Basic se observará lo siguiente:
Ilustración 2-2-1: ambiente de trabajo en Visual Basic para Aplicaciones.
La interfaz mostrada anteriormente es idéntica para los distintos Excel. Se aprecia en esta que la pantalla está dividida en dos secciones definidas a continuación: Lado derecho (verde): en esta sección es donde se procederá a programar en todas las secciones
definidas anteriormente y se diseñarán las interfaces gráficas en el caso de los formularios. Lado izquierdo (Rojo): En esta sección se muestran los archivos de Excel que se mantienen
ejecutados en ese momento, en donde cada archivo está subdividido en tres secciones, las cuales tienen ciertas características:
Tutorial
Microsoft Excel Objetos: en esta sección se muestran las hojas de cálculos que posee el archivo seleccionado, además de gráficos y ‘ThisWorkbook’. Ésta última corresponde a la hoja de trabajo del documento. Formularios: en los formularios se muestran los ‘Userform’, los cuales corresponden a la interfaces gráficas que se pueden crear en VB.
7 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
Módulos: esta sección está netamente dedicada a la creación de rutinas de programación, macros y creación de funciones dentro de Excel, para ser utilizadas posteriormente tanto en las Hojas de cálculo como en los Formularios
En las tres secciones anteriores se puede programar, la diferencia radica en lo siguiente:
Programar en las hojas de cálculo (Microsoft Excel Objectos) implica que todas las funciones, variables, y rutinas que se programen en una hoja dada, solo podrán ser ejecutadas en esa hoja. En el caso de programar en Thisworkbook lo declarado se puede utilizar en todas las hojas de cálculo. Estos códigos (en hoja de cálculo o en Thisworkbook) no pueden ser utilizados para interfaz gráfica.
Programar en Formularios, la creación de un formulario (Una Interfaz) funciona de manera independiente a las hojas de cálculo, por ende cada formulario genera su espacio para escribir códigos, variables, funciones, rutinas.
Programar en Módulos considera que la información es de uso público, es decir, si declaro una función, esta puede ser llamada tanto de una hoja de cálculo como de un Userform.
Comentario: Lo usual, y a modo de llevar un orden es: en el caso de tener varias hojas de cálculo que se tengan distintas "Macros (códigos que generan una acción)", por hoja, es declarar esas macros en cada hoja (programar en Microsoft Excel Objetos). En el caso de tener una macro que mezcla información de Varias hojas, ideal que esté programada en Thisworkbook. Las funciones generales que se utilizan programarlas en Módulos. Y en el caso de hacer una interfaz, utilizar la programación en Userform y Módulos.
2.3. Entrando a un Espacio de Programación Como se comentó en la sección anterior, existen tres espacios de programación,
Microsoft Excel Objetos Formularios Módulos
La forma de entrar a estos difiere:
Tutorial
En el caso de Microsoft Excel Objetos, basta sólo decidir en qué hoja programar y hacer doble click en ésta. En el caso de Formularios, primeramente se debe crear un nuevo formulario (yendo a Insertar UserForm). Luego creado, click derecho en el Userform Ver código. Como se observa a continuación:
→
→
8 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
Ilustración 2-3-1: entrar a un espacio de programación de un formulario.
En la imagen anterior se destacan dos opciones, las cuales corresponden a “Ver código” y “Ver objetos”. Para el caso de formularios direcciona inmediatamente a los objetos ( se
observa la interfaz con sus diferentes objetos como botones, etiquetas, etc.), pero al ingresar a los códigos se abre el espacio para programar.
Tutorial
Y por último, en el caso de los módulos, para entrar al espacio de programación basta solamente te crear y módulo y doble "click" sobre éste.
9 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
Se procederá definir los aspectos más importantes de la programación en Visual Basic.
3.1. Variables La capacidad de este programa es bastante amplia en términos de datos de entrada, pudiéndose generar variables del tipo numérico, textos, caracteres entre otros. Además se pueden generar variables con dimensiones, generando así variables de tipo matricial. En este caso se mostrarán algunos de los tipos de variables, las cuales tienen un mayor índice de utilización en el desarrollo de rutinas relacionas a los cursos de “Hormigón Armado”.
3.1.1. Tipos de Variables
Integer:
corresponde a una variable representa los números enteros. (orden de magnitud aprox.: E+9 y E-9).
Single:
corresponden a los números reales, además posee un rango más amplio que los del tipo “Interger” (orden de magnitud aprox.: E+38 y E-45).
Double:
este tipo de variable posee las mismas características de las variables de tipo “single”, la diferencia radica en el orden de magnitud de los máximos
y mínimos. (orden de magnitud aprox.: E+308 y E-324).
Short:
corresponde a una variable numérica de tipo entero, y de valores positivos y negativos (orden de magnitud aprox.: E+4)
Long:
corresponde a una variable numérica de tipo entero, similar a los “Short”, y de valores positivos y negativos (orden de magnitud aprox.: E+18)
String:
corresponden a una de tipo texto, la longitud de ésta variable es cercana a los 2 millones de caracteres. (ej emplo “casa”)
Char:
corresponde a un carácter individual. (ejemplo “X”)
Boolean:
las variables de tipo “boolean” solo pueden tener dos tipos de valores, los cuales son solamente “True” o “False”.
De no definir una variable, VB tomará dicha variable como tipo " Variant " lo asigna como texto, entero o decimal. Otra diferencia entre las distintas variables es el tamaño en Bytes que ocupan. Por ejemplo una variable que será utilizada como contador, es preferible declararla como Integer o Short antes que Double, debido a que Integer "pesa" menos, que se podría traducir en rutinas más rápidas, mas refinadas y livianas. Tutorial
10 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
3.1.2. Declaración de una Variable Para definir las variables se tiene que hacer de la siguiente manera: Dim Nombre_de_Variable As Tipo_de_Variable
Si queremos definir una variable la cual tenga 2 dimensiones, el caso de una matriz, ésta se debe definir de la siguiente manera: Dim Nombre_de_Variable(n_inicial To n_final) As Tipo_de_Variable
En la definición anterior el tipo de variable no es mandatorio incorporarlo. Por ejemplo si se quiere tener una variable que se llame Tipos_Acero, y que sea una matriz de del tipo “Double”, se tendrá lo siguiente:
33
Dim Tipos_Aceros(1 To 3, 1 To 3) As Double Comentario: las matrices también se pueden definir del siguiente modo:
Dim Tipos_Aceros(2,2) As Double
33 0 2
La matriz definida en Ilustración 2.1.3 también corresponde a una matriz de dimensiones . Pero a diferencia del ejemplo anterior, la matriz en este caso se llenará desde el índice hasta . (en el caso anterior, se tenía comienzo desde el índice ).
1
Para llamar o definir un término en específico de esta variable, se tiene que hacer de la siguiente manera:
Para asignar un valor a un coeficiente de una matriz: Tipos_Aceros(1, 1) = Valor_a_Asignar
Para asignarle a una variable cualquiera el valor que corresponde a un cierto coeficiente de una matriz. Alguna_Variable = Tipos_Aceros(1, 1)
En una sección posterior se profundizará mas en el tema Matrices. (Manejo de Arreglos (Matrices).)
3.2. Declaración de una Sub Las "Sub" son el espacio donde se debe programar lo que se desee hacer, éstas tiene que estar definas por un nombre y se pueden crear en los tres espacios posibles (Módulos, Hojas de cálculo o formularios). La forma de declararlas es la siguiente: Sub Nombre1()
Tutorial
11 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. 'Acá va la rutina End Sub
Dentro de espacio de programación se pueden crear múltiples Sub de manera independiente de modo que no interfieren entre sí, la única forma de activarlas es llamarla desde la rutina de una. Supongamos que se tienen dos Sub, una llamada “Nombres” y otra “Rut ”, y dentro del código de la sub rutina Nombres llamaremos a Rut de la siguiente forma: Sub Nombres() Call Rut 'Se ejecutó la sub Rut End Sub
Por otro lado, existe una función para que éstas rutinas sean privadas o públicas, esto quiere decir que si se está trabajando dentro de un Userform y se crea una rutina cualquiera de forma privada, ésta no se podrá utilizar en los códigos de las hojas de cálculo o módulos. Para que la rutina quede de forma privada se tiene que declarar de la siguiente manera: Private Sub Nombre1() 'Acá va la rutina End Sub
De manera análoga, si se quiere la rutina sea de carácter público y pueda ser utilizada desde todas las secciones se debe declarar de la siguiente manera: Public Sub Nombre1() 'Acá va la rutina End Sub
3.3. Declaración de una Función La creación de funciones es de gran utilidad dentro de la programación ya que permite ordenar los códigos y encontrar errores más fácilmente. Para declarar las funciones se requiere asignarle un nombre y señalar las variables de entrada para la función, las cuales serán utilizadas dentro de la rutina de la función, posteriormente se debe asignar un valor al nombre de la función, que será lo
Tutorial
12 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. que el valor que devolverá dicha función. Para declarar las funciones se hace de la siguiente manera,
Public Function Nombre1(Variable1, Variable2) Dim n As Double 'al definirla acá sólo estará en la función n = Variable1 + Variable2 Nombre1 = n 'La función devuelve el valor de n End Function
Ó Private Function Nombre2(Variable1, Variable2) Dim n As Double 'al definirla acá sólo estará en la función n = Variable1 * Variable2 Nombre2 = n 'La función devuelve el valor de n End Function
Se observa que las funciones funcionan de manera similar a las rutinas Sub, ya que éstas se pueden declarar de manera pública o privada. Del mismo modo como se explicó antes. Para la utilización de las funciones dentro de los códigos, basta simplemente con asignar valores a las variables de entrada de la función, como se muestra a continuación Public Sub Suma() Dim a As Double Dim b As Double a = 1 b = 2 Range("A1") = Nombre1(a,b) End Sub
En el ejemplo anterior al ejecutar la rutina, la Celda A1 tendrá un valor de 3. Dado que lo que hace la función creada previamente Nombre1, es sumar los dos parámetros de entrada.
Comentario: es recomendable también definir qué tipo de variable se ingresará a la función.
(porque de no definirla VB lo tomará como Variant, siendo esta una variable que pesa más). La forma de definir el tipo de variable de entrada y el tipo de variable de retorno es: Public Function Nombre1(Var1 As String, Var2 As String) As Double
Tutorial
13 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. Nombre1 = Var1 + Var2 End Function
Las funciones pueden ser utilizadas en planillas de cálculos, para utilizarlas, estas funciones deben ser declaradas como públicas y no deben tener un nombre que genere conflicto con el nombre de las celdas por ejemplo “AB12”, para utilizarlas se debe llam ar como cualquier función integrada en Excel.
3.4. Sentencias Básicas de Programación Para generar algoritmos son necesarios elementos básicos de programación tales como los ‘For’, ‘If ’ o ‘While’, entre otros. Se procederá a mostrar las distintas formas de cómo declarar éstas estructuras.
3.4.1. Declaración de un "For"
Para caso que se necesite repetir una operación número de veces, una alternativa es aplicar un “For” la cual se debe declarar de la siguiente manera
For n = n_o To n_1 Step 2 'Acá va la rutina Next
En lo anterior se aprecia que se utilizó un paso (Step) de valor 2, esto implica que el valor de la variable irá aumentando de dos en dos. El valor del paso puede ser positivo o negativo. Además no es necesario incorporarlo, ya que al no estar presente, el programa trabaja con un paso automático de , en tal caso el valor de las variables y deben corresponder a un parámetro de valor entero.
1
5
0
Por ejemplo, si se quiere definir un proceso reiterativo que parta desde el y termine en con un paso de 0.5 se tiene que declarar de la siguiente manera
0
Por otro lado, si se requiere generar un rutina que parta desde hasta Se tiene lo siguiente
Tutorial
14 - Ignacio Mayorga / Ignacio Ruiz.
100
con un paso unitario.
Hormigón Armado I, UTFSM Santiago.
3.4.2. Declaración de un "If" En el caso de tener que efectuar distintas operaciones según alguna condición o conjunto de éstas. Según si son incluyentes o excluyentes La manera de declararla, es la siguiente:
.
Se pueden asignar múltiples de condiciones. Las cuales se sientan en los siguientes funciones matemáticas:
< > = =
: : : : : :
menor que... mayor que... menor o igual que... mayor o igual que... distinto a... igual a...
Además se pueden complementar dichas condiciones utilizando:
And Or
: :
∧ ∨.
corresponde a "Y", lo que en lógica es . corresponde a "Ó", lo que en lógica es
Ejemplo:
En el ejemplo anterior, el uso de "And" y "Or" son opcionales y no requieren de ser utilizadas, basta con sólo una condición. Al igual que el uso del "Elseif", que en este caso se usa dado a la cantidad de alternativas que se tiene. Para el caso en que se tienen condiciones que utilizan un caso en especial, es conveniente el uso de la rutina Case.
Tutorial
15 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. Otro aspecto bastante útil del uso del If, por su sencillez, es en el caso de que dado una condición en especial se asigne un valor, como lo muestra el siguiente ejemplo.
Que es la forma más simplificada del uso del If. Un uso bastante común del uso del " If" , es en el caso de condicionar el valor de una variable en función de otras dos o más variables. Como lo muestra el siguiente ejemplo:
3.4.3. Declaración de un "Select Case" El “Case” funciona de manera similar al ‘ If ’. Solo se puede manejar una variable para las
condiciones, siendo ésta variable de cualquier tipo. Para declarar un ‘Case’ se hace de la siguiente manera:
3
Las Cláusulas tienen tipos de opciones para definir, las cuales se mostrarán a continuación:
Forma 1:
lo primero y más sencillo es definir una expresión, la cual puede ser una variable, valor o un ‘True’ o ‘False’, lo que indicará que la variable será igual a esta expresión.
á:
Tutorial
Forma 2:
en el caso de que la variable sea de carácter numérica, se puede definir un rango para la aplicación del caso mediante los 2 valores y la expresión ‘To’, de la siguiente manera.
16 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
á:12
Forma 3:
la última forma es ocupar restricciones del tipo =, = . Para poder utilizar este forma es necesario anteponer la expresión ‘Is’.
á: fy / 2100000 Then ts = fy * e / Abs(e) Else ts = 2100000 * e End If End Function
4.- esta última función es para determinar la ubicación de la fuerza concentrada, generada por la deformación del hormigón. El resultado entregado se representó en la figuran anterior con “xc”, y para obtener ésta es necesario ingresar la longitud de la zona en compresión (c) y la deformación máxima del hormigón (e). La rutina es la mostrada a continuación Function x_cc_mc(c, e) n = 1000 dc = c / n dcc_1 = 0 For i = 1 To n dcc_1 = dcc_1 + dc * ((2 * i - 1) / 2) * dc * esf((2 * i - 1) * e / (2 * 1000))
Tutorial
68 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. Next i Next i dcc_2 = 0 For j For j = 1 To To n n dcc_2 = dcc_2 + dc * esf((2 * j - 1) * e / (2 * 1000)) Next j Next j x_cc_mc = dcc_1 / dcc_2 End Function
Con las funciones creadas anteriormente, dentro del mismo modulo se creará la siguiente rutina (sub) para crear el diagrama de momento curvatura. Para aquello, primeramente se mostrará la visualización de la planilla final en donde se observarán los datos y sus posiciones
Dada esta estructura de datos se procede a mostrar el código generado en Visual Basic aración de variables Dim u As Double Dim c Dim c As Double Dim curv(1 To 39) As Double Dim momento(1 Dim momento(1 To To 39) 39) As Double Public Sub mcVSA() Sub mcVSA() Range("j4", "k41").Value = "" fy = Range("c6") fc = Range("c5") b = Range("c3") h = Range("c4") r = Range("c7") As_trac = Range("c8") Carga_axial = 0 c_aux = h - r ‘Decl
For i = 1 To For i 1 To 38 38 def_hor = i / 10000 c = c_aux u = def_hor aux = True Do
Tutorial
69 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. 'Compresión zona Hormigón ComH = ccmc(c, fc, b, u) 'Fin Compresión 'borde tracción es_bt = 10000 * (h - r - c) / c F_acero = As_trac * ts(u * es_bt / 10000, fy) mom = (h - r - c + x_cc_mc(c, u)) * ComH axial = ComH - F_acero 'compresión positivo If Round Round((axial ((axial - Carga_axial) / 1000, 1) = 0 Then aux = False momento(i) = mom / 100000 curv(i) = u * 100 / c c_aux = 1.2 * c ElseIf c ElseIf c < 0 Then aux = False Else c = c - 0.01 End If Loop While While aux aux = True Next i Next i For j For j = 1 To To 38 38 Range("j" & j + 3) = momento(j) Range("k" & j + 3) = curv(j) Next i Next i End Sub
Con lo anterior sólo resta asignar la rutina r utina o macro al botón utilizado, para aquello se debe realizar lo siguiente
En la figura anterior se ve claramente cual botón insertar, una vez hecho esto, se debe tener activado el modo diseño para posteriormente seleccionar el botón y oprimir la opción propiedades, para asignarle un nombre a dicho comando, como se muestra a continuación
Tutorial
70 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
En el casillero anterior se debe colocar el nombre del CommandButton1, un ejemplo sería
“ “ ” Una vez realizado, se debe asignar la rutina o macro al botón, para aquello se puede realizar doble clic sobre el botón en modo de diseño y agregar el siguiente código
1 1_ _ O se puede ir directamente a la interfaz de visual Basic y copiar este código dentro de la hoja que se está trabajando, tal como se muestra a continuación
Tutorial
71 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
Finalmente se debe guardar el archivo como un libro de Excel habilitado para macros, una vez hecho esto se puede ejecutar el código. Advertencias: Ya que en el código se genera un algoritmo iterativo de gran espectro, la solución puede tardar algunos minutos según la potencia del equipo.
Tutorial
72 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
5.2. Armado de Vigas 5.2.1. Diseño Viga Simplemente Armada En el siguiente ejemplo se verá como implementar un código en Visual Basic que calcula los parámetros de diseño de una viga Simplemente Armada. 5.2.1.1.
Parámetrosaconsiderar:
Se trabajará con la viga de la figura 1.1 cuyos parámetros a considerar:
=2.1∙10 ⁄ =4200⁄ =250 ⁄ = =25 =50 =3
Asumiendo comportamiento regido por la ley de Navier de secciones planas permanecen planas, se tiene la siguiente distribución de esfuerzos y deformaciones:
Figura 1: esquemas viga simplemente armada.
Notar: que se trabajará con el rectángulo equivalente de esfuerzos en compresión que permite utilizar ACI318 para estado último. En base a:
Tutorial
Equilibrio interno de la sección Leyes constitutivas de los materiales
73 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. Se obtienen las siguientes expresiones:
=
.1
de la relación en los esfuerzos (ley de Navier) se obtiene que
= ∙ Donde Y considerando las siguientes situaciones:
si
≤
=
el acero está en el rango lineal elástico, por lo cual la fuerza en tracción será:
= ∙ ∙
Si es mayor, el acero fluye por lo cual la fuerza en tracción será:
= ∙
Y por el rectángulo equivalente,
=0.85∙ ∙ ∙ ∙ℎ ó Y por equilibrio de momento
= ∙ ∙ → ó. Nota: podría calcularse respecto a otro punto de la sección. Por último se debe cumplir qué:
=ϕ∙ 31808 5.2.1.2.
Análisisdelasecciónsimplementearmada
Como la Viga se diseñará como Viga Simplemente Armada es fundamental saber si es que con la sección actual se puede obtener la resistencia nominal requerida que cumpla con ser una falla tipo dúctil que es lo que estipula
31808.
Para esto, se calculará cuál es la máxima resistencia nominal cuando la sección se arma con el máximo acero permitido (a mayor acero en tracción, menor deformación debido a que el hormigón para equilibrar la fuerza en tracción necesita más sección en compresión lo que se
Tutorial
74 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. traduce en bajar el eje neutro por ende disminuir la deformación en el acero). Se trabajará con una deformación última del acero mínima del para así obtener un factor de reducción de .
0.005
0.9 31808 9.3
ϕ
Dado que:
Entonces:
= ∙ = 0.003, = 0.005 = 47 =17,625
Siendo se obtiene que Y con las relaciones antes obtenidas se obtiene que,
= 31.44 = ϕ∙ =28.3 .
Este último resultado quiere decir que hasta momentos de la solicitación se puede cubrir con acero de modo que la falla última esperada sea falla dúctil con deformación en el acero mayor al . Esto último dado que de requerir satisfacer momentos mayores a este, no es posible armándola simplemente si se quiere obtener una falla dúctil, debido a que las deformaciones obtenidas en el acero en tracción serían bajo el . Para los casos en que el momento requerido sea mayor al valor obtenido, una solución es adicionar acero en compresión de modo que el eje neutro sube y así la deformación en el acero aumenta y permite adicionar mayor cuantía en tracción para cubrir el delta de momento. Más adelante se desarrollará esta idea con mayor profundidad.
⁄
Tutorial
5 ⁄
75 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. Por otro lado se puede calcular los centímetros cuadrados que están asociados a este valor límite. Despejando de la ecuación 1.
∙ ∙∙ 0.85∙ = ⇒ =18.95
Cuantías mayores a ésta darán una deformación última inferior al código.
5.2.1.3.
Suponiendo que
5 ⁄
. No cumpliendo con el
Calcularloscentímetroscuadradosnecesariosparacubrirlorequerido
= 25 28. 3 5 ⁄ 0.9
Como el momento requerido es inferior a acero será mayor al con lo que será
, en estado último la deformación en el
.
Con lo que la resistencia nominal debe ser
De la ecuación 2 se tiene,
Despejando , se obtiene Por ecuación 1
= ⇒ = 27.78 ϕ = ∙ 2∙ =0.85∙∙ ∙∙∙ ∙ =15.17 = 68.5 ⇒ = =. [] y,
Nota: no se calculó la deformación del acero debido a que por análisis antes mencionado esta será mayor al .
5 ⁄
5.2.2. Análisis de la Viga Doblemente Armada Con los resultados obtenidos hasta ahora se tiene:
Tutorial
76 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
La viga armada simplemente (sólo refuerzo a tracción) resiste un momento máximo último de:
= ϕ∙ =28.3 5 ⁄ ϕ=0.9. =18.95
Para cumplir con una deformación en el acero mayor al
La cuantía que le brinda esa resistencia máxima es:
Estos últimos resultados indican, como se comentó, que para cuantías menores la deformación en el acero será mayor al cinco por mil y para cuantías mayores no. Ahora bien, ¿Qué sucede si la solicitación de la viga es mayor a
?.
Si la solicitación es mayor, se requiere una mayor cuantía de refuerzo en tracción, y como se comentó asignar una cuantía mayor implica no cumplir con la deformación del acero en tracción. Para esto, se requiere entonces asignar acero en compresión, que le entrega mayor ductilidad a la viga dado que el eje neutro sube debido a que necesita menos sección en compresión ya que el acero en compresión también trabaja. Entonces al asignarle acero en compresión se puede asignar cierta cuantía en tracción de modo de cumplir con las deformaciones.
Figura 1: esquemas Viga Doblemente armada.
40
28.3
Supongamos el caso en que el solicitado es . Este valor es mayor que por ende se requiere refuerzo en compresión ¿cuánto? Una forma alternativa, pero muy útil de saber cuánto acero en compresión se requiere sin tener que hacer mayores cálculos es:
Tutorial
Se requiere cubrir un momento extra de,
∆ = 0.409 31.44 = 13
77 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
Este delta de momento se cubrirá con un momento par generado por el refuerzo en tracción que se asignará y el refuerzo en compresión. De modo qué si se tiene:
Figura 3: esquema representativo del aporte del momento par.
Primero, como se busca no alterar el equilibrio, de modo de conservar el mismo eje neutro y el mismo estado de deformaciones se impone la condición:
∙ = Ahora bien, el momento que genera el par fuerza es:
∆ = ∙ ∙′ = 13 Implica que,
Siendo
∙ ∙′ = ∆ ∆ ⇔ = ∙′ el recubrimiento superior. Se obtiene,
= .
Y,
= ∙ ∙ ⇒ = ∙ ∙ o,
Tutorial
78 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
= ∙ ⇒ =
Saber si fluye o no arriba, es muy sencillo y se desprende del diagrama de estado de deformaciones,
= ∙′
Con los valores que se calcularon para el estado de máxima cuantía:
= 0.003∙17.6253 17.625 = 0.00248 ⇒ ó .
Por lo que se debe agregar:
= = . ∴ 7.04 ó ó = 40 El análisis antes obtenido es muy útil para cálculos rápidos. Sin embargo si se solicita verificar una viga dada ciertas cuantías en compresión y tracción se debe entrar a utilizar las ecuaciones que se verán a continuación. Verificación de resultados: Al igual que el equilibrio analizado para la viga simplemente armada, se generan las siguientes ecuaciones:
= + = ∙ 2∙+ ∙
.1 .2
Al igual que el acero en tracción, el acero en compresión debe analizarse para el caso en que fluye o en que no. (Para el cálculo de la fuerza )
Entonces, los resultados obtenidos se tuvieron qué:
= 18.95+7.04 = 25.99 ′ = 0+7.04 = 7.04 =0.9
Se supone (acero en tracción fluyendo) Se supone acero en compresión fluyendo
Entonces:
Tutorial
79 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. De la ecuación 1:
∙ =0.85∙′∙∙ ∙+ ∙′ Despejando C y remplazando se obtiene:
= . Verificación de deformaciones (para ver si los supuestos fueron bien hechos)
= ∙′ =0.002489 →. = ∙ =0.005 →.
De la ecuación 2 se obtiene:
=0.85∙′∙∙ ∙∙ 2∙+ ∙′∙ ⇔ =44.445 ⇒ =∙ = Valor que se requería.
5.2.3. Programación en Visual Basic como código
DECLARACIÓN DE VARIABLES GLOBALES Dim H As Double Dim B As Double Dim Fpc As Double Dim Fy As Double Dim E As Double Dim B1 As Double Dim r As Double 'recubrimiento inferior Dim c As Double Dim c_max_SA As Double Dim e_cu As Double Dim d As Double Dim Mn_max_SA As Double Dim As_max_SA As Double Dim es As Double Dim As1 As Double Dim Asp As Double
Tutorial
80 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. Dim As1_extra As Double Dim Asp_extra As Double Dim esp As Double Dim rp As Double 'recubrimiento inferior
MACRO PRINCIPAL: Sub Viga_simplementeA() Dim Mu_max_SA As Double 'Máximo momento que se puede cubrir con viga SA,'para obtener una deformación es mayor al 5 por mil. Dim Mu As Double 'Ingreso de datos. B = 25 'cm. H = 50 'cm. Fpc = 250 'kgf/cm2. Fy = 4200 'kgf/cm2. E = 50 'kgf/cm2. r = 3 'cm. rp = 3 'cm. Mu = 40 'ton-m. e_cu = 0.003 'deformación última del hormigón. '' d = H - r B1 = beta(Fpc) 'B1 tomará el valor que toma Beta en la función beta con valor de entrada Fpc. Call resistenciaMaxSA 'Se llama a la macro que calculará la resistencia máxima admisible para Viga 'simplemente armada (supuesto: es = 0.005). If Mu * 10 ^ 5 < 0.9 * Mn_max_SA Then 'Calcula el área requerida sólo en el caso en que se pueda 'obtener una deformación última del acero mayor a 0.005. As_req = raiz(0.85 * Fpc * B1 ^ 2 * B * 0.5, -0.85 * Fpc * B1 * B * d, (Mu * 10 ^ 5) / 0.9) MsgBox "La viga NO requiere ser doblemente armada. Se cubre con: " & Round(As_req, 2) & " [cm2] con una deformación de es = " & Round(es, 4) ''la función Round(variable, decimal a redondear) es redondear. Else ' en el caso que no, se calcula los aceros extra a agregar con el momento par As1_extra = (Mu * 10 ^ 5 / 0.9 - Mn_max_SA) / (Fy * (d - rp)) esp = e_cu * (c_max_SA - rp) / c_max_SA If esp < Fy / E Then Asp_extra = Fy * As1_extra / (E * esp) Else Asp_extra = As1_extra End If MsgBox "La viga SI requiere ser doblemente armada, con acero inferior : " & Round(As_max_SA, 2) + Round(As1_extra, 2) & " [cm2]" & " Acero superior: " & Round(Asp_extra, 2) & " [cm2]" Tutorial
81 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
End If End Sub
FUNCIONES Y MACROS SECUNDARIAS Private Function beta(x As Double) 'x es el valor de entrada a la función '(en este caso x = Fpc). 'ACI318S-08 Cap 10.2.7.3 If x 0 And x2 > 0 Then dist1 = Abs(H / 2 - x1) dist2 = Abs(H / 2 - x2) If dist1 < dist2 Then c = x1 Else c = x2 Tutorial
82 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. End If Else c = Application.WorksheetFunction.Max(x1, x2) End If ' Con el valor del eje neutro encontrado se procede a calcular el área requerida raiz = (0.85 * Fpc * B1 * c * B / Fy) es = e_cu * (d - c) / c '2.- ALTERNATIVA POR NEWTON RHAPSON 'Se buscará el eje neutro con el algoritmo de Newton Rhapson 'Dim dif_acep As Double 'Dim incremento As Double 'dif_acep = 0.01 'Valor admisible para terminar la iteración del método 'paso = 0.001 'Paso de la iteración 'c_o = 0 'comeienzo 'Dim encontrado As Boolean 'encontrado = False 'variable que al ser verdadera se terminará la iteración 'Do While encontrado = False 'c_1 = c_o + paso 'c_1 = c_o - (c_o ^ 2 * aa + c_o * bb + cc) / (2 * c_o * aa + bb) 'Formulación de Newton Rhapson ' If c_1 - c_o < dif_acep Then 'Verificación para ver si el método converge ' encontrado = True ' End If ' 'c_o = c_o + paso 'Loop 'c = c_o '' End Function
EL código al correrlo mostraría por pantalla:
Tutorial
83 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
5.2.4. Interacción Excel - Visual Basic Para trabajar Excel apoyado por Visual Basic, una vez que el código ya está realizado, basta referenciar que la entrada de datos sea por medio de celdas de Excel, de modo que: El ingreso de datos y resultados en la planilla sea así:
Ilustración ¡Error! Utilice la pestaña Inicio para aplicar 0 al texto que desea que aparezca aquí..24
Entonces el antiguo ingreso de datos debe ser modificado por: 'Ingreso de datos. B = Range("c3") 'cm. H = Cells(4, 3) 'cm. cells(fila,columna) Fpc = Cells(5, 3) 'kgf/cm2. Fy = Cells(6, 3) 'kgf/cm2. E = Cells(7, 3) 'kgf/cm2. r = Cells(8, 3) 'cm. rp = Cells(9, 3) 'cm. Mu = Cells(10, 3) 'ton-m. e_cu = Range("c11") 'deformación última del hormigón.
Notar que se observan dos formas de referencias, mediante Range o mediante Cells, ambas son válidas. Sin embargo para códigos más complejos es más útil trabajar con Cells debido a que se puede hacer un barrido en sus filas y en sus columnas mediante valor numérico. La propiedad Range sirve para asignar un rango, por ejemplo si se quisiera eliminar los datos ingresados, mediante código, habría que ocupar Range(cells(3,3),cells(10,3)).ClearContents. Ahora para que se muestren los resultados en las filas de la columna H, habría que agregar al código, en la parte que aparecer:
Tutorial
84 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. MsgBox "La viga NO requiere ser doblemente armada. Se cubre con: " & Round(As_req, 2) & " [cm2] con una deformación de es = " & Round(es, 4)
Cells(5,8) = "NO" Cells(6,8) = Round(As_req, 2) & " [cm2]" Cells(7,8) = "-" Cells(8, 8) = Round(es, 4) Cells(9, 8) = "-" Análogamente agregar para el caso en que requiera ser doblemente armada:
Cells(5,8) = "SI" Cells(6,8) = Round(As_max_SA, 2) + Round(As1_extra, 2) & " [cm2]" Cells(7,8) = Round(Asp_extra, 2) & " [cm2]" Cells(8, 8) = 0.005 Cells(9, 8) = Round(esp, 4) Notas:
El uso de "&" es para concatenar el valor numérico a un texto, en este ejemplo es para que pegue en la celda la cuantía y la unidad. Al asignarle a VB algo entre doble comillas, lo asigna como texto (igual que en Excel) o String. El MsgBox ya no sería necesario dado que se está mostrando el resultado en las celdas asignadas.
5.3. Diagrama de Interacción carga axial – momento
,
Las columnas son elementos estructurales que están sometidos a esfuerzos principalmente de compresión y también de flexión. El comportamiento del elemento está dominado por las fuerzas de compresión que actúan sobre él, condicionando su resistencia a flexión. Para el diseño se emplea un enfoque de análisis a flexo-compresión (carga axial y de momento flector). El análisis es similar al hecho en vigas, con la diferencia que ahora el equilibrio se realiza con la presencia de carga axial. La inclusión de la carga axial se traduce en agregar una incógnita al problema, cosa que matemáticamente no tendría solución, es por esto que para los elementos de flexo-compresión la solución de asocia a un par . Para efectos prácticos, esto se entiende como que para una columna sometida a un esfuerzo axial dado, podrá resistir un momento nominal que dependerá de la carga axial.
,
Ahora bien, ¿qué cargas axiales se considerará?, En estricto rigor se deben considerar todas las combinaciones a las cuales se espera esté sometido el elemento. Para efectos prácticos, uno puede hacer un barrio desde la carga axial máxima y la carga axial mínima que resiste la columna de modo de tener todas las posibles combinaciones de resistencias , del elemento. A la representación gráfica de esto es lo que se conoce como el diagrama de interacción carga axial - momento, y este es fundamental para el diseño.
,
,
Tutorial
85 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
El diagrama de interacción obtenido será el de resistencia nominal. El código estipula que éste debe ser minorado por un factor que se explicará al final de este apartado.
Para la elaboración del diagrama de interacción se debe resolver el equilibrio en la sección sometida a un momento flector y una carga axial en el instante en que falla el elemento . La falla se produce por el aplastamiento del hormigón . El siguiente esquema muestra el estado tensional y de deformación en la sección al momento de estado último.
=0.003
,
De la figura anterior se observan lo siguiente:
Las fuerzas sobre la sección: o Una carga de compresión y una de flexión. En la figura se representan como .
,
Las fueras de reacción de la sección: o Compresión del hormigón: magnitud calculada según rectángulo equivalente del código ACI. Que es una aproximación fidedigna para el estado último del concreto. o Fuerzas del refuerzo: estas pueden ser en tracción o en compresión y dependen del estado de deformaciones de la sección transversal.
Centroide plástico : corresponde al punto de la sección que al cargarlo, la deformación axial de toda la sección es uniforme. La carga axial externa se debe aplicar en este punto debido a que así no genera un momento.
Al es un centroide (en este caso de esfuerzos), se obtiene al igual que cualquier centroide, por ejemplo geométrico. La fórmula es:
Tutorial
86 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
= ∑∑∙ Y con respecto a la Imagen anterior:
∙ ∙+∙ ∙+.∙′∙∙∙/ = ∙ +∙ +.∙′∙∙ Medido desde arriba hacia abajo. Este centroide podría ser más preciso si para el esfuerzo en compresión se restaran las áreas que utilizan los aceros, sin embargo la diferencia es despreciable. Entendiéndolo conceptualmente es lógico que para la sección de la imagen anterior, el centroide plástico esté más abajo de la mitad, debido a que existe mayor refuerzo en la sección inferior. Del mismo modo para una sección de refuerzo simétrico el centroide plástico caerá en la mitad.
Nota: para efectos de este apunte, cuando se hable de refuerzo inferior, es solamente referido a la disposición de la imagen, que correspondería al área de acero Análogo para refuerzo superior Se menciona esto debido a que al ser columnas (elementos verticales) es absurdo hablar de refuerzo inferior o superior.
.
.
Las ecuaciones de equilibrio que rigen el sistema son:
=+ ó Donde,
=0.85∙′∙∙ = ∙ ∙ ó ∙ = ∙ ∙ ó ∙ Y por estados de deformación se sabe qué:
Y la ecuación de momento se tiene qué:
Siendo
Tutorial
= ∙ = ∙ ′
= ∙ 2∙+ ∙( ′)+ ∙( ) ó = .
87 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
,
Se tienen dos ecuaciones y dos incógnitas , por ende el sistema tiene solución. Basta implementar un algoritmo y se puede hacer el barrido completo. En un apartado posterior se implementará el algoritmo en VBa que incorpore lo aprendido en el tutorial.
5.4. Puntos característicos del diagrama de interacción carga axial - momento Punto de tracción pura
,
:
La capacidad última en tracción del elemento será cuando sólo están actuando las barras de refuerzo, y llevándolas a un estado último cuando estas fluyen.
Y por equilibrio se tiene:
= ∙′ +
Punto de flexión pura: Ocurre cuando la carga axial es igual a cero. es decir se está en presencia de flexión pura. Mismo equilibrio que se hace en vigas.
Tutorial
88 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
Las ecuaciones de equilibrio en este caso son:
= + = ∙ 2∙+ ∙
.1 .2
Ajustando las fuerzas de los refuerzos de acero en función de su deformación. Siendo
=
.
5.4.3. Punto de balance en flexo compresión: Ocurre cuando el concreto llega a su deformación última en el mismo instante que el acero de refuerzo a su deformación de fluencia. Se obtiene por equilibrio al hacer.
Tutorial
89 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
En este caso se conoce la deformación del refuerzo en tracción inferior obtiene el valor del eje neutro de la compatibilidad de deformaciones:
=
= ∙ =
Luego con el valor del eje neutro, se obtiene la deformación del acero superior
, por ende se
= ∙ −
.Y
con esto se puede obtener el valor de la carga axial y momento que generan ese estado de deformación. (utilizando la ecuación 1 y 2).
5.4.4. punto de
=.
Ocurre cuando la deformación del refuerzo en tracción es del 4 por mil. punto útil para efectos de la normativa. (factores de minoración). Se calcula del mismo modo que el punto de balance, solamente cambia el valor de la deformación.
= ∙ =0.004 Luego con el valor del eje neutro, se obtiene la deformación del acero superior
= ∙ −
.Y
con esto se puede obtener el valor de la carga axial y momento que generan ese estado de deformación. (utilizando la ecuación 1 y 2).
5.4.5. Punto de
=.
:
Ocurre cuando la deformación del refuerzo en tracción es del 5 por mil. punto útil para efectos de la normativa. (factores de minoración). Se calcula del mismo modo que el punto de balance, solamente cambia el valor de la deformación.
Tutorial
90 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
= ∙ =0.005 Luego con el valor del eje neutro, se obtiene la deformación del acero superior
= ∙ −
.Y
con esto se puede obtener el valor de la carga axial y momento que generan ese estado de deformación. (utilizando la ecuación 1 y 2).
5.4.6. Punto de compresión pura
,
:
Máxima compresión que soporta la columna sometida sólo a una carga axial.
Y por equilibrio se tiene:
=.∙′ ∙ + ∙′ + ∙′ +
Donde es el área de concreto igual a . Es decir el esfuerzo máximo en el concreto sumado al esfuerzo cuando las barras en compresión están fluyendo. (recordar que el factor de 0.85 propone el ACI para el rectángulo equivalente de esfuerzos en el concreto cuando se tiene una deformación última.
Nota: la expresión anterior es válida para cuando la carga se aplica sobre el , por que osino hubiese un pequeño momento y el punto de compresión no caería sobre el eje de las ordenadas. Cabe mencionar que ACI tomando en consideración esto último restringe la compresión máxima, por el hecho de existir pequeñas excentricidades.
Tutorial
91 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
5.5. Diagrama de Interacción P-M de diseño
31808 á
Al igual como se hace en elementos en flexión, el código impone factores que reducen la resistencia nominal de la sección a modo seguridad donde se debe velar por cumplir:
, ≤ , , , Donde
corresponde a las solicitaciones mayoradas que actúan sobre el elemento, es la resistencia nominal de la sección (DI antes calculado), y corresponde al factor de reducción de resistencia que apunta a prevenir el tipo de falla frágil (al igual que en elementos en flexión). La forma en que el código (ACI) prevee la falla frágil es asignándole mayor factor a los estados últimos que tienen menor ductilidad y uno menor a los con mayor. Por ende el factor dependerá de la deformación del refuerzo en tracción, que al igual que en vigas, se tendrá un factor de para deformaciones bajo el 2 por mil (sección controlada por compresión), para secciones con deformación del refuerzo en tracción superior al 5 por mil (sección controlada por tensión). Y una transición lineal desde un régimen a otro. Esto se especifica en la sección .
0.65
=0.9
=
9.3.2.2 31808
En la misma sección se especifica que se puede utilizar de forma alternativa una reducción que depende de la carga axial, que será la que se implementará y explicará en este apunte. Consiste que el factor se incrementará linealmente desde en la medida que disminuye desde ó , el que sea menor, hasta cero.
0.1∙∙
= 0.65 = 0.9
Es decir, como se tendrá el diagrama de interacción de resistencia nominal
0.1∙∙ 0.65∙
,,
se calculará:
Y a partir del valor más pequeño de los dos, se reducirá según corresponda para obtener la curva de diseño . Según la siguiente recta:
,
= 0.9 0.10.∙25∙ ó0.0.6655∙ ∙
Por otro lado, se especifica en el código que para los elementos sometidos flexión y carga axial, la carga axial máxima debe ser:
á =∙0.8∙0.85+∗ + Que equivalente a:
á = ∙. ∙ ó En el ejemplo se puede ver la aplicación de la minoración. Se escogió esta forma alternativa debido a que no se almacenó la deformación del acero en la rutina de Vba, sino las cargas axiales.
Tutorial
92 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
5.6. Ejemplo diagrama de interacción carga axial - momento Se obtendrá el diagrama de interacción
, , y
,
:
de la siguiente columna:
Se tienen los siguientes datos y parámetros a consideras:
=2.1∙10 ⁄ =4200 ⁄ ′ =250 ⁄ =40 =60 =5 ′=5 = 425 = 19.63 ′ = 225 = 9.82
Con el refuerzo provisto se obtiene una cuantía de:
+ = ∙ ∙100=1.23 % 318 08ó 21.6.3.1
Que está dentro de lo permitido por que limita la cuantía de refuerzo longitudinal en elementos a flexo - compresión como mínimo 1% y máximo 6%. Sin embargo, como recomendación, no superar el 3-4%. Observación: en este caso, al tener un refuerzo asimétrico (más acero inferior que superior), se tendrá diferentes valores dependiendo del sentido en que se analice. Se calculará en este caso cuando la flexión genera que el refuerzo inferior se tracciona. (lado derecho del diagrama de interacción).
Tutorial
93 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
5.6.1. Cálculo del centroide plástico: Calculado desde la parte superior se tiene:
∙ ∙+∙ ∙+.∙′∙∙∙/ = ∙ +∙ +.∙′∙∙ 605+0.85∙250∙40∙60∙ 60/2 = 9.82∙4200∙5+19.63∙4200∙ 9.82∙4200+19.63∙4200+0.85∙250∙40∙60 = . También respecto a la reducción del diagrama de integración se utiliza el valor de:
.∙∙ = 0.1 ∙250∙40∙60 = .∙ =128.18 á 0.1∙∙ 60
Por ende se reducirá utilizando el valor de
que es el menor valor
.
También se utilizará el valor máximo de carga axial admisible:
á =0.8∙ ó = 0.8 ∙627.44 = . ,
En base a lo expuesto, se procede a calcular los puntos característicos del diagrama de interacción y su correspondiente reducción para diseño:
5.6.2. Tracción Pura:
= ∙′ +=4200∙19.63+9.82 = . =
Para diseño:
=.⟹ , = 0.9∙127.7,0 = . , 5.6.3. Flexión Pura:
= + = ∙ 2∙+ ∙
.1 .2
Asumiendo que en el estado último el refuerzo inferior está en fluencia y el superior en estado lineal
Tutorial
<
. Se tiene:
94 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
=∙ =19.63∙4200=. ′ = ∙∙ =9.82∙2.1∙10 ∙ =.∙ = ∙ ′ ′ =.∙.∙
Siendo,
Se obtiene,
Y la fuerza en compresión del hormigón es:
=0.85∙ ∙ ∙∙=0.85∙250∙0.85∙∙40=.∙ / Donde,
= 0.85 31008 ó 10.2.7.3,
Por ecuación 1 (equilibrio de fuerzas) se tiene:
82.47=7.25∙+20616.7∙0.003∙ 5
Despejando se obtiene:
= .
Con lo que se obtiene:
8.1235 = . ⟹ = ∙ ′ =0.003∙ 8.123 558.123 = . ⟹ = ∙ = 0. 0 03∙ 8.123
Con lo que se verifica que los supuestos fueron bien hechos. Ahora, de la ecuación 2 se obtiene:
=7.25∙8.123∙55 0.85∙8.2 123+20616.7∙0.003∙ 8.1235 ∙555 8. 1 23 = . = ó . Para diseño:
=.⟹ , = 0,0.9∙42.14 = ,.
Tutorial
95 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
5.6.4. Punto de
=.
:
Al conocer el estado de deformación del acero inferior, se obtiene c.
55 = 0.005 = ∙ = . ⟹ 0. 0 03∙
Se despeja y se obtiene:
= . 20.635 =0.00227⟹ = ∙ ′ =0.003∙ 20.63
Y por estado de deformación:
Las fuerzas a considerar son:
=∙ =19.63∙4200=. ′ = ∙ =9.82∙4200=. =0.85∙ ∙ ∙∙=0.85∙250∙0.85∙23.57∙40=.
Entonces por equilibrio,
=+ ó = 149.02+41.23 82.47= . Y la ecuación de momento se tiene qué:
= ∙ 2∙+ ∙( ′)+ ∙( ) ó 63+41.23∙31.635+ 82.47∙5531.63 =. ∙31.63 0.85∙20. 2 = . Para diseño:
=. > , = 0.65∙107.78 ,0.65∙64.32 ⟹ = . ⟹= . ,.
Según el criterio de diseño utilizado depende del valor de la carga axial. Como
NOTA: según criterio por deformación el factor en este caso sería 0.9.
5.6.5. Punto de
=.
:
Su procedimiento de cálculo es análogo al punto anterior, con la diferencia que la deformación del acero inferior es en este caso
= 0.004.
Tutorial
96 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
55 = 0.004 = ∙ = . ⟹ 0. 0 03∙
Se despeja y se obtiene:
= . 23.575 =0.00236⟹ = ∙ ′ =0.003∙ 23.57
Y por estado de deformación:
Las fuerzas a considerar son:
=∙ =19.63∙4200=. ′ = ∙ =9.82∙4200=. =0.85∙ ∙ ∙∙=0.85∙250∙0.85∙23.57∙40=.
Entonces por equilibrio,
=+ ó = 170.3 +41.23 82.47= . Y la ecuación de momento se tiene qué:
= ∙ 2∙+ ∙( ′)+ ∙( ) ó 57+41.23∙ 31.635+ 82.47∙5531.63 =. ∙31.63 0.85∙23. 2 = . Para diseño:
=. > ,,. ⟹ = . ⟹= . = 0.65∙129.07 ,0.65∙67.06
Según el criterio de diseño utilizado depende del valor de la carga axial. Como
NOTA: según criterio por deformación el factor en este caso sería distinto de
0.65
.
5.6.6. Punto de balance en flexo compresión: Su procedimiento de cálculo es análogo a los puntos anteriores, con la diferencia que la deformación del acero inferior es en este caso
= . 55 = 4200 = ∙ = ⟹0.003∙ 2.1∙10
Se despeja y se obtiene:
Tutorial
97 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
= =0.0025⟹
Con lo que se obtiene:
Las fuerzas a considerar son:
= . ′ =. =.
Entonces por equilibrio,
= . = . Para diseño:
=. > , 0.65∙197.19 ,0.65∙72.22 ⟹ = . ⟹= . = , .
Según el criterio de diseño utilizado depende del valor de la carga axial. Como
5.6.7. Punto de compresión Pura:
=.∙′ ∙ + ∙′ + =0.85∙250∙ (40∙60 9.82+19.63)+4200∙9.82+19.63 = . = Para diseño:
Según el criterio de diseño utilizado depende del valor de la carga axial. La carga axial máxima fue calculada previamente:
á = . ⟹ = . ⟹ , = 0.65∙501.95 ,0 = . , 5.6.8. Resumen de los puntos característicos:
ó Tutorial
123.7 0 111.33 0.00 98
- Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
ó . . ó ó
0 107.78 129.07 197.19 627.44
42.14 64.32 67.06 72.22 0
0.00 70.06 83.90 128.17 326.27
37.93 41.81 43.59 46.94 0.00
En la siguiente gráfica se observan los puntos característicos:
Puntos Característicos del Diagrama de Integración. ] n o t [ L A I X A A G R A C
700 600 500 400 300 200 100 0 -100 0
10
20
30
40
50
60
70
80
-200 MOMENTO [ton-m]
De los resultados obtenidos se desprende, entre otras cosas, que a mayor carga axial menor capacidad de deformación (ductilidad) presenta la sección. Esto se puede observar en un diagrama de carga axial - curvatura, que se presentará en el apartado siguiente.
5.7. Elaboración de una rutina en Visual Basic de Excel que calcule un diagrama de Interacción carga axial - momento. La siguiente rutina desarrolla un diagrama de interacción características:
,
donde se tienen las siguientes
Ingreso de datos mediante código. Desarrollo matemático en VBa. Sólo se utiliza la hoja de Excel para votar resultados y graficarlos. Realiza un diagrama de interacción en ambos sentidos (positivo y negativo).
El objetivo de la rutina es que se familiaricen sobre el uso de diferentes herramientas que se presentaron a lo largo del tutorial. Como se verá la comprobación se hizo mediante el software Etabs y los resultados difieren en un error despreciable.
Tutorial
99 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. Algunos comentarios:
/0.85
En el código constantemente se habla se Positivo y Negativo, se refiere a los sentidos de análisis según la siguiente convención:
La siguiente imagen muestra el rango de valores graficados:
Tutorial
0.75∙′
Se grafican 150 puntos por sentidos variando el eje neutro desde hasta . Estos valores se escogieron para evitar problemas de excentricidad. Es decir, para valores donde el eje neutro es muy grande o muy pequeño, los resultados obtenidos no tienen sentido. Por ejemplo un eje neutro de dos, en la columna del ejemplo anterior, se obtiene una carga axial de tracción y un momento negativo, cosa que deja de tener sentido (por el momento negativo). Se podría haber implementado un algoritmo que busque el valor en que el momento es cero, y graficar hasta ahí, pero sencillamente consideré que es absolutamente innecesario, y que sólo complicaría el código.
100 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
Diagrama de Interacción P-N Negativo
Positivo
800 600
] n o t [ l a i x a a g r a C
400 200 0
-70
-20
30
80
-200 Momento [ton - m]
Observación: el código se encuentra comentado y sigue la lógica de cómo se explicó en este apunte. Se recomienda que para su estudio se copie y pegue en VBa, porque por temas de espacio queda poco legible. El diagrama obtenido del ejercicio anterior es:
Diagrama de Interacción P-M 700 600 500 400
] n o t [ l a i x a a g r a C
300 200 100 0 -80
-60
-40
-20
0
20
40
60
80
-100 -200 Momento [ton-m] Ilustración 25: Diagrama de interacción (P-M) de la columna en estudio. El exterior diagrama Nominal y el interior de diseño.
El código es el siguiente:
Tutorial
101 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. 'DEFINICIÓN DE VARIABLES Dim B As Double 'ancho columna Dim H As Double 'alto columna Dim dr As Double 'recubrimiento Dim fy As Double 'esfuerzo de fluencia del acero Dim E As Double 'módulo elástico del acero Dim fpc As Double 'resistencia especificada a compresión del hormigón f'c Dim ecu As Double 'deformación última del hormigón Dim As1 As Double 'área de acero del refuerzo inferior As Dim Asp As Double 'área de acero del refuero superior As' Dim Pi As Double 'constante pi Dim d As Double 'H-r Dim cp1 As Double 'centroide plástico positivo Dim cp2 As Double 'centroide plástico negativo Dim b1 As Double 'beta 1. factor rectángulo equivalente Dim matriz_Pn1_Pn2_Mn1_Mn2_Curv() As Double ' matriz de 5 filas, que se le irán agregando columnas 'las filas son: Pn1,Pn2, Mn1, Mn2, Curvatura 1/m. Dim aux As Double 'contador de datos 'INGRESO DE DATOS Sub Ingreso_de_Datos() B = 40 'cm H = 60 'cm dr = 5 'cm fy = 4200 'kgf/cm2 E = 2.1 * 10 ^ 6 'kgf/cm2 fpc = 250 'kgf/cm2 ecu = 0.003 Pi = 3.14159265358979 As1 = 19.6349540849362 'cm2 Asp = 19.6349540849362/2 'cm2 d = H - dr 'CALCULO DE BETA If fpc 0.8*Pc Then matriz_Pd1_Pd2_Md1_Md2(1,k)=Pc*0.8*0.65 Else matriz_Pd1_Pd2_Md1_Md2(1,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)*0.65 End If matriz_Pd1_Pd2_Md1_Md2(3,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,k)*0.65 Else If matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)>= 0Then phi=0.9(0.25*0.65/CeroPuntoUno)*matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k) matriz_Pd1_Pd2_Md1_Md2(1,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)*phi matriz_Pd1_Pd2_Md1_Md2(3,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,k)*phi Else phi = 0.9 matriz_Pd1_Pd2_Md1_Md2(1,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)*phi matriz_Pd1_Pd2_Md1_Md2(3, k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,k)*phi End If End If If matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)>CeroPuntoUno/0.65 Then If matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)>0.8*Pc Then matriz_Pd1_Pd2_Md1_Md2(2,k)=Pc*0.8*0.65 Else matriz_Pd1_Pd2_Md1_Md2(2,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)*0.65 End If matriz_Pd1_Pd2_Md1_Md2(4,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,k)*0.65 Else If matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)>=0 Then phi=0.9(0.25*0.65/CeroPuntoUno)*matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)
Tutorial
105 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
matriz_Pd1_Pd2_Md1_Md2(2,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)*phi matriz_Pd1_Pd2_Md1_Md2(4,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,k)*phi Else phi = 0.9 matriz_Pd1_Pd2_Md1_Md2(2,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)*phi matriz_Pd1_Pd2_Md1_Md2(4,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,k)*phi End If End If Next k Range(Cells(2,6),Cells(aux+1,9)).Value Application.WorksheetFunction.Transpose(matriz_Pd1_Pd2_Md1_Md2) End Sub Private Function beta(x As Double) If (0.85-(0.2)/280*(x-280)) Fy / E And ecm * (d - kd4) / kd4 < Fy / E Then 188. kd = "kd4" 189. 'MsgBox kd4 190. Cs = asp * Fy 191. Ts = E * as1 * ecm * (d - kd4) / kd4 192. End If 193. 194. 'MsgBox "El Kd encontrado (mayor a eo) es: " & kd 195. 196. ybarra = ((5 / 12) * (eo * kd / ecm) ^ 2 + kd ^ 2 / 2 - ecm * kd ^ 2 / (6 * (e50c - eo)) + eo * kd ^ 2 / (4 * (e50c - eo)) - (1 / 2) * (eo * kd / ecm) ^ 2 - eo ^ 3 * kd ^ 2 / (12 * ecm ^ 2 * (e50c eo))) / (kd * (1 - eo / (3 * ecm) - ecm / (4 * (e50c - eo)) + eo ^ 2 / (4 * ecm * (e50c - eo)))) 197. cc = fpc * B * kd * (1 - eo / (3 * ecm) - ecm / (4 * (e50c - eo)) + eo ^ 2 / (4 * ecm * (e50c - eo))) 198. M = (cc * (cp - kd + ybarra) + Cs * (cp - rp) + Ts * (d cp)) * 10 ^ -5 199. curv = ecm / kd 200. 'MsgBox M 201. 202. End If 203. 204. contador = contador + 1 205. ReDim Preserve ec_kd_es_esp_M_Cur(1 To 6, 1 To contador) 206. 207. ec_kd_es_esp_M_Cur(1, contador) = ecm
Tutorial
112 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. 208. ec_kd_es_esp_M_Cur(2, contador) = kd 209. ec_kd_es_esp_M_Cur(3, contador) = ecm * (d - kd) / kd 210. ec_kd_es_esp_M_Cur(4, contador) = ecm * (kd - rp) / kd 211. ec_kd_es_esp_M_Cur(5, contador) = M 212. ec_kd_es_esp_M_Cur(6, contador) = curv * 100 213. 214. Next 215. 216. 217. Range(Cells(3, 1), Cells(2 + contador, 6)) = WorksheetFunction.Transpose(ec_kd_es_esp_M_Cur) 218. 219. 220. 'MsgBox UBound(ec_kd_es_esp_M_Cur, 2) 221. End Sub 222. 223. 224. Private Function raiz(aa As Double, bb As Double, cc As Double) 225. 'Se buscará el valor de c que cumple con el equilibrio de la sección cuando se tiene un 226. 'momento nominal requerido = Mu/0.9. 227. '1.- ALTERNATIVA SOLUCIÓN ECUACIÓN CUADRÁTICA 228. Dim x1 As Double 'primera raiz 229. Dim x2 As Double 'segunda raiz 230. x1 = (-bb + Sqr(bb ^ 2 - 4 * aa * cc)) / (2 * aa) 231. x2 = (-bb - Sqr(bb ^ 2 - 4 * aa * cc)) / (2 * aa) 232. 'MsgBox "x1: " & x1 & " x2: " & x2 233. 234. 'el criterio para escoger el valor correcto del eje neutro será el que esté más cerca del 235. 'centro de la viga. 236. Dim dis1 As Double 237. Dim dis2 As Double 238. If x1 > 0 And x2 > 0 Then 239. dist1 = Abs(H / 2 - x1) 240. dist2 = Abs(H / 2 - x2) 241. If dist1 < dist2 Then 242. c = x1 243. Else 244. c = x2 245. End If 246. Else 247. c = Application.WorksheetFunction.Max(x1, x2) 248. End If 249. ' Con el valor del eje neutro encontrado se procede a calcular el área requerida 250. raiz = c 251. End Function 252. Sub borrar() 253. Dim i As Integer 254. Do While Cells(3 + i, 1) "" 255. i = i + 1 256. Loop 257. Range(Cells(3, 1), Cells(3 + i, 6)).ClearContents 258. End Sub
Tutorial
113 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
258.1.
Gráfica de Kent & Park para distintas cuantías de confinamiento
En el siguiente ejemplo se verá cómo implementar un código en Visual Basic que permite graficar curvas del comportamiento esfuerzo - deformación del hormigón sometido a carga en compresión. Para diferentes cuantías de refuerzo de confinamiento ( .
í
Se utilizará el modelo de Kent & Park para el comportamiento del hormigón, de modo de considerar un aumento en la ductilidad aportado por el confinamiento. Los parámetros que rigen la curva son:
Se mostrarán los resultados mediante la siguiente interfaz:
Tutorial
114 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago.
Ilustración ¡Error! Utilice la pestaña Inicio para aplicar 0 al texto que desea que aparezca aquí..27: Planilla de visualización
El objetivo de la Macro es:
Para las áreas trasversales de los estribos que se tienen en las celdas bajo la celda "B9" ( ). Calcular la gráfica correspondiente.
Que los resultados del esfuerzo en compresión para una deformación dada se muestren a continuación de los datos de la última cuantía calculada. Trabajar con varias "Sub rutinas" de modo de entender cómo interactuan entre sí.
258.1.1.
Código y comentarios:
Dim Gráfico As Excel.Chart 'Esta variable se declara acá ya que se utiliza en dos rutinas Sub Generar_gráficos() Dim j As Integer Dim i As Integer Dim a As Double j = 0 i = 0 'Declaración de Variables Dim fpc As Double 'Resistencia cilíndrica del hormigón Dim eo As Double Dim euu As Double Dim e50u As Double Dim e50h As Double Dim e50c As Double
Tutorial
115 - Ignacio Mayorga / Ignacio Ruiz.
Hormigón Armado I, UTFSM Santiago. Dim e20c As Double Dim rho As Double 'Cuantía de acero confinamiento Dim Bc As Double 'Ancho Núcleo Confinado Dim Hc As Double 'Alto Núcleo Confinado Dim Sh As Double 'Separación del refuerzo transversal Dim Ae As Double 'Área transversal del estribo (de una rama) Dim ec As Double '' 'Valores que son constantes fpc = Range("c4") Bc = Cells(5, 3) Hc = Cells(6, 3) Sh = Cells(7, 3) eo = 0.002 e50u = (0.21 + 0.002 * fpc) / (fpc - 70) euu = 1.6 * e50u - 0.6 * eo '' ' Call borrar 'Se ejecuta la sub rutina Borrar. Y continúa el código. Cells(23, 3) = "ec" 'Se escribe ec en range("c23") ActiveSheet.ChartObjects(1).Delete 'Borrar gráfico, esto se hace debido a que la macro le agrega series de datos al gráfico_ 'si no se borrara el gráfico, la capacidad de veces que se podría ejecutar la macro sería finita, dado que Excel trabaja_ 'con cierta cantidad máxima de series de datos para los gráficos. Call Crear_gráfico 'Se llama a la sub rutina llamada Crear_gráfico. Esta se ejecuta y continúa con el código. Do While Cells(10 + j, 2) "" 'Hacer mientras no se tope con una celda vacía bajo range("B9"). Empieza con Do while_ 'y termina con Loop. El uso de "" significa vacio. Ae = Cells(10 + j, 2) rho = 2 * Ae * (Bc + Hc) / (Bc * Hc * Sh) e50h = 0.75 * rho * Sqr(Bc / Sh) e50c = e50u + e50h e20c = 1.6 * e50c - 0.6 * eo Cells(23, 4 + j) = "fc(" & Ae & " cm2)" 'Escribe en la respectiva columna el esfuerzo en función del área utilizada. Paso = 0.0001 'Paso que se utilizará para el barrido de ec i = 0 'importante definirlo afuera del siguiente while, dado que como para cada área se hará lo mismo, por ende_ ' este contador debe reiniciar el dónde se pegarán los resultados. ec = 0 'análogo a la explicación anterior. Para cada área se debe comenzar con ec=o Do While ec