Upgrade to Pro — share decks privately, control downloads, hide ads and more …

solidspy_python_meetup.pdf

 solidspy_python_meetup.pdf

La charla gira en torno a nuestra experiencia enseñando modelación computacional con Python a través de SolidsPy, un paquete de elementos finitos hecho en Python.

Tweet

More Decks by Nicolás Guarín-Zapata

Other Decks in Education

Transcript

  1. 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
  2. Hoy voy a compartir Nuestra experiencia enseñando modelación computacional con

    Python a través Solidspy, un paquete/programa de elementos finitos.
  3. Otros paquetes de FEM en Python FeniCS Project: https://fenicsproject.org/ SfePy:

    http://sfepy.org/ PyCalculix: http://justinablack.com/pycalculix/ FreeCAD: https://freecadweb.org/
  4. Contenido • Introducción • ¿Por qué Python? • El método

    de elementos finitos • SolidsPy • Ejemplos de uso
  5. 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
  6. 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
  7. ¿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.
  8. ¿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
  9. ¿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.
  10. Diferentes pasos involucrados • Discretización de la geometría • Interpolación

    • Integración numérica • Solución de las ecuaciones • Postprocesamiento / Visualización
  11. 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
  12. Ecosistema de código abierto Bibliotecas de Python: • NumPy •

    SciPy • SymPy • Matplotlib • meshio Software externo: • Gmsh • ParaView
  13. Ecosistema de código abierto Gmsh SolidsPy (Bibliotecas de Python) ParaView

    Preprocesamiento Procesamiento Postprocesamiento
  14. 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
  15. Gmsh para modelos más complejos Usamos Gmsh para geometrías más

    complicadas. Luego usamos meshio para convertirlas al formato de SolidsPy.
  16. SolidsPy como un programa de Elementos Finitos independiente Solo se

    necesita la ruta a los archivos de entrada para realizar un análisis completo.
  17. 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
  18. Componentes de un Análisis de Elementos Finitos • Importación/Exportación de

    mallas • Biblioteca de elementos • Ensamblador • Solucionador
  19. 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)
  20. 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