El uso de Python en la
ingeniería química
Computer-aided Chemical Engineering

www.cacheme.org

24/11/2013
PyConES

24/11/2013

cacheme.org

Esquema
• Presentación
• ¿Por qué Python?

• Resolución de ecuaciones en derivadas

parciales
• Resolución de problemas de optimización
• Diseño de reactores en la industria de

procesos químicos

2
PyConES

Presentación

24/11/2013

cacheme.org

• Asociación formada por ingenieros químicos

(profesionales, docentes y estudiantes) que pretende
estimular las posibilidades de software en la ingeniería de
procesos.
• Promueve las ventajas de las nuevas herramientas de

software libre disponibles y fomenta su uso en la
universidad e industria.
• Especialización en simulación y programación

matemática (optimización).

3
PyConES

¿Quiénes somos?

24/11/2013

cacheme.org

4
PyConES

Actividades
• Formación
• Webinars
• Desarrollo
• ¡Podcast!

24/11/2013

cacheme.org

5
PyConES

¿Por qué Python?

24/11/2013

cacheme.org

• Python es lenguaje de alto nivel conveniente para un
•
•

•

•
•
•

desarrollo rápido de código
Su filosofía de diseño enfatiza la simplicidad y legibilidad de
código
Posee núcleo de lenguaje relativamente pequeño con el apoyo
de magníficas librerías (NumPy, SciPy, scikit-learn pandas,
matplotlib etc.)
Es lenguaje multiparadigma, en el que varios estilos de
programación son compatibles (imperativo, orientado a
objetos, funcional)
Lenguaje de programación interpretado en lugar de compilado.
Es multiplataforma (Windows, MacOS y Linux)
Software libre

6
PyConES

“As a simulation engineer in 2013, you really are standing on the
shoulders of giants”
Abhishek Chintagunta

24/11/2013

cacheme.org

CFD and Coffee (blog)

•
•
•
•

Franz Navarro
Ingeniero Químico
Universidad de Alicante
francisco.navarro@cacheme.org

1. Resolución de EDPs con Python

7
PyConES

1. Resolución de EDP

24/11/2013

cacheme.org

• Las ecuaciones en derivadas parciales (EDP) permiten modelar fenómenos

físicos como la propagación del sonido o del calor, la electrostática, la
electrodinámica, la dinámica de fluidos, etc.
• Existen numerosos paquetes de software para resolver EDP, usando una

variedad de lenguajes y métodos numéricos.
• Comerciales: COMSOL Multiphysics, ANSYS, Abaqus...
• Free/Open source: OpenFOAM, FreeFem++, Elmer, FiPy…

Problema simple de difusión resuelto en Python (FiPy) con menos de 40 líneas de código

8
PyConES

CFD with Python:
12 steps to Navier Stokes

24/11/2013

cacheme.org

Lorena A. Barba

• Modulo interactivo online de CFD con Python

impartido por la profesora Lorena A. Barba (Boston
University)
• Diseñado para principiantes en programación y en

CFD
• Resolución numérica mediante el método de las

diferencias finitas
• Videos explicativos de sus clases también online
• Material y código libre y gratuito

lorenabarba.com

9
PyConES

CFD with Python: Lorena A. Barba
12 steps to Navier Stokes
• Convección lineal

(a)

• Difusión
• Ecuación de Burgers

• Pasos 5-10 pasan a 2D:
• Convección lineal
• Convección no lineal
• Difusión
• Ecuación de Burgers
• Ecuación de Laplace
• Ecuación de Poisson

• Pasos 11-12 resuelve la ecuación de Navier-Stokes en 2D:
• Flujo en una cavidad
• Flujo en un canal

(a)

(b)

+Introducción a Python, Numpy, SimPy, matplotlib y Numba

10

cacheme.org

• Pasos 1-4 son en una dimensión:
• Convección no lineal

24/11/2013

(b)
PyConES

CFD with Python: Lorena A. Barba
12 steps to Navier Stokes
• Paso 7: Difusión en 2D

Reorganizando la ecuación discretizada:

24/11/2013

11

cacheme.org
PyConES

CFD with Python: Lorena A. Barba
12 steps to Navier Stokes
• Paso 7: Difusión en 2D

Reorganizando la ecuación discretizada:

24/11/2013

12

cacheme.org
PyConES

CFD with Python: Lorena A. Barba
12 steps to Navier Stokes

24/11/2013

13

cacheme.org

• Paso 7: Difusión en 2D

Condición CFL para asegurar la convergencia,
se trabaja con ella en el Paso 3.
PyConES

CFD with Python: Lorena A. Barba
12 steps to Navier Stokes
• Paso 7: Difusión en 2D

24/11/2013

14

cacheme.org
PyConES

CFD with Python: Lorena A. Barba
12 steps to Navier Stokes

