Foto de Mika Baumeister en Unsplash. Si eres un usuario frecuente de PLAXIS como yo, debes haberte hecho esta pregunta: ¿por qué diablos necesito seguir repitiendo esta acción de copiar y pegar para extraer resultados? PLAXIS, sin duda, es un poderoso software FE . Como ingenieros geotécnicos, queremos centrarnos en el análisis y dedicar menos tiempo al posprocesamiento. Python ofrece las posibilidades más amplias para automatizar la extracción y visualización de resultados, gracias a los módulos desarrollados por las comunidades de código abierto. Algunos módulos comunes incluyen:PandasXlsxwriterMatplotlibSeabornEl objetivo final de este tutorial es mostrarle cómo usar el script de Python para extraer resultados de un elemento estructural en PLAXIS 2D. Esto se puede hacer con los siguientes cuatro pasos. Use IDE para abrir PLAXIS Output. Instale el módulo externo al entorno PLAXIS. Extraiga los resultados de la placa de PLAXISE. Exporte como hoja de cálculo de Excel. Este tutorial requiere que los lectores tengan VS Code y el entorno PLAXIS instalado. Siga las instrucciones del artículo a continuación si es nuevo en esta página. ¡Comencemos! Utilicé un modelo PLAXIS 2D publicado por el sitio web oficial de Bentley como se muestra a continuación. En el enlace, descargue el archivo de registro de comandos de V22.01. Según el conocimiento del autor, los comandos de Python han cambiado significativamente de V21 a V22. Por lo tanto, asegúrese de tener instalado PLAXIS V22 o superior (V22.01 y V22.02) para asegurarse de que el script de Python en este tutorial funcione correctamente.Captura de pantalla del autor Una vez que haya ejecutado el comando usando “Ejecutar comandos…”, debería poder ver la siguiente geometría.Captura de pantalla de PLAXIS del autor. Este ejemplo modela la construcción de una excavación que consta de un muro pantalla (elemento Plate). Nuestro objetivo es extraer los resultados del elemento de la placa. Calcular el modelo y estamos listos para extraer los resultados usando Python. A diferencia del primer tutorial, esta vez abriremos un archivo PLAXIS que acabamos de descargar y, por lo tanto, el código para iniciar el servidor necesita para ser ligeramente modificado. Deberá guardar el modelo calculado en un directorio de trabajo preferido. Mi ubicación del archivo PLAXIS: C:\Users\phtsang\Desktop\Current_Projects\LinkedIn\Blog_2\ExcavationPrimero crearé un script de python vacío llamado “open_output.py ”.Después de eso, escribimos el siguiente código en el archivo python. El código es muy similar al del primer tutorial, pero esta vez abriremos un archivo PLAXIS existente. Para hacer esto, hicimos los siguientes tres cambios: Dado que esta vez necesitamos abrir un archivo PLAXIS, se debe especificar el directorio de trabajo del archivo que se almacena como “FILE_PATH”. Luego abrimos el archivo usando el comando PLAXIS “s_i.open(FILE_PATH)”. Para abrir la salida de PLAXIS, escribimos “g_i.view(g_i.Phases[1])” que nos permite ver los resultados del cálculo de Phase_1. from plxscrpting. easy import *
subproceso de importación, tiempo
importar sistema operativo############################################
PLAXIS_PATH = r’C:\Program Files\Bentley\Geotechnical\PLAXIS 2D CONNECT Edition V22\\Plaxis2DXInput.exe’ # Especifique la ruta de PLAXIS en el servidor.
FILE_PATH = r’C:\Users\phtsang\Desktop\Current_Projects\LinkedIn\Blog_2\\Excavation’ # Especifique la ubicación y el nombre del archivo PLAXIS
PORT_i = 10000 # Define un número de puerto.
PUERTO_o = 10001
CONTRASEÑA = ‘SxDBR
# globales g_i, s_i
s_i, g_i = nuevo_servidor(‘localhost’, PORT_i, contraseña=CONTRASEÑA)
s_o, g_o = nuevo_servidor(‘localhost’, PORT_o, contraseña=CONTRASEÑA)s_i.open(RUTA_ARCHIVO)g_i.gotostages()
g_i.view(g_i.Phases[1])Captura de pantalla de VS Code por el autor Para probar que el código anterior funciona correctamente, ejecutaremos “open_output.py” en la terminal como se muestra a continuación. Escriba “python open_output.py” y haga clic en Entrar.Captura de pantalla de VS Code por el autor. Ambas aplicaciones de entrada y salida de PLAXIS 2D deben abrirse automáticamente. Desde la aplicación de salida, debería ver “SERVIDOR ACTIVO en el puerto 10001”.Captura de pantalla de PLAXIS por el autor Ahora tenemos la API de PLAXIS conectada, estamos listos para pasar al siguiente paso. Cuando se usa el entorno de secuencias de comandos PLAXIS, es común usar módulos de Python que permiten extender la funcionalidad de una secuencia de comandos de Python. Dado que nuestro objetivo es extraer resultados de PLAXIS y exportarlos a una hoja de cálculo de Excel, necesitamos dos módulos externos: estos módulos se pueden instalar a través de la ventana del símbolo del sistema de PLAXIS como se muestra en los pasos a continuación. Antes de continuar, asegúrese de haber realizado el paso 1 con la entrada PLAXIS abierta. Vaya a la opción de menú Experto > Python > Símbolo del sistema. Esto abrirá el símbolo del sistema de Windows con PLAXIS configurado como el entorno actual.Captura de pantalla de PLAXIS por el autor. Cambie el directorio a la carpeta de distribución de Python de PLAXIS. Esto se puede hacer con el siguiente comando: pushd C:\ProgramData\Bentley\Geotechnical\PLAXIS Python Distribution V2\python\Lib\site-packagesCaptura de pantalla de PLAXIS por el autor En el símbolo del sistema ahora puede instalar cualquier nuevo módulo de Python usando el comando que se muestra en el ejemplo a continuación. Por ejemplo, si desea instalar el módulo pandas: python -m pip install pandasCaptura de pantalla de PLAXIS por el autor Además, instale el módulo xlsxwriter: python -m pip install xlsxwriter Ahora que hemos instalado todos los módulos necesarios. Luego podemos extraer los resultados de PLAXIS utilizando el script Python. Nuestro objetivo principal, el Paso 3, es extraer cuatro tipos de resultados para el elemento de placa (pared de diafragma) en la última fase (tercera etapa de excavación). [Phase_5]). Los tipos de resultados que extraeremos son: Coordenadas Y Corte Momento de flexión Fuerza axial En el paso 4, luego exportaremos los resultados a una hoja de cálculo de Excel con las columnas que se muestran a continuación.Captura de pantalla de excel por el autor Primero, creamos un archivo python vacío y lo llamamos “output_plate.py”.
Necesitamos asegurarnos de que la API esté conectada, así como también importar los módulos que instalamos anteriormente. from plxscripting.easy import *
subproceso de importación, tiempo
importar matematicas
importar pandas como pd
importar sistema operativo
importar xlsxwriter###########################################
PORT_i = 10000 # Define un número de puerto.
PUERTO_o = 10001
PASSWORD = ‘SxDBR
s_o, g_o = nuevo_servidor(‘localhost’, PORT_o, contraseña=CONTRASEÑA)
Dado que necesitamos exportar los resultados a Excel, necesitamos especificar la ubicación del archivo exportado y su nombre. Ubicación del archivo: asegúrese de que haya una barra inclinada doble (\\) después de su directorio de trabajo Nombre del archivo: puede ser cualquier nombre que desee EXCEL_PATH=r’ C:\Usuarios\phtsang\Escritorio\PLAXIS_V22\Script\\’
EXCEL_NAME=’plate_output.xlsx’FILENAME=EXCEL_PATH+EXCEL_NAME
Después de eso, ingresaremos el elemento estructural y la fase correspondiente que nos gustaría extraer. En este caso: ‘Placa_1’ y ‘Tercera etapa de excavación [Phase_5]’.El código debajo es para encontrar los elementos y fases de placa existentes en el modelo y almacenarlos como list.plate_input=[‘Plate_1’] # Entrada por usuario
fase_entrada=[‘Third excavation stage [Phase_5]’]# Entrada del usuario######################################### ###
#Elemento del modelo existente:placa=[plt for plt in g_o.Plates[:]]# Bucle a través del objeto de placa en el modelo existente
fase=[p for p in g_o.Phases[:]]# Recorra todas las fases disponibles Dos conceptos importantes aquí:En bucle: la acción de encontrar elementos existentes en PLAXIS requiere bucle for. Este es un comando muy común en la programación. Por ejemplo en “plato”, tenemos:for plt en g_o.Plates[:]Esta línea significa que estamos recorriendo todos los elementos de la placa en “g_o.Plates[:]” (que es como PLAXIS almacena objetos) y asígnele el nombre “plt”.Lista: Como se mencionó en el primer tutorial, es común almacenar valores en una lista que está representada por un corchete [ ]. La sintaxis ha cambiado ligeramente en comparación con el primer tutorial, ya que se ha simplificado. Esta línea: placa =[plt for plt in g_o.Plates[:]]Puede extenderse como:placa=[]para plt en g_o.Plates[:]plate.append(plt) Ambos códigos darán el mismo resultado, pero el primero es mucho más limpio y se usa comúnmente en Python. Hasta ahora, su secuencia de comandos debería verse así:Captura de pantalla de VS Code por el autor Después del procesamiento previo como se mencionó anteriormente, podemos comenzar a extraer los resultados de la placa. Para hacer eso, definiremos una función para extraer resultados, la llamada es “get_plate()”. Algunos puntos clave aquí: Coordenada Y = ResultTypes.Plate.YShear = ResultTypes.Plate.Q2DBending Moment = ResultTypes.Plate.M2DAxial Force = ResultTypes.Plate.Nx2DLas siguientes líneas son para crear nombres de columna como se especifica en la hoja de cálculo de destino. Los resultados son luego almacenados como “resultados”. Aquí presento un nuevo tipo de datos llamado Diccionario en Python, que se representa mediante llaves { }. El diccionario es particularmente útil cuando desea crear una tabla, contiene un par clave-valor. Por ejemplo: ‘Y’ es el llave de dictionaryplateY es el valor de diccionario. Se puede almacenar una matriz de valores en la clave especificada. Una vez que se crea el diccionario, la siguiente línea convierte el diccionario en un marco de datos. Dataframe es una de las estructuras de datos más comunes que usamos en Python. Puedes interpretarlo como una tabla en excel. Esto se hace ejecutando el comando: “pd.DataFrame (resultados)”. También clasifico los resultados usando la coordenada Y en orden descendente. Asegúrese de que la sangría sea correcta, como se muestra en la captura de pantalla a continuación. .getresults(placa_o,fase_o,g_o.ResultTypes.Placa.Y, “nodo”)
plateQ=g_o.getresults(plate_o,phase_o,g_o.ResultTypes.Plate.Q2D, “node”)
placaM=g_o.getresults(placa_o,fase_o,g_o.ResultTypes.Plate.M2D, “nodo”)
plateAxial=g_o.getresults(plate_o,phase_o,g_o.ResultTypes.Plate.Nx2D, “node”) nombrefase=str(fase_o.Identificación).split(‘[‘)[0]
col1=’Cortar [kN]’+’_’+nombre de fase
col2=’Momento flector [kNm/m]’+’_’+nombre de fase
col3=’Fuerza axial [kN]’+’_’+fasenombreresultados = {‘Y’: placaY, col1: placaQ,col2: placaM,col3: placaAxial}placaresultados=pd.DataFrame(resultados)
plateresults = plateresults.sort_values(by=[‘Y’],ascending=False)return plateresultsCaptura de pantalla de VS Code por el autor. Por último, exportaremos el marco de datos que creamos a Excel. Creamos una función, la llamamos “export_excel()”. Writer es para usar el módulo xlsxwriter que instalamos para exportar excelname y sheet_name es donde creo un nombre de la hoja de trabajo con formato “Plate_1_Phase 5”. Luego, uso la función “get_plate()” que creamos anteriormente para generar el marco de datos y almacenarlo como “resultados”. Debe ser un marco de datos que luego se puede exportar a Excel usando el comando pandas “results.to_excel()”.def export_excel(plate_input,phase_input,filename):
escritor = pd. ExcelWriter (nombre de archivo, motor = ‘xlsxwriter’) nombre = str (fase[5].Identificación).split(‘ [‘)[1]
nombre=nombre.split(‘]’)[0]
sheet_name = “%s_%s” % (placa[0].Nombre nombre)
resultados = get_plate(plato[0]fase[5])
resultados.to_excel(escritor,nombre_hoja=nombre_hoja,índice=Falso)
escritor.guardar()export_excel(entrada_placa,entrada_fase,NOMBRE DEL ARCHIVO)Captura de pantalla de VS Code por el autor. Ejecute el script con lo siguiente. (PLAXIS) C:\Users\phtsang\Desktop\PLAXIS_V22\Script>python output_plate.py Verá que los resultados que buscamos se extrajeron automáticamente como se muestra en la ventana de comandos .Captura de pantalla de PLAXIS por el autor Ahora, si abre la hoja de cálculo de Excel en la ubicación que especificó anteriormente, puede ver que hemos extraído la coordenada Y, el corte, el momento de flexión y la fuerza axial como queríamos.Captura de pantalla de Excel por el autor ¡Bien hecho! Acaba de extraer resultados de PLAXIS usando el script de Python. Eso es todo por el segundo tutorial sobre cómo extraer la salida de PLAXIS usando Python. A estas alturas, debería poder extraer la salida de un solo elemento estructural de PLAXIS. En tutoriales futuros, mostraré cómo extraer resultados para múltiples elementos estructurales y diferentes tipos de estructuras, como interfaces y vigas incrustadas. Si disfruta leyendo este tipo de contenido, siéntase libre de seguir mi página. Seguiré publicando esta serie de tutoriales sobre la automatización de PLAXIS con Python. Aparte de eso, también estoy interesado en compartir conocimientos sobre cómo usar Python para automatizar el flujo de trabajo en ingeniería.
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…