Está en la página 1de 10

OpenSeesPyView: Herramienta de posprocesamiento y

visualización basada en programación Python para


OpenSeesPy

Resumen
Este documento presenta un marco de visualización recientemente desarrollado
llamado OpenSeesPyView, una interfaz gráfica de usuario (GUI) basada en
programación de Python para OpenSeesPy, un solucionador de elementos finitos
predominante en la ingeniería sísmica. Para brindar a los usuarios más libertad para
codificar, OpenSeesPyView está débilmente conectado con OpenSeesPy a través de
una base de datos modelo. Los usuarios preparan los datos asociados para construir el
modelo numérico en OpenSeesPy utilizando los métodos de envoltura, que pueden
guardar la información del modelo y las respuestas sísmicas en la base de datos del
modelo. Luego la herramienta desarrollada se ejecuta para leer los datos de la base de
datos y visualizar el modelo, formas de modo, historial de respuestas en el tiempo, etc.
Además, es conveniente modificar y agregar códigos al marco de visualización
propuesto.

1 . Motivación y significado

OpenSees  [1] (el sistema abierto para la simulación de ingeniería sísmica) es un


solucionador general de elementos finitos de código abierto para simular las
respuestas sísmicas de estructuras y suelos. OpenSees se caracteriza por su
eficiencia computacional, flexibilidad y extensibilidad  [2] . OpenSees está
escrito principalmente con un lenguaje de programación orientado a objetos, C+
+  [3] , que permite a los desarrolladores o usuarios agregar/modificar
materiales, elementos, algoritmos, etc. Para facilitar el uso de OpenSees en la
práctica, su código fuente se compila y envuelve con lenguaje de comandos de
herramientas (TCL)  [4] , es decir, los usuarios preparan sus códigos con scripts
TCL, y el intérprete de TCL es responsable de interactuar con el solucionador de
OpenSees. Lenguaje pitón  [5]se ha vuelto cada vez más popular en la
comunidad de investigación debido a la rápida evolución de los algoritmos de
aprendizaje automático basados en Python  [6] , [7] , [8] . En comparación con
TCL, Python es fácil de usar y tiene muchos módulos potentes de terceros. Por
lo tanto, los mantenedores de OpenSees han desarrollado un intérprete de
Python llamado OpenSeesPy  [9] . Sin embargo, OpenSeesPy carece de una
poderosa herramienta de visualización y posprocesamiento para facilitar a los
usuarios la creación y verificación de sus modelos. Dado que la interfaz gráfica
de usuario (GUI) es importante para los usuarios de OpenSeesPy, en este
estudio se desarrolla un marco de visualización basado en programación de
Python puro, llamado OpenSeesPyView, para proporcionar módulos flexibles y
ampliables para la visualización de modelos y el posproceso.
Se han desarrollado algunas GUI gratuitas y de uso comercial para el
solucionador OpenSees. MDOF  [10] es una aplicación de múltiples grados de
libertad para estudiar las respuestas sísmicas de edificios parametrizados, y los
usuarios pueden capturar rápidamente la sensibilidad paramétrica de las
respuestas de historial de tiempo de un edificio. PileGroupTool  [10] es una
aplicación educativa que utiliza OpenSees para estudiar las respuestas de un
pilote o grupo de pilotes en perfiles de suelo en capas. MDOF y PileGroupTool
son aplicaciones educativas que no se pueden usar para GUI generales. Build-
X  [11] es un sistema experto para predecir respuestas sísmicas de edificios
3D. OpenSees Navigator  [12] es un Matlab  [13]GUI base para OpenSees, que
utiliza entrada gráfica para visualizar el modelado. BuildingTclViewer  [14] es
un programa que proporciona una GUI para crear la base de datos BuildingTcl
(una biblioteca de comandos Tcl para construir una base de datos para el
análisis numérico de marcos de construcción), realizar simulaciones de
elementos finitos con OpenSees y ver los resultados. AuTh  [15] desarrolló una
GUI para OpenSees, conectando a la perfección el solucionador de OpenSees
con el pre/postprocesador general GiD  [16] . La interfaz está integrada en el
entorno gráfico de GiD y puede construir modelos de manera efectiva y
visualizar los resultados de manera conveniente. STKO  [17]es una herramienta
GUI avanzada para OpenSees, y los usuarios también pueden interactuar con
ella mediante scripts de python. Actualmente, STKO puede mallar y visualizar
estructuras sólidas tridimensionales, y es conveniente mostrar las distribuciones
de tensión y deformación de modelos complicados. Cabe señalar que solo una
licencia comprada puede acceder a las funciones completas de STKO. Ver
Fe  [10]es una GUI basada en Python para el solucionador OpenSees, y el
software visualiza el modelo de elementos finitos y las respuestas asociadas
después de proporcionar los archivos de entrada TCL. Cabe señalar que las GUI
generales mencionadas anteriormente son para OpenSees (intérprete de TCL),
no para OpenSeesPy (intérprete de Python). Como resultado, es crucial
desarrollar un marco de visualización general para OpenSeesPy. Más
importante aún, en comparación con las GUI de OpenSees mencionadas
anteriormente, OpenSeesPyView es una GUI basada en secuencias de comandos
que tiene como objetivo aprovechar las ventajas de las funciones de secuencias
de comandos y la visualización de la GUI. Además, los usuarios tienen más
libertad para agregar sus códigos al marco propuesto, y algunos comandos en
OpenSeesPy están empaquetados, lo que hace que los usuarios construyan sus
modelos de manera rápida y precisa.
En este artículo, se desarrolla un marco de GUI general basado en la
programación de Python para OpenSeesPy, llamado
OpenSeesPyView. OpenSeesPyView es flexible, extensible y débilmente
conectado con OpenSeesPy. Más importante aún, la base de datos SQLite en
Python se utiliza para restaurar la información de visualización del modelo y los
resultados computacionales, como las coordenadas de los nodos, la conectividad
de los elementos, la información de transformación geométrica y las respuestas
estructurales. Los detalles y funciones del marco de visualización propuesto se
elaboran en la Sección  2 .
Figura 1 . Flujo de trabajo de OpenSeesPyView.

