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. SolidsPy: Elementos finitos en Python
    Nicolás Guarín-Zapata
    @nicoguaro
    Mayo de 2018

    View Slide

  2. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  6. Contenido

    Introducción

    ¿Por qué Python?

    El método de elementos finitos

    SolidsPy

    Ejemplos de uso

    View Slide

  7. Introducción

    View Slide

  8. Objetivos de enseñanza

    Modelación computacional

    Computación con Python

    Métodos numéricos

    View Slide

  9. 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

    View Slide

  10. 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

    View Slide

  11. ¿Por qué Python?

    View Slide

  12. https://xkcd.com/353/

    View Slide

  13. ¿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.

    View Slide

  14. ¿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

    View Slide

  15. El Método de Elementos Finitos

    View Slide

  16. ¿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.

    View Slide

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

    View Slide

  18. La ecuación diferencial
    + condiciones de frontera

    View Slide

  19. La solución
    Bajo Alto
    Desplazamiento vertical

    View Slide

  20. Diferentes pasos involucrados

    Discretización de la geometría

    Interpolación

    Integración numérica

    Solución de las ecuaciones

    Postprocesamiento / Visualización

    View Slide

  21. Discretización de la geometría

    View Slide

  22. Interpolación

    View Slide

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

    View Slide

  24. 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

    View Slide

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

    View Slide

  26. SolidsPy

    View Slide

  27. Ecosistema de código abierto
    Bibliotecas de Python:

    NumPy

    SciPy

    SymPy

    Matplotlib

    meshio
    Software externo:

    Gmsh

    ParaView

    View Slide

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

    View Slide

  29. Archivos de entrada simples
    Tomemos este modelo como
    ejemplo.

    View Slide

  30. 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

    View Slide

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

    View Slide

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

    View Slide

  33. Ejemplos de uso

    View Slide

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

    View Slide

  35. Veamos un ejemplo

    View Slide

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

    View Slide

  37. 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

    View Slide

  38. Componentes de un Análisis de
    Elementos Finitos

    Importación/Exportación de mallas

    Biblioteca de elementos

    Ensamblador

    Solucionador

    View Slide

  39. Veamos un ejemplo

    View Slide

  40. 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)

    View Slide

  41. En resumen

    View Slide

  42. 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

    View Slide

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

    View Slide