24/11/2013

15

cacheme.org
PyConES

24/11/2013

16

cacheme.org

FiPy

• FiPy resuelve EDPs mediante el método de los volúmenes finitos (FVM)

con programación orientada a objetos y estando escrito en Python.
• Mayor grado de abstracción (integradas funciones de mallado de Gmesh)
• Framework maduro y bien documentado (permite Python 3.x)
• 100% gratuita y de dominio de público (open source)
• Utilizado en investigación y academia (especializado en ciencia de los

materiales)
• Desarrollado en centros de investigación norteamiercanos (CTCMS y

NIST).
ctcms.nist.gov/fipy/
PyConES

24/11/2013

17

cacheme.org

FiPy
• Resolución de ecuaciones con la siguiente forma:

transitorio

difusión

convección

fuente (source)

Siendo 𝜌, 𝑢, Γ𝑖 los coeficientes de sus respectivos términos

• Permite acoplar fenómenos multifísicos de forma sencilla.

ctcms.nist.gov/fipy/
PyConES

18

24/11/2013

cacheme.org

FiPy: Ejemplo

• Ejemplo de resolución de un problema de difusión en estado estacionario

pero con una geometría circular y FiPy.
• Mallado

P3
C1
C2
P1

P2

P4
C3

C4
P5

cacheme.org
PyConES

24/11/2013

19

cacheme.org

FiPy: Ejemplo

Usando la malla construimos
las variables de las celdas
Representar la malla

Coeficiente de difusión
Condiciones de contorno
Resolución
Representación (ejecutado en un script)
PyConES

Conclusiones

24/11/2013

cacheme.org

• Python junto a sus librerías permite la resolución de problemas

típicos de ingeniería y todo ello en un mismo lenguaje-entorno.
• Python permite centrarse en el algoritmo y no en la sintaxis del

lenguaje. Es la navaja suiza de los lenguajes permitiendo pasar a C
en cualquier momento que se necesite.
• Es multiplataforma, libre y gratuito por lo que su adopción en

universidades y empresa es sencilla
• Si se quiere una herramienta lo más compatible con MATLAB,

Octave UPM es otra opción interesante pero mantendrá sus mismas
capacidades (y limitaciones) técnicas.
• Python es posiblemente la mejor opción como primer lenguaje

de programación en el ámbito de programación científica.

20
24/11/2013

PyConES

www.cacheme.org

@CAChemEorg
CAChemEorg

CAChemE
mail

info@cacheme.org

21