2 . Descripción del software


2.1 . Arquitectura de software
El marco de visualización propuesto consta de tres componentes: una clase contenedora
de comandos OpenSeesPy, una clase de operación de base de datos SQLite  [18] y un
componente de visualización, como se muestra en la figura 1 . La clase contenedora de
comandos OpenSeesPy ( OpenSeesPyClass.py ) está desarrollada para facilitar la
escritura de la información del modelo y los resultados computacionales en una base de
datos y para que sea fácil y rápido realizar análisis de respuesta sísmica con
OpenSeesPy. Por ejemplo, los comandos de análisis estático, modal y transitorio están
empaquetados y solo se requieren unos pocos parámetros para construir los comandos
asociados en la clase contenedora. La clase de operación de la base de datos SQLite
( SqliteDB.py) está escrito para guardar y consultar información del modelo y
resultados computacionales. Además, el archivo SqliteDB.py proporciona las funciones
para procesar la configuración de color predeterminada para los componentes del
modelo y el fondo de la ventana. Los valores predeterminados para los colores se
restauran en un archivo de base de datos denominado defaultSettingDB.db . El módulo
de registros (una biblioteca para realizar consultas SQL sin procesar a la mayoría de las
bases de datos relacionales) en PyPI (el índice del paquete de Python) se adopta para
operar la base de datos. El componente de visualización ( mainGUI.py ) lee datos de la
base de datos del modelo y muestra los resultados asociados. Se describe un ejemplo de
cómo agregar un elemento para aclarar el proceso de trabajo de
OpenSeesPyView. Primero, construya los nodos de elementos en OpenSeesPy usando
el comando ops.node(). En segundo lugar, extraiga la información del nodo (etiqueta y
coordenadas del nodo) del dominio OpenSeesPy y escríbalas en la base de datos modelo
mediante el comando saveNodes() en SqliteDB.py . En tercer lugar, construya y guarde
la información del elemento, como la etiqueta del elemento, las etiquetas de los nodos
conectados, las propiedades del elemento, etc., en la misma base de datos del modelo
con un proceso similar. Finalmente, al hacer clic en el botón del elemento que se
muestra, la función de respuesta (un método llamado elesPlot() en la clase
de pyvistaPlotClass ) extrae la información del elemento y los nodos de la base de
datos y los representa en la ventana principal de OpenSeesPyView con el
módulo pyvista . El componente de visualización utiliza PyQt5  [19](un conjunto de
enlaces de Python para Qt v5) para construir el marco GUI de OpenSeesPyView, adopta
Pyvista  [20] (una API de alto nivel para VTK  [21] ) para visualizar la información del
modelo en el espacio 3D y utiliza matplotlib  [22 ](un entorno gráfico 2D) para mostrar
las respuestas sísmicas. OpenSeesPyView está organizado con diferentes clases de
Python, lo que facilita su administración y ampliación. La filosofía de diseño de
OpenSeesPyView no es proporcionar una GUI completa para OpenSeesPy, sino
proporcionar un módulo auxiliar para facilitar la visualización y verificación del
modelo. La programación de secuencias de comandos de OpenSeesPy proporciona una
herramienta flexible para que los usuarios realicen sus programas de manera
conveniente, y la herramienta de visualización auxiliar (OpenSeesPyView) les ayuda a
verificar los modelos construidos y mostrar los resultados correspondientes.

