Desarrollo de un software libre para un entorno web de análisis modal de sistemas discretos unidireccionales
Abstract
Departamento de Construcciones Arquitectónicas, Ingeniería del Terreno y Mecánica de los Medios Continuos y Teoría de Estructuras
Full text
UNIVERSIDAD DE VALLADOLID ESCUELA DE INGENIERIAS INDUSTRIALES Grado en Ingeniería Mecánica Desarrollo de un software libre para un entorno web de análisis modal de sistemas discretos unidireccionales Autor: Llorente Pascual, Rodrigo Tutor: Magdaleno González, Álvaro Departamento de Construcciones Arquitectónicas, Ingeniería del Terreno y Mecánica de los Medios Continuos y Teoría de Estructuras Valladolid, septiembre 2021.
2
3 Agradecimientos A mi tutor y el personal del departamento, por ayudarme siempre y enseñarme todo lo necesario para poder finalizar este trabajo con el que cierro muy satisfecho la carrera como Ingeniero Mecánico. A mi familia y amigos por estar siempre apoyándome en todo y creyendo en mí desde el principio.
4
5 RESUMEN Este trabajo de fin de grado tiene como finalidad el desarrollo de un programa basado en el lenguaje de programación de Python para procesar los datos de un sistema amortiguado y estudiar su comportamiento tanto en el tiempo como su respuesta en frecuencia. El programa también dispondrá de una interfaz para interactuar y para la visualización de los datos basada en la librería Bokeh del mismo lenguaje, Python. Se ha programado para un entorno web y que en un futuro se pueda acceder desde un servidor en la universidad. Palabras clave: Python, Respuesta en el tiempo y Frecuencia, Bokeh ABSTRACT: The purpose of this final degree project is the development of a software based on Python Scripting language, which is able to process data of a damped system and study its response, in both the time and the frequency domains. The software will also include an interface in order to interact and visualize data, which is based on the library Bokeh of the same Python language. It has been created on a web environment in order to enable in the future free access from a server at the university. Key words: Python, Time and frecuency response, Bokeh
6
7 Contenido Capítulo I. Introducción, objetivos y planteamiento .................................................. 11 1.1 Introducción .................................................................................................... 11 1.2 Objetivos ......................................................................................................... 12 1.3 Planteamiento ................................................................................................ 13 Capítulo II. Marco Teórico ............................................................................................ 15 2.1 Introducción .................................................................................................... 15 2.2 Ecuaciones de un modelo discreto unidireccional ...................................... 15 2.3 Resolución del sistema mediante un espacio de estados .......................... 18 2.4 Problema de valores propios ......................................................................... 20 2.4.1 Problema de valores propios del caso no amortiguado ....................... 21 2.4.2 Problema de valores propios del caso amortiguado ............................ 21 2.5 Funciones de respuesta en frecuencia ........................................................ 22 Capítulo III. Desarrollo del motor de cálculo en el software ..................................... 25 3.1 Introducción .................................................................................................... 25 3.2 Librerías usadas de Python ........................................................................... 26 3.3 Simulación en el dominio del tiempo ........................................................... 26 3.3.1 Matrices de masa, amortiguamiento y rigidez ...................................... 27 3.3.2 Espacio de Estados ................................................................................. 28 3.3.3 Simulación del sistema lineal en el tiempo .......................................... 29 3.4 Estudio en frecuencia del sistema ................................................................ 31 3.4.1 Problemas de valores propios ................................................................ 31 Capítulo IV. Desarrollo de la Interfaz Gráfica del software ....................................... 35 4.1 Introducción .................................................................................................... 35 4.2 Disposición y layout ........................................................................................ 35 4.3 Herramientas .................................................................................................. 38 4.4 Graficas Interactivas ...................................................................................... 39 4.5 Tablas de datos .............................................................................................. 40 4.6 Funciones de control (callbacks) .................................................................. 42 4.6.1 Descarga de datos .................................................................................. 42 4.6.2 Cambio en la salida de la respuesta temporal ..................................... 43 4.6.3 Cambio en el rango del tiempo o de la frecuencia ............................... 44
8 4.6.4 Cambio en la salida de la respuesta en frecuencia ............................. 44 4.6.5 Cambio del número de grados de libertad ............................................ 45 4.6.6 Actualizar las entradas de datos por tabla ........................................... 46 4.7 Ordenes de diseño para el layout ................................................................. 47 Capítulo V. Ensayo Experimental ................................................................................ 49 5.1 Introducción .................................................................................................... 49 5.2 Ensayo de laboratorio .................................................................................... 49 5.2.1 Equipo usado en el ensayo .................................................................... 50 5.2.2 Calibración del programa del Sirius ....................................................... 53 5.2.3 Recogida de datos .................................................................................. 55 5.3 Estimación de valores .................................................................................... 57 5.3.1 Estimación de las masas ........................................................................ 57 5.3.2 Estimación las rigideces ......................................................................... 58 5.3.3 Estimación de las condiciones iniciales ................................................ 59 5.4 Comparación de resultados .......................................................................... 59 Capítulo VI. Manual del Usuario .................................................................................. 63 6.1 Introducción .................................................................................................... 63 6.2 Opciones de acceso al programa .................................................................. 63 6.3 Aplicaciones del programa ............................................................................ 64 6.4 Descripción de los menús ............................................................................. 65 6.4.1 Entrada de datos ..................................................................................... 65 6.4.2 Salida de datos ....................................................................................... 67 6.5 Tareas comunes ............................................................................................. 71 6.6 Funciones avanzadas .................................................................................... 71 6.7 Problemas comunes ...................................................................................... 71 Capítulo VII. Valoración Económica ............................................................................ 73 7.1 Resumen económico ..................................................................................... 73 Conclusiones y Líneas futuras ..................................................................................... 75 Conclusiones ............................................................................................................. 75 Líneas futuras ............................................................................................................ 76 Referencias……………………..………………………………………………………………………….……78 Anexos ........................................................................................................................... 79
9 TABLA DE FIGURAS Figura 1.1 : Logo de Python y Bokeh ........................................................................... 13 Figura 2.1 : Esquema de un sistema de un grado de libertad .................................. 16 Figura 2.2: Esquema de un sistema de n grados de libertad .................................... 16 Figura 3.1: Función Matrices (m, c, k) y comando return .......................................... 27 Figura 3.2: Creación de matrices vacías ..................................................................... 27 Figura 3.3: Creación de las matrices de salida C y D ................................................. 28 Figura 3.4: Ejemplo de bucle para completar ecuaciones de salida ........................ 29 Figura 3.5: Vector de Fuerzas en la simulación del sistema ..................................... 30 Figura 3.6: Ejemplo de una gráfica de simulación del sistema en el tiempo .......... 30 Figura 3.7: Selección de los autovectores en el caso amortiguado.......................... 32 Figura 3.8: Almacenamiento de las salidas en las Receptancias ............................. 33 Figura 3.9: Ejemplo de una función de respuesta en frecuencia ............................ 33 Figura 4.1: Distribucion del layout para la respuesta temporal ................................ 36 Figura 4.2: Distribucion del layout para la respuesta en frecuencia ........................ 37 Figura 4.3: Distribucion del layout para los autovalores, autovectores y FAC.......... 37 Figura 4.4: Ejemplo de programación de una herramienta tipo Select. ................... 38 Figura 4.5:Ejemplo de las herramientas de diagramas en bokeh . .......................... 39 Figura 4.6: Ejemplo de la función ColumnDataSource de bokeh. ............................ 39 Figura 4.7: Ejemplo de la función Line de bokeh. ...................................................... 39 Figura 4.8: Ejemplo de la función Figure de bokeh. ................................................... 40 Figura 4.9: Ejemplo de funcion que completa los datos de una tabla. .................... 40 Figura 4.10: Ejemplo de la función TableColumn. .................................................... 41 Figura 4.11: Solución para reescribir una funcion automaticamente. ..................... 41 Figura 4.12: Solución del problema con los decimales. ........................................... 42 Figura 4.13: Callback de descarga de datos. ............................................................. 43 Figura 4.14:Solucion al problema de listados de datos de una sola columna. ....... 44 Figura 4.15:Codigo parcial del callback sobre el grado de libertad. ......................... 45 Figura 4.16: Codigo parcial del callback de los datos de la tabla. ............................ 46 Figura 4.17: Ejemplo de la funcion Tabs de Bokeh.................................................... 47 Figuras 5.1: Maqueta del ensayo experimental ......................................................... 49 Figuras 5.2: Sistema de adquisición de datos Sirius ................................................. 50
Marco Teórico 16 (2.2) (2.1) (2.3) Figura 2.1 : Esquema de un sistema de un grado de libertad Este esquema muestra un sistema de un grado de libertad con una masa m, un muelle con una constante elástica k, un amortiguador con un coeficiente de amortiguamiento c y una fuerza de excitación F(t) que es dependiente del tiempo. La masa tiene una posición de equilibrio que se tiene en cuenta a la hora de calcular sus amplitudes. Para un grado de libertad, siendo w la coordenada, la ecuación que rige el movimiento, Ecuación 2.1, sale del sumatorio de fuerzas del sistema, Ecuación 2.2 y Ecuación 2.3. 𝑚 𝑤+𝑐 𝑤+𝑘 𝑤=𝐹 −𝑐 𝑤−𝑘 𝑤+𝐹=𝑚 𝑤 𝐹𝑐+𝐹𝑘+𝐹=𝑚 𝑤 Ahora es necesario plantear un sistema, para n grados de libertad, que pueda resolver los diferentes sistemas. El esquema que representa el sistema genérico sería el siguiente que se muestra en la Figura 2.2. Figura 2.2: Esquema de un sistema de n grados de libertad
Capítulo II 17 (2.4) (2.5) (2.6) (2.7) A diferencia de antes, cada grado de libertad depende de sus propiedades y de la fuerza que se le aplica. Las ecuaciones que rigen ahora el sistema se vuelven más sofisticadas. Se ven en el Sistema de Ecuaciones 2.4 y 2.5 como sería para n grados de libertad con w como coordenadas. 𝐹𝐶1+ 𝐹𝐾1−𝐹𝐶2−𝐹𝐾2+𝐹1= 𝑚1·𝑤1 𝐹𝐶2+ 𝐹𝐾2−𝐹𝐶3−𝐹𝐾3+𝐹2= 𝑚2·𝑤2 · · · 𝐹𝐶𝑛+ 𝐹𝐾𝑛+𝐹𝑛= 𝑚𝑛·𝑤𝑛 𝑚1𝑤1+(𝑐1+𝑐2)𝑤1 −𝑐2𝑤2 +(𝑘1+𝑘2)𝑤1−𝑘2𝑤2=𝐹1 𝑚2𝑤2−𝑐2𝑤1 +(𝑐2+𝑐3)𝑤2 −𝑐3𝑤3 −𝑘2𝑤1+(𝑘2+𝑘3)𝑤2−𝑘3𝑤3=𝐹2 · · · 𝑚𝑖𝑤𝑖−𝑐𝑖𝑤𝑖−1+(𝑐𝑖+𝑐𝑖+1)𝑤𝑖−𝑐𝑖+1𝑤𝑖+1−𝑘𝑖𝑤𝑖−1+(𝑘𝑖+𝑘𝑖−1)𝑤𝑖−𝑘𝑖+1𝑤𝑖+1=𝐹𝑖 Como se ve, se crea un patrón de n ecuaciones dinámicas con n incógnitas (w1, w2, …, wi, …, wn). Aprovechando esto se puede escribir de forma más compacta a través de las matrices de masa(M), amortiguamiento (C) y rigidez (K), de forma que se obtiene la Ecuación 2.6. 𝑀𝑞+𝐶𝑞+𝐾𝑞=𝐹 Donde q es un vector columna con los grados de libertad como se ve en la Ecuación 2.7. 𝑞= [ 𝑤1 𝑤2 ··· 𝑤𝑖 ··· 𝑤𝑛 ] Por lo que las matrices toman la forma de las Ecuaciones 2.8, 2.9 y 2.10.
Marco Teórico 18 (2.8) (2.9) (2.10) (2.11) (2.12) 𝑀= [ 𝑚1𝑚2⋱𝑚𝑖⋱𝑚𝑛 ] 𝐶= [ 𝑐1+𝑐2−𝑐2… −𝑐2𝑐2+𝑐3⋯ ⋮⋮⋱ −𝑐𝑖⋮ −𝑐𝑖𝑐𝑖+𝑐𝑖+1 . .…⋱ −𝑐𝑛. −𝑐𝑛𝑐𝑛. . . . ] 𝐾= [ 𝑘1+𝑘2−𝑘2… −𝑘2𝑘2+𝑘3⋯ ⋮⋮⋱ −𝑘𝑖⋮ −𝑘𝑖𝑘𝑖+𝑘𝑖+1 . .…⋱ −𝑘𝑛. −𝑘𝑛𝑘𝑛. . . . ] 2.3 Resolución del sistema mediante un espacio de estados Con la Ecuación 2.6 queda definido el sistema de n grados de libertad, la resolución del sistema es más complicado, pues es de orden dos y su solución no es inmediata. Se reduce mediante el Espacio de Estados empezando por definir un vector de estado que contiene desplazamientos y velocidades, Ecuación 2.11. La Ecuación 2.12 representa la derivada del vector de estado, que tiene velocidades y aceleraciones. 𝑥= [𝑞𝑞] 𝑥= [𝑞𝑞]
Capítulo II 19 (2.13) (2.14) (2.15) (2.16) (2.16.1) De esta forma la Ecuación 2.6 pasa a ser la Ecuación 2.13. 𝑞=−𝑀−1𝐶𝑞−𝑀−1 𝐾𝑞+𝑀−1𝐹 Haciendo uso del vector de estado se puede reescribir la ecuación anterior como el Sistema 2.14, siendo las Ecuaciones de estado. [𝑞𝑞]=[ 0 𝐼𝑛 −𝑀−1𝐾 −𝑀−1𝐶][𝑞𝑞]+[ 0 𝑀−1][𝐹] Abreviadamente se puede expresar como la Ecuación 2.15. Donde las matrices A y B son las Ecuaciones de entrada y un vector u es la matriz de Fuerzas. 𝑥=𝐴𝑥+𝐵𝑢 Estas ecuaciones se complementan con la Ecuación 2.16, denominándose Ecuaciones de salida. Esta C' no es la misma C que la de la Ecuación 2.9, una es la matriz de amortiguamiento (C) y la otra es la matriz de salida de la formulación del espacio de estados. Es necesario remarcarlo para evitar confusiones. 𝑦=𝐶′𝑥+𝐷𝑢 El vector y es el vector de salida, y contiene las magnitudes que se quieren sacar como respuesta del modelo (desplazamiento, velocidades, aceleraciones, reacciones, etc.). Siendo estas las salidas que buscará el usuario del programa. Las matrices tomaran una forma u otra, en el caso de los desplazamientos o velocidades es tan sencillo como colocar unos (1) en la matriz C de forma que “seleccione” los elementos. Un ejemplo es si en un sistema de tres grados de libertad, que tendrá tres desplazamientos y tres velocidades, se quiere sacar solo los deslazamientos, escribiendo la Ecuación 2.16 como la Ecuación 2.16.1. 𝑦=[𝑤1 𝑤2 𝑤3]=[1 0 0 0 1 0 0 0 1 000 000 000] [ 𝑤1 𝑤2 𝑤3 𝑤1 𝑤2 𝑤3 ] +0·𝑢 También, es necesario poder hacer combinaciones lineales, por ejemplo, si se quiere la combinación lineal de los dos primeros desplazamientos tal que 2w1 - 3w2 y la suma de las dos primeras velocidades, entonces la Ecuación 2.16 toma la forma de la Ecuación 2.16.2.
Marco Teórico 20 (2.17) (2.16.2) 𝑦=[2𝑤1 − 3𝑤2 𝑤1+ 𝑤2]=[2 −3 000 0 0 0 011 0] [ 𝑤1 𝑤2 𝑤3 𝑤1 𝑤2 𝑤3 ] +0·𝑢 Ahora, el caso de las aceleraciones es diferente al de los desplazamientos y velocidades. Solo se complican un poco más que las anteriores, aunque se simplifica ya que la expresión que las define está ya escrita en la parte inferior de las Ecuaciones de Estado 2.14. Si se quieren todas las aceleraciones, algo habitual, se coge la mitad inferior de la matriz A como matriz C y toda la mitad inferior de la matriz B como matriz D, la cual ya no es nula como antes, quedando la Ecuación 2.17. 𝑦=𝑞=[−𝑀−1𝐾 −𝑀−1𝐶][𝑞𝑞]+𝑀−1𝐹 En el caso de que se necesite solo una o unas pocas aceleraciones, bastaría con seleccionar la o las filas correspondientes de estas últimas matrices. Este sería el procedimiento a seguir para plantear el sistema de Ecuaciones de estado y el cual será el que se implemente en el código de programación más adelante. El usuario del programa será el que escoja las salidas, modificando el programa las matrices correspondientes. Todo esto tiene el propósito de hacer más sencilla la resolución del problema planteado. 2.4 Problema de valores propios En análisis modal la forma de proceder es plantear la ecuación de movimiento del sistema, visto en el Apartado 2.2, a esta ecuación se le impone que cumpla una forma de respuesta, lo que conduce a un problema de valores propios. En mecánica de vibraciones, o dinámica de estructuras en este caso, se pueden resolver dos tipos de problemas de valores propios a partir de las matrices físicas anteriores, el no amortiguado y el amortiguado. Los valores propios dan información sobre las distintas formas modales asociadas a las n frecuencias propias. Estas son las distintas formas en las que oscila la estructura cuando alcanza la resonancia al ser excitada con una fuerza alternante a la correspondiente frecuencia propia, estos valores son útiles pues ayudan en el estudio dinámico del sistema además de que se pueden graficar para su interpretación.
Capítulo II 21 (2.18) (2.19) (2.20) (2.21) 2.4.1 Problema de valores propios del caso no amortiguado Al no contar con el amortiguamiento la matriz C es nula y la ecuación a resolver en este apartado es la Ecuación 2.18. (𝐾−𝜔2𝑀)𝑣𝑟=0 Para operar la ecuación se usa una función en concreto de la librería Scipy de Python, scipy.linalg.eig. Después de que se hayan calculado los autovalores (𝜔) se comprueba que sean valores reales pues puede haber quedado algún residuo imaginario en el cálculo. Además, se transforman a frecuencias propias de radianes por segundo (rad/s) a hercios (Hz) dividiendo por 2π. Para el caso de los auto vectores (vr), el resultado es una matriz cuadrada de dimensión n. Cada columna de esta matriz es una forma modal asociada a cada una de las n frecuencias propias que se han calculado arriba. 2.4.2 Problema de valores propios del caso amortiguado Al incluir la matriz C la ecuación evoluciona de la vista en la Ecuación 2.18 a la que se muestra ahora, la Ecuación 2.19. (𝑠𝑟2𝑀+𝑠𝑟𝐶+𝐾)𝑣𝑐=0 Siendo la ecuación de segundo grado es necesario reducirla como se hizo para el espacio de estados. Se parte del sistema de ecuaciones visto anteriormente, la Ecuación 2.20. 𝑀𝑞(𝑡)+𝐶𝑞(𝑡)+𝐾𝑞(𝑡)=𝐹(𝑡) Siendo este de segundo orden es necesario hacer el cambio de variable 𝑥=[𝑞𝑞] para transformarlo al siguiente sistema de primer orden, la Ecuación 2.21. 𝐴𝑥(𝑡)+𝐵𝑥(𝑡)=𝑢𝑓(𝑡) Ahora las matrices A, B y uf toman la siguiente forma: 𝐴=[𝐶 𝑀 𝑀 0𝑛] ; 𝐵=[𝐾 0𝑛 0𝑛−𝑀] ; 𝑢𝑓(𝑡)=[𝐹(𝑡) 0]
Marco Teórico 22 (2.22) (2.24) (2.23) Siendo ahora una ecuación de primer orden se puede resolver “directamente”. Se usará la misma función vista antes, scipy.linalg.eig (a,b) [5], para sacar los valores propios. En este caso a=B y b=A siendo parecida a la Ecuación 2.18 pero para el caso amortiguado, quedando la Ecuación 2.22: (𝑆𝑟𝐴+𝐵)𝑣𝑟𝑐=0 Una vez se opera, se obtienen los autovalores (Sr), valores complejos, y autovectores (vc) para el caso amortiguado. A diferencia del caso no amortiguado, estos valores propios no van a ser del tamaño “n” (números de grados de libertad), sino “2n”. Esta diferencia de dimensiones se debe a operar con matrices de tamaño “2n”, pero tanto los autovalores como los autovectores tienen pares conjugados, es decir, de entre los valores solo hay “n” distintos siendo su módulo la frecuencia propia en rad/s. Al trabajar con Hz, como antes, se divide por 2π. La forma de los autovalores (Sr) es compleja, calculándose como se indica en la Ecuación 2.23. Los factores de amortiguamiento critico (dr), son los valores de los respectivos amortiguamientos para los diferentes grados de libertad que anulan la vibración, siendo el límite entre que la estructura oscile o no. Se obtienen rápidamente de la siguiente forma, siendo la que se ha implementado en el código: 𝑠𝑟=−𝜔𝑟𝑑𝑟+𝑗 𝜔𝑟√1−𝑑𝑟2 (−(𝑃𝑎𝑟𝑡𝑒 𝑟𝑒𝑎𝑙 𝑎𝑢𝑡𝑜𝑣𝑎𝑙𝑜𝑟𝑒𝑠) 𝑀ó𝑑𝑢𝑙𝑜 𝑎𝑢𝑡𝑜𝑣𝑎𝑙𝑜𝑟𝑒𝑠 )=−𝑅𝑒(𝑠𝑟) |𝑠𝑟| =𝑑𝑟 Para los autovectores, igual que con los autovalores, los números también aparecen en pares conjugados. En cambio, a diferencia que el anterior, aparecen el doble de componentes, esto es porque por la manera en la que se calcula se tiene a la vez las formas modales correspondientes a los desplazamientos, siendo las “n” (números de grados de libertad) primeras componentes, y las velocidades siendo las siguientes “n” componentes. Escogiendo las “n” primeras componentes de cada vector y solo los vectores diferentes, queda por fin una matriz cuadrada de dimensión n compleja. 2.5 Funciones de respuesta en frecuencia Las funciones de respuesta en frecuencia o F.R.F. son funciones de transferencia que permite evaluar en uno o más nodos (grados de libertad) la respuesta en frecuencia con una fuerza de excitación unitaria aplicada en un nodo. Estas se pueden graficar, para ello es necesario resolver el sistema que rige el modelo, pero a diferencia del apartado 2.3 solo se buscará una salida pues para las funciones de respuesta en frecuencia se actúa en un nodo y se observa desde otro.
Capítulo II 23 (2.25) (2.27) (2.28) (2.26) Por lo tanto, será necesario volver a resolver el sistema que rige el modelo mediante un espacio de estados, pero con algunas variantes de lo ya visto. La estructura del sistema no cambia siendo la misma que las vistas en las Ecuaciones 2.25 y 2.26. 𝑥=𝐴𝑥+𝐵𝑢 𝑦=𝐶𝑥+𝐷𝑢 Las matrices de entrada (A y B) se quedan prácticamente iguales, cambiando solo la matriz B, pues al querer solo una salida se multiplica a la parte inferior de la matriz B por un vector de dimensión n donde tiene un solo uno como amplitud en la posición sobre la que actuará la fuerza, como se muestra en la Figura 2.2 para el caso con tres grados de libertad y actuando sobre el segundo. 𝐵=[ 0 𝑀−1[ 0 1 0 ] ] Para las matrices de salida (C y D), la matriz C se compone solo de unos en la primera diagonal como se ve en la Ecuación 2.28, pues solo interesan los desplazamientos para sacar las receptancias, para la movilidad (velocidades) y acelerancias (aceleraciones) se sacan a partir de las receptancias. Por esto mismo la matriz de salida D será nula, ya que no se buscan las aceleraciones. 𝐶=[1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 ] Una vez se resuelve el sistema con el mismo procedimiento visto en el apartado 2.3, ya se obtienen la receptancias y se pueden graficar frente a la frecuencia para sacar las funciones de respuesta en frecuencia, siendo los valores picos de estas gráficas la frecuencia natural de la estructura. Finalmente, para obtener las movilidades a partir de las receptancias se multiplica por la unidad imaginaria y por la frecuencia. De la misma manera, para obtener acelerancias se puede volver a multiplicar por la unidad imaginaria y por la frecuencia de nuevo.
Marco Teórico 24
Capítulo III 25 Capítulo III. Desarrollo del motor de cálculo en el software 3 3.1 Introducción El motor de cálculo es la parte más importante, aunque no siempre la que se ve, pues un usuario no tiene por qué saber nada del código que tiene detrás para entender el programa. Esto no quita que el código no tenga que estar bien estructurado y sea legible pues, como se mencionaba antes, será un software de código abierto y tiene que ser fácil de interpretar para alguien que lo ve desde fuera. Una de las ventajas de que sea de código abierto y esté bien estructurado es la posibilidad de que alguien en el futuro pueda trabajar en él, tanto para ampliarlo como para usarlo de referencia en un programa similar. El código se ha estructurado tal que sea un archivo principal el que llame a las diferentes funciones que se han creado, agilizando así el código y permitiendo recurrir más adelante a estas funciones sin compilar todo de nuevo. Esto es importante tenerlo en cuenta desde el principio pues según se desarrolla el programa es más difícil de cambiar y es necesario que esté preparado para funcionar rápido y no perder tiempo de compilación en líneas de código innecesarias. Además, el que este estructurado por funciones diferentes permite localizar un problema más rápido ya que en esos casos se busca el problema en la función que falla y no en todas las líneas de código. En general el código contará con tres partes diferentes, el código principal que se mencionaba y dos partes que se dividen en las funciones de cálculo modal, el primero, y el que lleva la parte de la interfaz gráfica, el segundo. El código principal tiene la función de introducir los datos con los que empieza a funcionar el código, además de llamar a las funciones que se encargarán del cálculo modal y la interfaz gráfica. La parte del código sobre el cálculo modal se centra en el estudio en el tiempo y análisis modal, este último se encarga de la parte matemática y teórica vista en el Capítulo 2 de este trabajo. En esta parte del código es importante la agilidad de cálculo y como se han resuelto los diferentes problemas, cuantas menos líneas de código se
Desarrollo del motor de cálculo en el software 32 o Caso amortiguado: En este caso la cosa se complica más, como se ve en el apartado teórico 2.4.2, siendo el mismo sistema que se ha seguido antes para reducir el orden del sistema (Ecuación 2.19) mediante un cambio de variable. Para ello se construyen las matrices de entrada A y B como se muestran en la Ecuación 2.20 y con la misma función vista antes numpy.concatenate(( ) , axis = 1) [13]. Una vez están listas se llama a la función que da los valores propios dando como entrada esas matrices A y B y devolviendo como salida los autovalores con su parte imaginaria (sr) y los autovectores (Vc). Como se había visto en el apartado teórico, estos valores propios no van a ser del tamaño “n” (siendo n el número de grados de libertad), sino “2·n” y para los autovectores “2n” componentes en vez de “n” componentes por lo que es necesario quitar las partes de valores similares y quedarse solo con los valores únicos. Para los autovalores se sacan los módulos, pues esto resulta ser las frecuencias propias en radianes por segundo (rad/seg) y dividiéndolo por 2π pasan a hercios (Hz). Para los factores de amortiguamiento critico se usa la Ecuación 2.22. En los autovectores, solo es necesario escoger las tres primeras componentes de cada vector y solo los vectores diferentes, queda por fin una matriz cuadrada de dimensión n compleja, por esos se recurre a la función numpy.ix_ [17], permite seleccionar las filas y columnas con las que quedarse y esta selección se hace con las funciones de Python “list” y “range” como se muestra en la Figura 3.7. Figura 3.7: Selección de los autovectores en el caso amortiguado 3.4.2 Cálculo de las funciones de respuesta en frecuencia. Esta parte del código corresponde al apartado 2.5 del bloque teórico, la función tiene el nombre de simF(M, C, K, v_act, wt), como se ve, necesita las matrices que definen las propiedades dinámicas de la estructura (M, C, K) además del parámetro que indica en que nodo se aplicará la fuerza (v_act) y el vector de frecuencia (wt). La forma en la que se ha desarrollado el código es similar a la del apartado 3.3.2 sobre la resolución del sistema mediante un espacio de estados, a diferencia de variar ciertas matrices según se veía en el apartado 2.5. Por otro lado, la forma en la que se
Capítulo III 33 almacenan estos datos también es diferente pues se varía la matriz de salida C para dar las diferentes salidas en función de los diferentes nodos y almacenarlos en una matriz por columnas, siendo una columna por salida o siendo lo mismo, por grado de libertad. Esta parte del código sobre las salidas es la que se ve en la Figura 3.8. Figura 3.2: Almacenamiento de las salidas en las Receptancias Como resultado esta función devuelve un vector de tipo complejo, por tratar con números imaginarios, con n columnas. El resultado de graficar la magnitud de una de esas columnas frente al vector de frecuencias es la función de respuesta en frecuencia del nodo al que corresponda la columna, como en el ejemplo de la Figura 3.9. Figura 3.3: Ejemplo de una función de respuesta en frecuencia En el caso de la Figura 3.9 es de un sistema de tres grados de libertad, donde se aprecian tres picos diferentes de amplitudes máximas siendo las frecuencias propias del sistema
Desarrollo de la Interfaz Gráfica del software 34
Capítulo IV 35 Capítulo IV. Desarrollo de la Interfaz Gráfica del software 4 4.1 Introducción Terminado el motor de cálculo del programa, empieza la parte sobre la interfaz gráfica. Es importante en cuanto que es lo que el usuario ve desde fuera, por esto debe ser fácil de interpretar y usar. Esta parte se desarrolla en la librería Bokeh [3] de Python, siendo una librería abierta de uso gratuito con una gran comunidad detrás, esto es útil para buscar soluciones a problemas comunes y funciones en las que la gente ya ha trabajado. La librería tiene como particularidad su capacidad para crear diagramas interactivos listos para su uso en la web. Uno de los factores más importantes a tener en cuenta es el tamaño de las pantallas, como se desarrolla con el fin de poder ser usado de forma remota, la variedad de dispositivos con los que se puede acceder es grande y el tamaño de pantallas más, por lo que se estima un tamaño compatible para pantallas con una resolución de 1280x720, siendo un tamaño muy común. 4.2 Disposición y layout Antes de empezar con el desarrollo de la interfaz se necesita una idea o un esquema de cómo será la distribución de los elementos en la pantalla, aquí es necesario pensar en la comodidad y la forma más fácil para que el usuario lo entienda e interprete. La idea principal distribuye el espacio de trabajo en dos mitades o columnas, como se ha indicado en la Figura 4.1, la primera de la izquierda siendo la encargada de la gestión de inputs o entradas, donde el usuario introduzca los datos y los varíe según el estudio. La segunda columna, sería la encargada de la salida de la información por pantalla como las gráficas o las tablas con datos. En la primera columna están las herramientas más importantes que controlan el programa, siendo la primera un contador de números enteros para el numero de grados de libertad. El segundo elemento es una tabla que muestra los datos de las
Desarrollo de la Interfaz Gráfica del software 36 masas, rigideces y amortiguamientos, justo debajo de esta está el botón para actualizar estos valores de la tabla por si se modifican. El elemento del medio es un contador que permite elegir sobre que grados de libertad del sistema se quiere observar para sacar la información por pantalla. En las siguientes pestañas son opciones generales para controlar los parámetros del estudio en el tiempo o en frecuencia, así como el valor del tiempo o el rango de frecuencias sobre el que graficar. El último elemento de esta primera columna, es el botón de descarga de datos sobre los parámetros que se han configurado y que se muestran en ese momento por pantalla. Figura 4.1: Distribucion del layout para la respuesta temporal Puesto que no es posible sacar todas las salidas por pantalla, la columna de la izquierda cambia por completo dependiendo de si el usuario quiere la respuesta temporal, el análisis modal o los valores de parámetros como los autovectores, autovalores y los factores de amortiguamiento crítico. De esta forma se empaqueta cada apartado por ventanas diferentes a las que se puede acceder a través de las pestañas superiores que se ven en la Figura 4.1. En la Figura 4.1, debajo de la gráfica que representa el desplazamiento frente al tiempo, hay una excepción a la distribución principal. Es una tabla donde se pueden modificar valores e introducir nuevos sobre las fuerzas senoidales y las condiciones iniciales. Se ha incluido en este apartado por no tener relación con el resto. Ahora, sobre el estudio en frecuencia, se disponen dos gráficas diferentes. La primera grafica es sobre las funciones de respuesta en frecuencia o F.R.F. que representan la amplitud frente a la frecuencia. Ésta proporciona datos importantes como pueden ser
Capítulo IV 37 las frecuencias naturales del sistema. La segunda grafica muestra la fase de los números complejos de las funciones de respuesta en frecuencia frente a la frecuencia. Figura 4.2: Distribucion del layout para la respuesta en frecuencia La última ventana, proporciona los valores de los autovectores y autovalores en los casos amortiguado y no amortiguado además de los factores de amortiguamiento crítico. En el caso no amortiguado los resultados son números complejos y por las limitaciones de la librería de Bokeh se han distribuido en dos tablas diferentes, las partes reales e imaginarias, como se muestra en la Figura 4.3. Figura 4.3: Distribucion del layout para los autovalores, autovectores y FAC.
Desarrollo de la Interfaz Gráfica del software 38 4.3 Herramientas Este apartado del código se centra en los elementos de entrada de los datos por pantalla, los inputs. La librería de Bokeh dispone de multitud de elementos para añadir al layout como todos los que se ven en la columna de la izquierda, los usados en este proyecto son los que se mencionan a continuación. o Spinners Para la entrada de números enteros, que en este caso está relacionada con los grados de libertad, permite añadir o resta con unas flechas para evitar el error de añadir elementos con decimales que el programa no entienda. Estos elementos dejan escoger el paso de número. o Select Este tipo de herramientas son ventanas con desplegables que muestran diferentes opciones de una lista, se ha usado en los casos como la selección de salida por pantalla como desplazamiento, velocidades o aceleraciones. o TextInput Para la entrada de números que pueden ser decimales los spinner queda descartados, para ellos se eligen las entradas de texto normal, aunque en este caso se han escogido solo para la entrada de números. o Button Estos elementos son simple botones a los que se les puede dar diferentes funciones, en el código en especial tienen las funciones de actualizar cierta entrada de datos o la opción de descarga de información en un archivo externo. Cada tipo de herramientas tiene ciertas características que se pueden determinar, pero en común tienen elementos que se pueden modificar en todos como el nombre o título, el valor inicial que puede ser numérico o un texto y el tamaño que tendrá esa herramienta en el espacio de la pantalla. Todo esto se puede ver en la Figura 4.4 Figura 4.4: Ejemplo de programación de una herramienta tipo Select.
Capítulo IV 39 4.4 Graficas Interactivas Unas de las claves por las que Bokeh destaca frente a otras librerías es la opción de crear diagramas interactivos con multitud de diseños que se pueden encontrar en la página oficial de Bokeh, siendo todos de código abierto. Entre las opciones en las que estos diagramas son interactivos hay multitud de herramientas que se pueden añadir como por ejemplo la opción de descargar las gráficas, hacer recortes de ciertas zonas o moverlas libremente en el espacio designado, en la Figura 4.5 se ven las usadas en el programa y en las Figuras 4.1 y 4.2, a la derecha de las gráficas, se ven las diferentes herramientas que se pueden activar y usar. Figura 4.5:Ejemplo de las herramientas de diagramas en bokeh . Entre las funciones importantes en este apartado destacan tres que son fundamentales. La primara es la función ‘ColumnDataSource’ [18], en la parte de diagramas de Bokeh es necesario que los datos que se van a representar estén en una cadena de caracteres que la librería pueda interpretar. Figura 4.6: Ejemplo de la función ColumnDataSource de bokeh. La segunda función importante en esta parte es la del diseño de las gráficas, en concreto la de las curvas, la función ‘line’. Como se mencionaba, Bokeh es amplio en cuanto al tema de los diseños de las gráficas, con esta función se puede escoger desde el grosor de las líneas hasta los colores y la forma de representar los puntos que unen las líneas. Figura 4.7: Ejemplo de la función Line de bokeh. Por último, la función ‘figure’, esta es la que genera las gráficas en sí usando las funciones antes mencionadas. Además, al igual que las herramientas, tiene ciertos parámetros que se pueden dejar por defecto como el título de la gráfica o el de los ejes y el tamaño de la misma, este último es importante para la distribución.
Desarrollo de la Interfaz Gráfica del software 40 Figura 4.8: Ejemplo de la función Figure de bokeh. 4.5 Tablas de datos En el desarrollo de la interfaz las tablas tienen dos funciones diferentes, la de entrada y salida de datos por pantalla. Además, tienen que cumplir ciertas condiciones entre ellas la de poder adaptarse en filas y columnas al número de elementos que en todos los casos dependen directamente de los grados de libertad. Para completar las tablas al igual que con las gráficas también se ha usado la función ‘ColumDataSource’ [18] para que el código interprete la información. El problema en este caso surge cuando las filas o cadenas de caracteres que completan la tabla cambian en valor y tamaño, para esto, la forma en la que se rellena la información se ha desarrollado en una función que se puede llamar siempre los datos cambian y así actualizar el tamaño de la tabla y la información de ésta. Figura 4.9: Ejemplo de funcion que completa los datos de una tabla. La función ‘global’ que se ve en la Figura 4.9, se encarga de llamar a un parámetro desde dentro de una función para que el código sepa que ese parámetro no es nuevo y único dentro de la función, sino que hace referencia a uno del código principal, esto es importante por si ese parámetro cambia, que dentro de la función tome el nuevo valor y viceversa. En el tema de las columnas, por cómo está construido en Bokeh, estas son invariables para una tabla a diferencia de las filas que se pueden actualizar con la información como se veía arriba. Para las columnas se usa la función ‘TableColumn’ [18] donde se
Capítulo IV 41 crea cada columna de manera independiente y se le asigna un título o cabecera, se ve un ejemplo de esta función en la Figura 4.10. Figura 4.10: Ejemplo de la función TableColumn. Para los casos de los autovalores y autovectores, aparece un problema nuevo como evolución de cargar los datos en las tablas con la función ‘ColumDataSource’ [18], el problema con estos no es solo que se actualicen los datos de las tablas o la longitud de las cadenas de valores (número de filas), sino que no siempre van ser las mismas columnas, por ello es necesario desarrollar un bucle que reescriba la función con la finalidad de que estas cambien según sea el tamaño de las columnas de la tabla. El bucle que se ve en la Figura 4.12 permite reescribir la función creando los nombres de las columnas para que la misma función pueda cargar los datos en esta y que la tabla se cree completa. Figura 4.11: Solución para reescribir una funcion automaticamente. Ahora la función importante en este apartado, comparándola con la función ‘figure’ en el apartado de gráficas, es ‘DataTable’ [18]. Esta función es la encargada de crear las tablas, también controla los parámetros sobre tamaño y opciones como la de si se desea que el usuario pueda editar la tabla. Uno de los problemas encontrados durante el desarrollo del código ha sido la excesiva exactitud de los resultados en los autovalores y autovectores pues Python trabaja con todo el numero completo y el número de decimales al que se tienen que adaptar las tablas es enorme, por esto en estas tablas de salida de datos se implementan bucles, como el de la Figura 4.12, que devuelvan los numero redondeados con los números necesarios.
Desarrollo de la Interfaz Gráfica del software 48
Capítulo V 49 Capítulo V. Ensayo Experimental 5 5.1 Introducción La finalidad de este capítulo es ensayar una maqueta y obtener los resultados sobre su comportamiento frente a unas condiciones iniciales, para más adelante, estimar y obtener los mismos resultados mediante el programa desarrollado con el fin de validar el código. Una vez se ha terminado el desarrollo del código y de la interfaz hay parámetros que son necesarios ajustar y comprobar, siendo la mejor manera con un modelo real sobre el que se conoce todos esos datos. Además de demostrar su funcionalidad y utilidad en un caso real. 5.2 Ensayo de laboratorio La simulación de la maqueta se ha realizado en el Laboratorio de Estructuras en la sede de Paseo del Cauce de la Universidad de Valladolid. La maqueta consiste en una estructura de dos grados de libertad compuesta por láminas de aluminio como pilares y placas de metacrilato como base de las plantas, como se ve en la Figuras 5.1. Figuras 5.1: Maqueta del ensayo experimental
Ensayo Experimental 50 El código del programa permite hacer diferentes tipos de ensayos, entre ellos la aplicación de una fuerza senoidal conocida o la aplicación de unas condiciones iniciales y el estudio del comportamiento del sistema hasta su posicion de reposo. La primera opcion es más complicada de aplicar, por la dificultad de reproducir las fuerzas. La segunda es más viable, facil de repetir y disponer de varias muestras de datos. Una vez se ha decidido por la segunda, se dispone la maqueta con distintos sensores en los nodos que interesa estudiar. La forma de proceder es provocar a la estructura unas condiciones iniciales que son conocidas y medir los desplazamientos de las diferentes plantas de la estructura, siendo estas los nodos. Para proceder con el ensayo es suficiente con mover manualmente la parte superior de la estructura, despues de haber anclado la misma al suelo y mantenerla lo mas inmovil posible en lo que la toma de datos empieza. La posicion inicial no es relevante encuanto que se contrastara la misma en el programa basado en el codigo mediante el vibrómetro laser. Es importante destacar que la velocidad inicial es nula, esto es porque no se aplica ninguna furza a la estructura, simplemente se posiciona en las condiciones iniciales sin más. Se repite el ensayo con el fin de tener varias muestras. 5.2.1 Equipo usado en el ensayo Para la toma datos es necesario disponer de varios sensores, esto es un problema porque pueden no estar sincronizados. Este problema puede provocar la superposición de datos o que al contrastar el tiempo en el que se ha tomado cada dato, estos no coinciden. Para ello el elemento más importante en el experimento es el sistema Sirius DAQ. o Sirius DAQ Este instrumento es un sistema de adquisición de datos que permite unir todos los sensores a usar en las diferentes entradas, independientemente de la diferencia de sensores y voltajes proporcionados por cada sensor para la señal, uniéndolo todo en una sola salida que es interpretada por el propio software del Sirius. Figuras 5.2: Sistema de adquisición de datos Sirius
Capítulo V 51 Los diferentes conectores que se aprecian en la primera imagen de las Figuras 5.2 son los puertos de entrada de los que dispone el Sirius, siendo necesario uno por sensor. No todos los sensores disponen de este tipo de puerto por lo que se usa un adaptador de VGA en los que son necesarios, como se ve en la Figura 5.3. Figuras 5.3: Conexiones al Sirius Listo el sistema de adquisición de datos es necesario definir qué tipo de sensores son los más adecuados. Es importante medir los desplazamientos de los nodos, por ello se usa un vibrómetro. o Vibrómetro Laser (Desplazamiento) La ventaja de un vibrómetro frente a otro tipo de sensor es que este permite medir a una alta frecuencia de muestreo y proporcionara un mejor resultado. El usado en el ensayo es el que se muestra en la figura 5.4. Para la disposición de este sensor, la referencia de las medidas depende de la posición espacial a la que se instale, contando con la distancia que le separa a la estructura desde un inicio. Es importante tenerlo en cuenta a la hora de analizar las gráficas pues la posición de reposo no será la del cero como puede ser la del programa basado en el código. Figuras 5.4: Vibrómetro Laser
Ensayo Experimental 52 Para la colocación de este sensor se usa una estructura auxiliar para sostenerlo de la forma más inmóvil posible, pues funciona por desplazamientos, colocándolo a la altura del nodo superior. Esto se puede apreciar en la Figura 5.1. Solo se usa un sensor para el desplazamiento del segundo nodo pues del primero solo se necesita el desplazamiento inicial para las condiciones iniciales y este se puede estimar. Como complemento al vibrómetro laser, se usan dos acelerómetros para los dos nodos del sistema y medir en el tiempo las aceleraciones durante el ensayo. Estas también se pueden contrastar con la información del programa. o Acelerómetro piezoeléctrico (Aceleración) Estos acelerómetros miden la aceleración del sistema al que estén acoplados mediante señales eléctricas que son interpretas por el sistema de adquisición de datos y su programa mediante una calibración previa que suele proporcionar el fabricante o mediante el uso de otros sensores. Figura 5.5: Acelerómetro piezoeléctrico Para el vibrómetro laser bastaba con sujetar el sensor en la estructura fija, pero en el caso del acelerómetro es necesario que esté acoplado a la estructura, más concretamente en los nodos a estudiar. Para la sujeción del sensor se usa un imán al que por un lado se acopla el sensor y por el otro se une a la estructura, como se ve en la Figura 5.6, esta sujeción es más que suficiente para realizar el ensayo. El imán no afecta al funcionamiento del acelerómetro pues este tipo de sensores funcionan por la compresión de un retículo cristalino piezoeléctrico que genera una señal eléctrica proporcional a la fuerza sufrida por el sensor.
Capítulo V 53 Figura 5.6: Acople del Acelerómetro a la estructura 5.2.2 Calibración del programa del Sirius Una vez está lista la parte más manual del ensayo es momento de realizar las mediciones, pero antes, se necesita preparar el programa y las respectivas calibraciones. El programa usado para interpretar las señales del Sirius es el proporcionado por el fabricante, siendo el DewesoftX 2021. Lista la correcta instalación de los cables entre los sensores, el Sirius y el ordenador es momento de comprobar que el programa detecta todos los sensores. Como se ve en la Figura 5.7. Figura 5.7: Configuración canales del sirius Como se ve en la figura 5.7, directamente al entrar en el programa se ven los diferentes puertos del Sirius, entre ellos a los que están conectados los sensores del ensayo. El programa detecta automáticamente ciertas características de los sensores
Ensayo Experimental 54 como el rango de valores o el nombre, aunque algunas tienen que ser ajustadas a mano. Un parámetro que es importante tener en cuenta ahora y en el programa basado en el código es la frecuencia de muestreo. Esta es importante que sea los más parecida entre las dos fuentes de información para que la comparación sea más exacta. En las opciones principales del programa del Sirius, parte superior de la Figura 5.7, se puede modificar siendo en este ensayo de doscientos la frecuencia de muestreo. Los sensores no proporcionan la información de una forma directa, lo que envían son señales eléctricas que deben ser interpretadas, siendo para cada sensor diferente al resto. Para que el programa interprete correctamente estas señales es necesario calibrarlo indicando las equivalencias de las mismas a datos de interés, accediendo desde el botón de configuración de cada canal como se ven en la Figura 5.7. En la Figura 5.8, en la sección inferior recuadrada de verde, se ve la calibración necesaria para el primer acelerómetro dispuesto en el primer canal del Sirius como ejemplo. Los datos para calibrar cada sensor suelen ser proporcionados por el fabricante, también se pueden calibrar con otro sensor ya calibrado. Figura 5.8: Calibración de un acelerometro. Para el sensor de los desplazamientos hay una excepción, este sensor mide la distancia directamente desde su posición a la posición del nodo sobre el que mide por ser él mismo su propia referencia. El problema aparece cuando se contrasta la información con otras fuentes, pues en el caso del programa del código desarrollado mide directamente los desplazamientos desde la posición de reposo y al comparar ambas aparece un desfase en el ensayo experimental proporcional a la distancia a la
Capítulo V 55 que se ha colocado el sensor laser de la estructura a ensayar. La solución a este problema la da directamente el programa DewesoftX, este permite la creación de un canal virtual al que se le puede configurar de tal forma que a las mediciones del sensor laser de los desplazamientos les reste o sume el desfase. En este caso se ve como debajo del título de ‘Value’ en la Figura 5.9 resta el valor del desfase a la medida ‘laserP2’ con el fin de que la posición de reposo de las medidas coincida con el de referencia buscado. Figura 5.9: Canal virtual en DewesoftX. El desfase es fácil de sacar para este caso, basta con graficar los datos y estudiar la posición de reposo, al ser cero la que se busca, el desfase será la diferencia. 5.2.3 Recogida de datos Finalizada la calibración de sensores en el programa del Sirius, empieza la toma de datos. Las condiciones iniciales serán cero para las velocidades y el valor máximo que registren los sensores para los desplazamientos, pues la forma de realizar el ensayo es separando al nodo superior de su posición de equilibrio y soltar de repente, simulando las condiciones iniciales fuera de las de reposo. Una vez el ensayo empieza a ser grabado, dura hasta que la estructura llega a su posición de reposo y se repite con el fin de tener varias muestras para estudiar. En la figura 2.10, se puede ver las diferentes salidas que se le pide al programa que saque por pantalla, en el que la gráfica verde es la salida del acelerómetro colocado en la primera planta, la azul la de la segunda planta y la roja es la salida del sensor laser que mide el desplazamiento de la segunda planta. La salida directa del vibrómetro no es necesaria pues es la misma del canal virtual con la ventaja de que la del canal virtual está ya corregida. Se aprecia como los acelerómetros empiezan ambos en cero y el sensor de desplazamientos empieza en la posición de máximo desplazamiento por las condiciones iniciales.
Ensayo Experimental 56 Figura 5.10: Salida de datos en el Ensayo. Desde el mismo programa se puede descargar los datos en un archivo de Excel, siendo la forma fácil de poder contrastarlos con los de la estimación ya que también puede descargar los datos en un archivo compatible. Cabe destacar que los valores positivos y negativos de las gráficas hacen referencia a los ejes de los sensores que dependen de la orientación de los mismos. Siendo los ejes los que se muestran en la Figura 5.11, los elementos rojos son los dos acelerómetros y el elemento verde el sensor laser para los desplazamientos, cada uno orientado de forma que los ejes horizontales coincidan en el mismo sentido. Figura 5.11: Esquema de la estructura ensayada. El programa también dispone de la opción de estimar las frecuencias propias de la estructura, estos valores son una referencia para comparar los resultados del ensayo con los de la estimación del programa basado en el código.
Capítulo V 57 Figura 5.12: Estimación de las frecuencias propias. De la Figura 5.12 salen los valores de las dos frecuencias propias, siendo dos por ser un sistema de dos grados de libertad. Los valores estimados son los picos de máxima amplitud, siendo 1,465 Hz y 6,641 Hz respectivamente. 5.3 Estimación de valores Para sacar resultados del programa, se necesitan todos los datos sobre las matrices de masa y rigidez pudiendo hacer aproximaciones por las dimensiones y características de la estructura. Además, también hacen falta los datos sobre las condiciones iniciales de los dos nodos, teniendo que estimar la del primer nodo por no tener un sensor en este. Para empezar, se aproxima el valor de las masas de los dos nodos que componen la estructura y los valores sobre las rigideces que corresponden a los pilares, luego sus correspondientes rigideces y por último el valor de las condiciones iniciales. 5.3.1 Estimación de las masas La estructura está compuesta de dos materiales diferentes, siendo aluminio las dos placas laterales que hacen de pilares en la estructura y metacrilato el de las entreplantas primera y segunda. Las densidades de estos materiales son de 2700 kg/m3 y 1200 kg/m3 respectivamente. Junto a las dimensiones de la estructura se calcula el peso correspondiente al primer nodo, al que le corresponden las dos planchas de aluminio hasta la primera planta y el bloque de metacrilato de la misma. El resto de la estructura corresponde a la masa del segundo nodo. Las dimensiones de la estructurase pueden ver en la Figura 5.13.
Manual del Usuario 64 6.3 Aplicaciones del programa El programa se ha desarrollado para el ámbito del análisis modal de sistemas discretos unidireccionales. La principal aplicación del programa consiste en comprender, describir y modelar el comportamiento del sistema frente a fuerzas externas que simulan casos de su vida útil en funcionamiento. Por ello el programa permite, entre otras funciones, la identificación de las frecuencias propias y modos de vibración del sistema para un rango de frecuencias mediante la información de las propiedades dinámicas de la estructura, esta información es importante durante el desarrollo y diseño del sistema pues ayuda a analizar cómo las fuerzas afectan a la estructura. También, al revés que antes, permite sacar datos sobre las propiedades dinámicas de una forma indirecta con datos como las frecuencias propias, así es como se ha procedido en el Capítulo 5 sobre el ensayo experimental. El programa dispone de gráficas tanto de las funciones de respuesta en frecuencia como de la respuesta temporal. Estas son gráficas interactivas, disponen de opciones como visualizar los datos de ciertos puntos directamente sobre la gráfica, hacer zoom y moverla o incluso aislar parte de la gráfica para que solo enseñe esa porción que el usuario escoja. Además, todas esas gráficas son descargables de forma independiente El usuario también tiene a disposición todos los datos que el programa ha procesado y con los que ha realizado las gráficas, estos al igual que las gráficas también son descargables. El programa descarga los datos en un archivo con extensión “CSV”, estas significan “Comma Separeted Values” lo que quiere decir que entrega un listado de caracteres separados por comas, esto hace al archivo muy genérico y puede ser abierto desde Excel hasta los lectores de documentos más sencillos y comunes como los que contienen la extensión TXT en Windows. El programa también dispone de algunas funciones especiales, los valores de los autovalores, autovectores y factores de amortiguamiento crítico. Entre las ventanas del programa está la de Cálculo Modal, aquí se encuentran a disposición del usuario tablas con todos estos valores tanto del caso amortiguado como del no amortiguado. Son valores que no siempre toman tanta importancia como las gráficas, las frecuencias propias y modos de vibración, pero son importantes y pueden ser de utilidad dando así un valor añadido al programa.
Capítulo VI 65 6.4 Descripción de los menús Es importante una descripción de los menús que sirva de referencia para el usuario y explique todas las funciones del programa, desde las más obvias hasta las que son menos intuitivas. En el siguiente apartado se explicarán los menús con capturas del mismo y anotaciones sobre estas junto con leyendas que recojan toda la información. 6.4.1 Entrada de datos Como se ha visto en el apartado 4.2 sobre la interfaz gráfica, la primera parte del programa a la que se tiene acceso es la columna de la izquierda sobre la entrada de parámetros. Es la que se ve en la Figura 6.1. Figura 6.1: Entrada de parámetros en la interfaz gráfica 1 2 3 4 5
Manual del Usuario 66 1. Botón de grados de libertad: Empezando por la primera ventana, esta muestra una de las opciones más importantes. De este botón dependen los demás parámetros del programa, incluso en tamaño y apariencia como es el caso de las tablas que se adaptan en tamaño para introducir todos los datos del sistema, por lo que es aconsejable que sea el primer dato en introducir. 2. Tabla de propiedades dinámicas de la estructura: La segunda ventana se centra en los datos que definen el sistema, divididos por columnas se introducen los datos de las matrices de masa, rigidez y amortiguamiento de los diferentes grados de libertad, divididos estos por filas. Una vez se ha realizado todos los cambios en la tabla, el botón de “Actualizar datos tabla” actualiza esos valores en el programa y recalcula de nuevo todos los resultados. El programa no lo hace de forma instantánea al introducir un nuevo valor para no tener que repetir el proceso varias veces si son muchos los datos nuevos. 3. Grado de libertad a visualizar: Esta pestaña muestra un contador o “spinner” [18] que selecciona el grado de libertad sobre el que se quieren mostrar los resultados y salidas por pantalla de las gráficas. 4. Cuadro de control sobre respuesta temporal o en frecuencia: Aquí aparece el primer apartado que varía totalmente según la pestaña que se seleccione. La primera pestaña, Tiempo, de las dos que se encuentran en la parte superior de esta ventana, da acceso a las opciones sobre la gráfica de respuesta temporal, en concreto a las opciones de si mostrar desplazamiento, velocidad o aceleración el desplegable de arriba y el tiempo del ensayo la opción de abajo. Figura 6.2: Cuadro de control sobre respuesta temporal Figura 6.3: Cuadro de control sobre respuesta en frecuencia
Capítulo VI 67 La segunda pestaña, Frecuencia, muestra las opciones sobre la gráfica de la respuesta en frecuencia siendo estas: - La primera de la esquina superior izquierda, un desplegable que deja elegir entre mostrar la receptancia, movilidad o acelerancia. - La segunda de la esquina superior derecha, un contador que selecciona el grado de libertad sobre el que se actuará. - Por último, las dos opciones muestran los valores inicial y final respectivamente del intervalo de la frecuencia. 5. Botón de descarga de datos: Este botón permite descargar un fichero con extensión CSV con todos los datos con los que el programa ha realizado las gráficas. Este fichero es compatible con Excel y descarga los datos tanto de la respuesta temporal como la respuesta en frecuencia. 6.4.2 Salida de datos Una vez visto la entrada de datos, ahora se explica la segunda parte de la distribución del programa, la salida por pantalla de los resultados. Ésta dispone de tres ventanas diferente pudiendo variar para mostrar los resultados de la respuesta temporal en la pestaña de Tiempo, los resultados de la respuesta en frecuencia en la pestaña de Frecuencia y las tablas con los datos de los autovalores, autovectres y factores de amortiguamiento crítico en la pestaña de Cálculo modal. La primera pestaña es sobre la respuesta en el tiempo: Figura 6.4: Salida de resultados de la respuesta en el tiempo 6 8 7
Manual del Usuario 68 6. Gráfica de la respuesta en el tiempo: Esta es la gráfica de la respuesta temporal que muestra la amplitud, en las ordenadas, del grado de libertad que se ha escogido visualizar en la ventana 3 y el tiempo transcurrido, representado en las abscisas. 7. Opciones sobre la gráfica de Bokeh: Este menú se ha configurado para tener las herramientas esenciales. El primer logo que se muestra es el de Bokeh [3] y con él se puede acceder a la página oficial. El segundo te permite mover la gráfica libremente con el cursor. El tercero es una opción para seleccionar solo parte de la gráfica y que se centre la ventana en ella. El cuarto desactiva la opción anterior y deja fija la vista que se muestre en ese momento por pantalla. El quinto es una ruleta para hacer zoom desde la ruleta del ratón sobre la gráfica, esta opción es más precisa que la de la tercera. La sexta opción deja guardar la gráfica como se muestre en ese momento en el ordenador en un formato con extensión PNG. La séptima es un botón para restablecer la gráfica como de inicio. La última opción permite activar o desactivar que se muestren valores de la gráfica sobre un punto si se coloca el cursor sobre ella. 8. Entrada de datos de los parámetros de las fuerzas y condiciones iniciales: La tabla que se muestra en la ventana es parecida a la de la ventana dos de más arriba. En esta podemos variar los parámetros de las ecuaciones que definen las fuerzas que actúan sobre el sistema y las condiciones iniciales de desplazamiento y velocidad de los diferentes grados de libertad. En el caso de que las fuerzas sean nulas los valores de las tres primeras columnas serán cero, este es el caso visto en el capítulo del ensayo experimental donde solo existen desplazamientos iniciales. También dispone de un botón, debajo de la tabla, que actualiza los datos una vez se han terminado de modificar. La segunda pestaña de esta parte, la pestaña de Frecuencia, es la que se muestra a continuación en la Figura 6.5.
Capítulo VI 69 Figura 6.5: Salida de resultados de la respuesta en frecuencia 9. Graficas de la función de respuesta en frecuencia (FRF): Esta gráfica muestra la función de respuesta en frecuencia según los parámetros establecidos por el usuario en la ventana cuatro, en la pestaña de Frecuencia. Estas funciones siempre se grafican con la amplitud en las ordenadas y la frecuencia en las abscisas. 10. Graficas de la fase en función de la frecuencia: Esta gráfica, a diferencia de la anterior, muestra la fase en vez de la magnitud frente a la frecuencia. La tercera y última ventana de la salida de datos es la de la pestaña de Cálculo modal. Esta ventana contiene cuatro diferentes tablas que proporcionan información de los datos sobre los autovalores y autovectores, tanto del caso amortiguado como del no amortiguado, y datos sobre los factores de amortiguamiento crítico. 9 10
Manual del Usuario 70 Figura 6.6: Tablas de autovalores, autovectores y factores de amortiguamiento 11. Tabla de los autovalores: La gráfica muestra los valores de los autovalores por filas según los grados de libertad. En la primera columna muestra los resultados del caso no amortiguado y en la segunda columna los de caso amortiguado. 12. Tabla de los factores de amortiguamiento crítico: Aquí se muestran los factores de amortiguamiento crítico por filas según el grado de liberad al que correspondan. 13. Tabla de los autovectores para el caso no amortiguado: En esta tabla el resultado es una matriz cuadrada de dimensión n. Cada columna de esta matriz es una forma modal asociada a cada una de las n frecuencias propias. 14. Tabla de la parte real de los autovectores para el caso amortiguado: La tabla muestra la matriz resultado, pero solo la parte real de los valores. Esto es por las limitaciones de Bokeh que no permiten mostrar números imaginarios. 15. Tabla de la parte imaginaria de los autovectores para el caso amortiguado: Esta es igual a la anterior, pero con su parte imaginaria. 11 12 13 14 15
Capítulo VI 71 6.5 Tareas comunes - Estudio del comportamiento del sistema según sus propiedades: El programa permite visualizar la amplitud de los diferentes nodos frente al tiempo, esto es útil para observar cómo se disipa la energía o como se mantiene la gráfica constante si se suprime el amortiguamiento estudiando así su influencia. - Obtención de propiedades dinámicas: Se puede modificar tanto las fuerzas que se aplican como las condiciones iniciales para estudiar el tiempo que tarda un sistema en disipar la energía o volver a su estado de reposo. Si se ensaya una estructura y se conocen esos tiempos y amplitudes, se pueden sacar propiedades dinámicas de la misma. - Cumplimiento de las especificaciones: Con los datos como las propiedades dinámicas y las fuerzas exteriores se pueden obtener datos del programa para comprobar si es posible analizar la estructura y ver si cumple las especificaciones en lo que se refiere a desplazamientos o vibraciones. - Obtención de las Funciones de Respuesta en Frecuencia (FRF): Se pueden descargar las gráficas de las funciones de respuesta en frecuencia y obtener de ellas las frecuencias naturales del sistema. 6.6 Funciones avanzadas Con el fin de dar un valor añadido al programa y que destaque frente a otros similares se ha incorporado funciones más específicas. Estas funciones son las que se muestran en la ventana de Calculo modal del programa, se ven en la Figura 6.6, siendo los valores de los autovalores, autovectores y factores de amortiguamiento crítico. Por otro lado, los factores de amortiguamiento críticos son los valores de los respectivos amortiguamientos para los diferentes grados de libertad que anulan la vibración, siendo el límite entre que la estructura oscile o no. Estos valores son importantes a modo de referencia para decidir cuáles son los adecuados para la estructura según las especificaciones de la misma. 6.7 Problemas comunes Como todo programa en su fase de desarrollo existen problemas que pueden derivar de la limitación de las herramientas usadas para la programación y la falta de experiencia en el ámbito por parte del programador. Algunos problemas se han
Manual del Usuario 72 mostrado en las tablas de Bokeh, estas son poco modificables lo que hace difícil adaptarlas a un programa como el de este trabajo por su necesidad de adaptar tanto filas como columnas a las diferentes entradas y salidas que dependen del número de grados de libertad que es habitual que cambie para cada caso. A continuación, se mencionan algunos de los problemas más frecuentes con los que se encontrara un usuario haciendo un uso normal del programa y soluciones a los mismos: - Error al introducir datos en las tablas: Como se ha mencionado, la librería de tablas de Bokeh muestra algunas limitaciones para ser modificada. Es posible que el usuario se encuentre con que al introducir un dato nuevo en las tablas y actualizar, los valores del programa no se vean modificados. Esto sucede porque Bokeh no ha leído los datos nuevos. Es necesario que una vez se ha seleccionada una casilla de las tablas y se ha modificado, se seleccione otra casilla diferente, aunque no se modifique. De esta forma Bokeh interpreta que has dejado de modificar esa casilla y que el valor ya es definitivo. - Falta de sincronización de ventanas: No ha sido posible sincronizar las ventanas de la columna de la derecha y de la izquierda para que cuando se seleccione una la otra coincida. Esto puede llevar a confusión si se están usando varias ventanas a la vez. - Error al descargar las gráficas: Las gráficas se descargan con lo que se esté mostrando en ese momento por pantalla por lo que si se quiere la gráfica completa es necesario devolverla a su estado inicial. - El programa no responde: Existe la posibilidad de que el programa deje de funcionar. Al ser un programa de acceso online cualquier interrupción en la red puede hacer que pierda la conexión definitivamente, aunque vuelva la conexión a la red, y sea necesario volver a cargar el buscador para que vuelva a funcionar. En estos casos se pierde el progreso, por lo que se recomienda descargar con frecuencia los datos que se deseen conservar. - Archivos descargados: Los archivos descargados se descargan en formato “CSV”, es posible que el ordenador no los interprete como una extensión conocida. Por esto y por si se quieren abrir en Excel, es necesario solicitar abrir el archivo con un programa diferente y seleccionar Excel. También es posible abrir el archivo desde Excel directamente
Capítulo VII 73 Capítulo VII. Valoración Económica 7 7.1 Resumen económico La finalidad del siguiente capítulo es resumir los costes del proyecto incluyendo el tiempo empleado y el precio de los equipos usados. Para las horas empleadas se estima el sueldo medio de un Ingeniero Mecánico recién titulado según la universidad Alfonso X el Sabio [21]. Solo se contemplan los costes directos por haberse realizado el trabajo en una modalidad telemática y no representar un coste relevante. La Tabla 7.1 muestra la cuantía total por las horas empleadas en el desarrollo del trabajo. Estas horas incluyen las dedicadas al desarrollo del software y las dedicadas a los ensayos experimentales. Tabla 7.1: Coste directo por mano de obra La segunda parte de los costes es la relacionada a los aparatos de trabajo como es el ordenador y los equipos usados en el ensayo. La Tabla 7.2 recoge el listado de estos elementos y su coste. Concepto Cantidad Horas semanales (hora) 10 Duración en semanas (semanas) 30 Horas totales empleadas(hora) 300 Suelda Ingeniero (€/hora) 12,5 Total (€) 3750
80