Python para resolver EDPs - Ingeniería Química - PyConES 2013

  • 1.
    El uso dePython en la ingeniería química Computer-aided Chemical Engineering www.cacheme.org 24/11/2013
  • 2.
    PyConES 24/11/2013 cacheme.org Esquema • Presentación • ¿Porqué Python? • Resolución de ecuaciones en derivadas parciales • Resolución de problemas de optimización • Diseño de reactores en la industria de procesos químicos 2
  • 3.
    PyConES Presentación 24/11/2013 cacheme.org • Asociación formadapor ingenieros químicos (profesionales, docentes y estudiantes) que pretende estimular las posibilidades de software en la ingeniería de procesos. • Promueve las ventajas de las nuevas herramientas de software libre disponibles y fomenta su uso en la universidad e industria. • Especialización en simulación y programación matemática (optimización). 3
  • 4.
  • 5.
    PyConES Actividades • Formación • Webinars •Desarrollo • ¡Podcast! 24/11/2013 cacheme.org 5
  • 6.
    PyConES ¿Por qué Python? 24/11/2013 cacheme.org •Python es lenguaje de alto nivel conveniente para un • • • • • • desarrollo rápido de código Su filosofía de diseño enfatiza la simplicidad y legibilidad de código Posee núcleo de lenguaje relativamente pequeño con el apoyo de magníficas librerías (NumPy, SciPy, scikit-learn pandas, matplotlib etc.) Es lenguaje multiparadigma, en el que varios estilos de programación son compatibles (imperativo, orientado a objetos, funcional) Lenguaje de programación interpretado en lugar de compilado. Es multiplataforma (Windows, MacOS y Linux) Software libre 6
  • 7.
    PyConES “As a simulationengineer in 2013, you really are standing on the shoulders of giants” Abhishek Chintagunta 24/11/2013 cacheme.org CFD and Coffee (blog) • • • • Franz Navarro Ingeniero Químico Universidad de Alicante francisco.navarro@cacheme.org 1. Resolución de EDPs con Python 7
  • 8.
    PyConES 1. Resolución deEDP 24/11/2013 cacheme.org • Las ecuaciones en derivadas parciales (EDP) permiten modelar fenómenos físicos como la propagación del sonido o del calor, la electrostática, la electrodinámica, la dinámica de fluidos, etc. • Existen numerosos paquetes de software para resolver EDP, usando una variedad de lenguajes y métodos numéricos. • Comerciales: COMSOL Multiphysics, ANSYS, Abaqus... • Free/Open source: OpenFOAM, FreeFem++, Elmer, FiPy… Problema simple de difusión resuelto en Python (FiPy) con menos de 40 líneas de código 8
  • 9.
    PyConES CFD with Python: 12steps to Navier Stokes 24/11/2013 cacheme.org Lorena A. Barba • Modulo interactivo online de CFD con Python impartido por la profesora Lorena A. Barba (Boston University) • Diseñado para principiantes en programación y en CFD • Resolución numérica mediante el método de las diferencias finitas • Videos explicativos de sus clases también online • Material y código libre y gratuito lorenabarba.com 9
  • 10.
    PyConES CFD with Python:Lorena A. Barba 12 steps to Navier Stokes • Convección lineal (a) • Difusión • Ecuación de Burgers • Pasos 5-10 pasan a 2D: • Convección lineal • Convección no lineal • Difusión • Ecuación de Burgers • Ecuación de Laplace • Ecuación de Poisson • Pasos 11-12 resuelve la ecuación de Navier-Stokes en 2D: • Flujo en una cavidad • Flujo en un canal (a) (b) +Introducción a Python, Numpy, SimPy, matplotlib y Numba 10 cacheme.org • Pasos 1-4 son en una dimensión: • Convección no lineal 24/11/2013 (b)
  • 11.
    PyConES CFD with Python:Lorena A. Barba 12 steps to Navier Stokes • Paso 7: Difusión en 2D Reorganizando la ecuación discretizada: 24/11/2013 11 cacheme.org
  • 12.
    PyConES CFD with Python:Lorena A. Barba 12 steps to Navier Stokes • Paso 7: Difusión en 2D Reorganizando la ecuación discretizada: 24/11/2013 12 cacheme.org
  • 13.
    PyConES CFD with Python:Lorena A. Barba 12 steps to Navier Stokes 24/11/2013 13 cacheme.org • Paso 7: Difusión en 2D Condición CFL para asegurar la convergencia, se trabaja con ella en el Paso 3.
  • 14.
    PyConES CFD with Python:Lorena A. Barba 12 steps to Navier Stokes • Paso 7: Difusión en 2D 24/11/2013 14 cacheme.org
  • 15.
    PyConES CFD with Python:Lorena A. Barba 12 steps to Navier Stokes 24/11/2013 15 cacheme.org
  • 16.
    PyConES 24/11/2013 16 cacheme.org FiPy • FiPy resuelveEDPs mediante el método de los volúmenes finitos (FVM) con programación orientada a objetos y estando escrito en Python. • Mayor grado de abstracción (integradas funciones de mallado de Gmesh) • Framework maduro y bien documentado (permite Python 3.x) • 100% gratuita y de dominio de público (open source) • Utilizado en investigación y academia (especializado en ciencia de los materiales) • Desarrollado en centros de investigación norteamiercanos (CTCMS y NIST). ctcms.nist.gov/fipy/
  • 17.
    PyConES 24/11/2013 17 cacheme.org FiPy • Resolución deecuaciones con la siguiente forma: transitorio difusión convección fuente (source) Siendo 𝜌, 𝑢, Γ𝑖 los coeficientes de sus respectivos términos • Permite acoplar fenómenos multifísicos de forma sencilla. ctcms.nist.gov/fipy/
  • 18.
    PyConES 18 24/11/2013 cacheme.org FiPy: Ejemplo • Ejemplode resolución de un problema de difusión en estado estacionario pero con una geometría circular y FiPy. • Mallado P3 C1 C2 P1 P2 P4 C3 C4 P5 cacheme.org
  • 19.
    PyConES 24/11/2013 19 cacheme.org FiPy: Ejemplo Usando lamalla construimos las variables de las celdas Representar la malla Coeficiente de difusión Condiciones de contorno Resolución Representación (ejecutado en un script)
  • 20.
    PyConES Conclusiones 24/11/2013 cacheme.org • Python juntoa sus librerías permite la resolución de problemas típicos de ingeniería y todo ello en un mismo lenguaje-entorno. • Python permite centrarse en el algoritmo y no en la sintaxis del lenguaje. Es la navaja suiza de los lenguajes permitiendo pasar a C en cualquier momento que se necesite. • Es multiplataforma, libre y gratuito por lo que su adopción en universidades y empresa es sencilla • Si se quiere una herramienta lo más compatible con MATLAB, Octave UPM es otra opción interesante pero mantendrá sus mismas capacidades (y limitaciones) técnicas. • Python es posiblemente la mejor opción como primer lenguaje de programación en el ámbito de programación científica. 20
  • 21.