2.2 . Funcionalidades del software


OpenSeesPyView admite la visualización de nodos, etiquetas de nodos, elementos 1D y
etiquetas de elementos. Además, la función de formas de modo estático y dinámico se
proporciona en OpenSeesPyView. Además, las figuras vectoriales del modelo y las
formas de modo se pueden exportar con archivos de formato AutoCAD utilizando el
módulo ezdxf (ezdxf es un paquete de Python para leer y escribir archivos DXF
existentes, https://ezdxf.mozman.at/docs/). Las respuestas sísmicas se guardan en la
base de datos del modelo y se pueden consultar rápidamente. Además, los resultados del
historial de tiempo se visualizan con el módulo matplotlib. Cabe señalar que las
respuestas almacenadas en la base de datos dependen de qué respuestas se especifican
para la salida. Actualmente, se admiten la mayoría de las respuestas (como el
desplazamiento de nodo, la velocidad, la aceleración, etc.) para elementos de viga, viga
y longitud cero tridimensionales. Los usuarios también pueden consultar de manera
eficiente sobre los datos almacenados en la base de datos escribiendo un simple script
de python. Las clases incluidas en el marco se ilustran en la Fig. 2 . Para facilitar que los
usuarios agreguen sus códigos al marco propuesto, en la siguiente sección se describen
en detalle varios fragmentos de código de muestra.

Figura 2 Diagrama de clases del marco GUI propuesto.

2.3 . Análisis de fragmentos de código de muestra


2.3.1 .  Operación de base de datos sqlite con módulo de registros.
La operación de la base de datos SQLite se simplifica mediante el uso del módulo de
registros. Las funciones principales de una base de datos son guardar y adquirir datos de
forma permanente, y estos dos objetivos se ilustran en los Listados 1 y 2. Para
simplificar el guardado de datos en la base de datos, el contenido guardado se expresa
con una cadena, como se muestra en el Listado 1. También debería Cabe señalar que los
nodos se insertan de forma masiva, lo que evita operar la base de datos con
frecuencia. Para consultar los nodos, solo necesita proporcionar el nombre de tabla
correspondiente de los nodos de consulta. Para abreviar, las operaciones de guardar y
consultar otra información del modelo no se enumeran, y se pueden encontrar más
detalles en el archivo python ( SqliteDB.py ). Es fácil para los usuarios ampliar la
funcionalidad de la base de datos.

2.3.2 .  Operación de ajuste de comandos OpenSeesPy


Para guardar convenientemente la información del modelo y los resultados
computacionales, algunos comandos necesarios de OpenSeesPy están envueltos
en una clase llamada OpenSeesPyClass . Por ejemplo, el elemento no lineal
quiere guardarse y visualizarse en OpenSeesPyView, y su comando nativo está
envuelto en un método llamado ele_nonlinearBeamColumnen el Listado 3.
El método envuelto no solo implementa el comando nativo en OpenSeesPy, sino
que también guarda los datos asociados en la base de datos modelo. Se observa
que la clase contenedora separa el análisis de elementos finitos (con
OpenSeesPy) y su visualización (con OpenSeesPyView), que están débilmente
conectados con la base de datos del modelo. Este diseño brinda a los usuarios
más libertad para preparar sus códigos, y solo necesitan envolver los comandos
en OpenSeesPy, donde los datos asociados requieren visualización. Algunos
comandos de uso común se han incluido en la clase, incluidos los nodos, los
elementos 1D, los comandos de análisis, etc. La clase contenedora facilita a los
usuarios la construcción de modelos de elementos finitos y el almacenamiento
de datos asociados.

2.3.3 .  Modelo de visualización con Pyvista


Pyvista se adopta para visualizar estática y dinámicamente el modelo construido
con OpenSeesPy. El Listado 4 presenta el método para mostrar los elementos
del modelo en el marco propuesto. En primer lugar, los nodos y elementos
asociados se obtienen de la base de datos del modelo; En segundo lugar, los
datos se transforman en el objeto pyvista PolyData; Finalmente, trazando las
mallas en la pantalla. Es simple mostrar los datos con pyvista
dinámicamente. El método update_coordinates() en pyvista se puede usar
para actualizar la posición del modelo. Además, el
método update_scalars() se puede utilizar para trazar el mapa de resultados
en la nube. El propósito de la investigación actual no es proporcionar todas las
funciones de una GUI, sino proporcionar un marco que los usuarios puedan
personalizar y ampliar.
3 . ejemplos ilustrativos

La versión actual de OpenSeesPyView puede manejar el procesamiento previo y


posterior de la estructura con elementos 1D, y otros elementos de tipo se pueden
agregar fácilmente al marco propuesto como se explica en la Sección  2 . Se
proporciona un puente atirantado para demostrar la aplicación de
OpenSeesPyView. De acuerdo con la configuración del puente y las propiedades
del material, construya el modelo de elementos finitos con OpenSeesPy
(AnExampleBridge OpenSeesPyModel.py ). Cabe señalar que los nodos, los
elementos, el análisis modal y el análisis sísmico se construyen con los métodos
de envoltura en OpenSeesPyClass.py . La información del modelo (incluidos
nodos, elementos y sistemas de coordenadas locales)
se guarda en la base de datos del modelo ( resultsDB_1_1.db ). Después de
ejecutar mainGUI.py , la ventana principal de OpenSeesPyView se muestra
como la Fig. 3 . Luego, haga clic en el botón con la etiqueta 'LoadResultDB', y el
modelo de elementos finitos del puente atirantado se mostrará en la ventana. Es
conveniente verificar los sistemas de coordenadas locales de los elementos del
modelo, como se presenta en la Fig. 4 . Esta función puede ayudar a los usuarios
a identificar el localDEeje de los elementos 1D y verifique si el modelo se
construye como se desea. Cabe señalar que las flechas roja, verde y azul
representan los ejes locales 1, 2 y 3, respectivamente.
Figura 3 . Visualización de nodos y elementos de OpenSeesPyView.

Figura 4 . Sistemas de coordenadas locales para elementos en OpenSeesPyView. (Para


la interpretación de las referencias al color en la leyenda de esta figura, se remite al
lector a la versión web de este artículo).

La Fig. 5 muestra la forma modal del puente. Las formas modales ayudan a los usuarios
a comprender las propiedades dinámicas de las estructuras y validar la corrección de
los modelos de elementos finitos. Para facilitar el uso de OpenSeesPyView en la
investigación científica, las imágenes vectoriales de modelos de elementos finitos y
formas de modo se pueden generar con formato dxf. Las respuestas de la historia del
tiempo del puente sometido a un sismo se muestran en la Fig. 6. Es conveniente trazar
la historia del tiempo y las respuestas histeréticas del puente. Además, los usuarios
pueden verificar las respuestas mientras se ejecuta el solucionador, lo cual es el
beneficio de separar OpenSeesPy y OpenSeesPyView. Aunque el puente de ejemplo solo
usa elementos 1D, los pasos básicos son idénticos a otras estructuras. Se alienta a los
usuarios a ampliar las funciones de OpenSeesPyView para resolver sus problemas
específicos.

Figura 5 . Forma de 2º modo del puente atirantado.

Figura 6 . Ventana de trazado de resultados de historial de tiempo.

4 . Impacto
La forma actual de OpenSeesPyView es compatible con OpenSeesPy 3.3.0. Es un
programa Python puro, pero un poderoso marco de procesamiento previo y posterior
para el solucionador de elementos finitos OpenSeesPy. En comparación con la versión
de intérprete de TCL de OpenSees, la versión de intérprete de Python (OpenSeesPy)
facilita la construcción de modelos numéricos y la realización de análisis de resultados
asociados. OpenSeesPy se usa ampliamente en la comunidad de ingeniería sísmica para
simular las respuestas sísmicas de sistemas estructurales y geotécnicos. Sin embargo,
faltan herramientas de visualización simples pero poderosas para OpenSeesPy, lo que
limita el desarrollo de OpenSeesPy. El marco propuesto puede llenar este vacío.
En comparación con otras herramientas de visualización existentes para OpenSees,
OpenSeesPyView tiene como objetivo proporcionar un marco de visualización flexible
y extensible para OpenSeesPy. OpenSeesPyView está débilmente conectado con
OpenSeesPy a través de la base de datos del modelo, lo que brinda a los usuarios más
libertad para preparar su modelo OpenSeesPy. Además, los usuarios pueden modificar y
agregar convenientemente nuevos códigos para un uso específico.
5 . Conclusiones
En este estudio, se desarrolla un marco de procesamiento previo y posterior de código
abierto para OpenSeesPy. OpenSeesPyView interactúa con OpenSeesPy con una base
de datos modelo, lo que hace que el solucionador y la herramienta de visualización se
acoplen semanalmente. Los usuarios de OpenSeesPy pueden usar OpenSeesPyView
para verificar la corrección de los modelos de elementos finitos construidos,
comprender las propiedades dinámicas de las estructuras y ver convenientemente las
respuestas sísmicas.
Aunque la versión actual de OpenSeesPyView solo admite estructuras de visualización
con elementos 1D, se pueden agregar fácilmente otros elementos al marco, como se
explica en la Sección  2 . La futura versión de OpenSeesPyView incluirá la
visualización del plano bidimensional y elementos sólidos tridimensionales, diagramas
de nubes de tensión y deformación, análisis de propiedades de secciones generales,
generación automática de nodos y elementos del modelo, etc.
Declaración de interés en competencia
Los autores declaran que no tienen intereses financieros en competencia ni relaciones
personales conocidas que pudieran haber influido en el trabajo informado en este
documento.
Fondos
Esta investigación fue apoyada por el Programa de Excelencia Postdoctoral de
Shanghái bajo la Subvención No. 2021333 , la Fundación Nacional de Ciencias
Naturales de China bajo la Subvención No. 51878491 , 52008155 , 52178155 , y
el Programa Base de Práctica de Innovación Postdoctoral del Distrito Yangpu de
Shanghai .
Disponibilidad de datos
Los datos estarán disponibles a petición.

También podría gustarte