Slide 1

Slide 1 text

SolidsPy: Elementos finitos en Python Nicolás Guarín-Zapata @nicoguaro Mayo de 2018

Slide 2

Slide 2 text

Sobre mí ● Ingeniería Física ● Mecánica computacional ● Propagación de ondas ● Acústica musical ● Diseño de materiales ● Matemáticas aplicadas ● Software libre/abierto

Slide 3

Slide 3 text

Hoy voy a compartir Nuestra experiencia enseñando modelación computacional con Python a través Solidspy, un paquete/programa de elementos finitos.

Slide 4

Slide 4 text

Docs solidspy.readthedocs.io/ Repo github.com/AppliedMechanics -EAFIT/SolidsPy

Slide 5

Slide 5 text

Otros paquetes de FEM en Python FeniCS Project: https://fenicsproject.org/ SfePy: http://sfepy.org/ PyCalculix: http://justinablack.com/pycalculix/ FreeCAD: https://freecadweb.org/

Slide 6

Slide 6 text

Contenido ● Introducción ● ¿Por qué Python? ● El método de elementos finitos ● SolidsPy ● Ejemplos de uso

Slide 7

Slide 7 text

Introducción

Slide 8

Slide 8 text

Objetivos de enseñanza ● Modelación computacional ● Computación con Python ● Métodos numéricos

Slide 9

Slide 9 text

Modelación computacional ● Curso de cuarto semestre de pregrado ● Uso de la computación para resolver problemas de ingeniería ● Uso de bloques de SolidsPy para realizar simulaciones mecánicas

Slide 10

Slide 10 text

Introducción al Método de Elementos Finitos ● Curso de primer año de posgrado ● Detalles matemáticos del método ● Construcción de un programa de Elementos Finitos paso a paso

Slide 11

Slide 11 text

¿Por qué Python?

Slide 12

Slide 12 text

https://xkcd.com/353/

Slide 13

Slide 13 text

¿Por qué Python? ● Lenguaje de programación completo ● Fácil de aprender (incluso para principiantes) ● Código corto y legible ● Graficación interactiva Bäcker, Arnd. "Computational physics education with Python." Computing in Science & Engineering 9.3 (2007): 30-33.

Slide 14

Slide 14 text

¿Por qué Python? ● Python es un lenguaje versátil ● Python es bueno para enseñar ● Se parece mucho al lenguaje escrito (en inglés) ● Es fácil realizar tareas útiles rápidamente en Python Jessica McKellar , A hands-on introduction to Python for beginning programmers, https://youtu.be/rkx5_MRAV3A

Slide 15

Slide 15 text

El Método de Elementos Finitos

Slide 16

Slide 16 text

¿Qué es el método de Elementos finitos? Es un método para resolver problemas de ingeniería y física que involucran ecuaciones en derivadas parciales.

Slide 17

Slide 17 text

Veamos un ejemplo Ubicación del puente Puente de Limyra en Turquía

Slide 18

Slide 18 text

La ecuación diferencial + condiciones de frontera

Slide 19

Slide 19 text

La solución Bajo Alto Desplazamiento vertical

Slide 20

Slide 20 text

Diferentes pasos involucrados ● Discretización de la geometría ● Interpolación ● Integración numérica ● Solución de las ecuaciones ● Postprocesamiento / Visualización

Slide 21

Slide 21 text

Discretización de la geometría

Slide 22

Slide 22 text

Interpolación

Slide 23

Slide 23 text

Integración numérica Usando interpolación e integración numérica convertimos el problema en solucionar un sistema de ecuaciones lineales.

Slide 24

Slide 24 text

Solución de las ecuaciones SciPy tiene gran cantidad de solucionadores que pueden usarse para la solución de este sistema. [K ]{U }={F} Matriz de rigidez Desplazamientos nodales Fuerzas nodales

Slide 25

Slide 25 text

Visualización Una vez tenemos la solución, visualizamos los resultados para verificar que tengan sentido.

Slide 26

Slide 26 text

SolidsPy

Slide 27

Slide 27 text

Ecosistema de código abierto Bibliotecas de Python: ● NumPy ● SciPy ● SymPy ● Matplotlib ● meshio Software externo: ● Gmsh ● ParaView

Slide 28

Slide 28 text

Ecosistema de código abierto Gmsh SolidsPy (Bibliotecas de Python) ParaView Preprocesamiento Procesamiento Postprocesamiento

Slide 29

Slide 29 text

Archivos de entrada simples Tomemos este modelo como ejemplo.

Slide 30

Slide 30 text

Archivos de entrada simples nodes.txt 0 0.00 0.00 0 -1 1 2.00 0.00 0 -1 2 2.00 2.00 0 0 3 0.00 2.00 0 0 4 1.00 0.00 -1 -1 5 2.00 1.00 0 0 6 1.00 2.00 0 0 7 0.00 1.00 0 0 8 1.00 1.00 0 0 mater.txt 1.0 0.3 eles.txt 0 1 1 0 4 8 7 1 1 1 4 1 5 8 2 1 1 7 8 6 3 3 1 1 8 5 2 6 loads.txt 3 0.0 1.0 6 0.0 2.0 2 0.0 1.0

Slide 31

Slide 31 text

Gmsh para modelos más complejos Usamos Gmsh para geometrías más complicadas. Luego usamos meshio para convertirlas al formato de SolidsPy.

Slide 32

Slide 32 text

ParaView para visualizaciones complejas También podemos usar meshio para exportar resultados a ParaView.

Slide 33

Slide 33 text

Ejemplos de uso

Slide 34

Slide 34 text

SolidsPy como un programa de Elementos Finitos independiente Solo se necesita la ruta a los archivos de entrada para realizar un análisis completo.

Slide 35

Slide 35 text

Veamos un ejemplo

Slide 36

Slide 36 text

import matplotlib.pyplot as plt from solidspy import solids_GUI disp = solids_GUI() plt.show()

Slide 37

Slide 37 text

SolidsPy como un programa de Elementos Finitos independiente En el siguiente repositorio están los archivos de entrada para diferentes modelos: https://github.com/AppliedMechanics- EAFIT/SolidsPy-meshes

Slide 38

Slide 38 text

Componentes de un Análisis de Elementos Finitos ● Importación/Exportación de mallas ● Biblioteca de elementos ● Ensamblador ● Solucionador

Slide 39

Slide 39 text

Veamos un ejemplo

Slide 40

Slide 40 text

import solidspy as solids # Leer los datos nodes, mats, elements, loads = solids.preprocesor.readin() # Formar el sistema de ecuaciones DME, IBC, neq = solids.assemutil.DME(nodes, elements) KG = solids.assemutil.assembler(elements, mats, nodes, neq, DME) RHSG = solids.assemutil.loadasem(loads, IBC, neq) # Solucionar las ecuaciones UG = solids.solutil.static_sol(KG, RHSG) # Post-procesar UC = solids.postprocesor.complete_disp(IBC, nodes, UG) E_nodes, S_nodes = solids.postprocesor.strain_nodes(nodes, elements, mats, UC) solids.postprocesor.fields_plot(elements, nodes, UC, E_nodes=E_nodes, S_nodes=S_nodes)

Slide 41

Slide 41 text

En resumen

Slide 42

Slide 42 text

SolidsPy es … ● Un código de FEM en un ecosistema de código abierto/libre ● Fácil de usar ● Usado para enseñar: – Modelación computacional en pregrado – Método de Elementos Finitos en posgrado

Slide 43

Slide 43 text

SolidsPy Docs: solidspy.readthedocs.io Repo: github.com/AppliedMechanics- EAFIT/SolidsPy