0% encontró este documento útil (0 votos)
232 vistas65 páginas

Python en Ingeniería Química: EDP y Optimización

GLPK, CPLEX, Xpress, etc. Software libre: ● Pyomo (www.pyomo.org) – Python Modelling Language ● PuLP (www.coin-or.org/PuLP/) ● CVXOPT (cvxopt.org) ● CVXPY (www.cvxpy.org) ● SciPy (scipy.org) ● etc. Todos ellos permiten: - Modelado algebraico - Resolución con diferentes solvers - Análisis de resultados - Integración con Python (c) Py

Cargado por

jose
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
232 vistas65 páginas

Python en Ingeniería Química: EDP y Optimización

GLPK, CPLEX, Xpress, etc. Software libre: ● Pyomo (www.pyomo.org) – Python Modelling Language ● PuLP (www.coin-or.org/PuLP/) ● CVXOPT (cvxopt.org) ● CVXPY (www.cvxpy.org) ● SciPy (scipy.org) ● etc. Todos ellos permiten: - Modelado algebraico - Resolución con diferentes solvers - Análisis de resultados - Integración con Python (c) Py

Cargado por

jose
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

El uso de Python en la

ingeniería química
Computer-aided Chemical Engineering

[Link] 24/11/2013
PyConES 24/11/2013 2

[Link]
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
PyConES 24/11/2013 3

[Link]
Presentación
• 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).
PyConES 24/11/2013 4

[Link]
¿Quiénes somos?
PyConES 24/11/2013 5

[Link]
Actividades
• Formación
• Webinars
• Desarrollo
• ¡Podcast!
PyConES 24/11/2013 6

[Link]
¿Por qué Python?
• 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
PyConES 24/11/2013 7

“As a simulation engineer in 2013, you really are standing on the [Link]
shoulders of giants” Abhishek Chintagunta
CFD and Coffee (blog)

• Franz Navarro
• Ingeniero Químico
• Universidad de Alicante
• [Link]@[Link]

1. Resolución de EDPs con Python


PyConES 24/11/2013 8

[Link]
1. Resolución de EDP
• 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
PyConES 24/11/2013 9

CFD with Python: [Link]

12 steps to Navier Stokes 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
[Link]
• Videos explicativos de sus clases también online
• Material y código libre y gratuito
PyConES 24/11/2013 10

CFD with Python: Lorena A. Barba [Link]

12 steps to Navier Stokes


• Pasos 1-4 son en una dimensión:
• Convección lineal
• Convección no lineal
• Difusión
(a) (b)
• 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 (a)

• Flujo en un canal (b)

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


PyConES 24/11/2013 11

CFD with Python: Lorena A. Barba [Link]

12 steps to Navier Stokes


• Paso 7: Difusión en 2D

Reorganizando la ecuación discretizada:


PyConES 24/11/2013 12

CFD with Python: Lorena A. Barba [Link]

12 steps to Navier Stokes


• Paso 7: Difusión en 2D

Reorganizando la ecuación discretizada:


PyConES 24/11/2013 13

CFD with Python: Lorena A. Barba [Link]

12 steps to Navier Stokes


• Paso 7: Difusión en 2D

Condición CFL para asegurar la convergencia,


se trabaja con ella en el Paso 3.
PyConES 24/11/2013 14

CFD with Python: Lorena A. Barba [Link]

12 steps to Navier Stokes


• Paso 7: Difusión en 2D
PyConES 24/11/2013 15

CFD with Python: Lorena A. Barba [Link]

12 steps to Navier Stokes


PyConES 24/11/2013 16

[Link]
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).
[Link]/fipy/
PyConES 24/11/2013 17

[Link]
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.

[Link]/fipy/
PyConES 24/11/2013 18

[Link]
FiPy: Ejemplo
• Ejemplo de resolución de un problema de difusión en estado estacionario
pero con una geometría circular y FiPy.
P3
• Mallado C1
C2

P2 P1
P4

C4 C3

P5

[Link]
PyConES 24/11/2013 19

[Link]
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)


[Link]

• Jorge Bernabé
• Ingeniero Químico
• Universidad de Alicante
[Link]@[Link]

2. Programación matemática (optimización)


Programación matemática [Link]

Optimización: ¿por qué es importante?

• Mejorar calidad de un producto


• Aumentar beneficios
Interés
• Reducir riesgos ambientales
empresarial
• Reducir costes de producción

IQ: - selección de equipos y recursos


- gestión logística

(cc) Sam Derbyshire


Optimización con Python en IQ [Link]

• Optimización matemática

– min f(x)
– s.a g(x) = 0
h(x) ≤ 0

• LP, NLP, MILP, MINLP


FO

(c) Sriram Sankaranarayanan


AML (Algebraic modelling languages) [Link]

Software propietario:

AMPL ([Link]) – Lenguaje
sencillo, pero complicado interactuar
– GLPK – Alternativa libre a AMPL
para LP y MILP


GAMS ([Link]) – Se comunica
con solvers incluso para resolver MINP


AIMMS ([Link]) – Diseñado
para resolver problemas de optimización
a gran escala y programación de
actividades.
Optimización en Python [Link]


Free/Open source:
– CVXOPT – [Link], [Link], [Link]
Notación matricial. Optimización convexa
– PuLP – Trabaja con lenguaje Python. Muy buenos
resultados para LP o MIP. No resuelve NLP
– OpenOpt – Más de 30 solvers para solucionar el
modelado, incluyendo NLP
– Pyomo – Coopr. (Sandia National Laboratories, USA)
Permite la formulación de modelos algebraicos en el
lenguaje de programación en Python.

COmmon Optimization Python Repository


¿Por qué Pyomo? [Link]

• Se comunica directamente los principales solvers de AMPL,


GLPK, Gurobi, CPLEX, CBC y PICO.

• Programación en Python tipo AMPL/GAMS

• Open source (COIN-OR)


[Link]

• Pyomo (Coopr) es un paquete gratuito con licencia BSD,


maduro y bien documentado (en migración a Python 3.x)

• Fácil instalación “pip install coopr”

• Adaptabilidad a modelado de problemas de IQ


Problema I: Logística empresarial [Link]

• Problema clásico en optimización

• LP Se puede resolver con cualquier herramienta

• Fundamental en el mundo empresarial

• Minimización de coste en transporte


Problema I: Logística empresarial [Link]
Problema I: Logística empresarial [Link]

• Plantas producción máxima


• Mercados demanda mínima

• Coste de transporte por unidad:

Alicante Castellón Vitoria Cádiz Cáceres PRODUCCIÓN

Madrid 4.17 4.10 3.48 6.37 2.96 250


Barcelona 5.16 2.69 5.35 11.14 9.10 200
Almería 2.95 5.42 9.10 3.80 6.47 300

La Coruña 10.26 10.19 6.56 10.65 6.85 300


DEMANDA 150 150 100 150 175 -
Problema I: Logística empresarial [Link]

• Sentencia para importar pyomo


• Sentencia para definir el modelo, abstracto o concreto
Problema I: Logística empresarial
[Link]

• Definición de sets – series de datos Sus valores en


• Definición de parámetros – valores de los sets archivo .dat
• Definición de variables
[Link]
Problema I: Logística empresarial

• Definición de ecuaciones: def Nombre_Ecuación (modelo y


variables de las que depende)
• return: se escribe la ecuación
• [Link]: va a mostrar el valor de la ecuación al ejecutar el
programa
[Link]
Problema I: Logística empresarial

• Definición de restricciones: Constraint (indica que la palabra


mercado se refiere a [Link])
Problema I: Logística empresarial
[Link]
Problema I: Logística empresarial [Link]

pyomo [Link] [Link]


Problema I: Logística empresarial [Link]
Transporte [Link]

Solución óptima

• Todas las posibilidades


(superestructura)
Problema II: Selección de equipos [Link]

A B C

• Superestructura (incluye todas las posibilidades)


Problema II: Selección de equipos [Link]

Aumento beneficio Disminución beneficio

B C

Coste uso reactor

• Objetivo: Seleccionar la óptima distribución de


reactores y bypass que aumentan el beneficio
Problema II: Selección de equipos [Link]

AS = AE exp( − τ )
BS = ( AEτ + BE ) exp( − τ )
 Cf + CV1 AE Si 0 ≤ AE ≤ 7
Coste =  1
 Cf 2 + CV2 AE Si 7 ≤ AE ≤ 10

  τ (h) Cf1 (um/h) Cf2 (um/h) CV1 (um/kmol) CV2 (um/kmol)

Reactor 1 0.1 10 5 1 8
Reactor 2 0.4 20 10 2 10
Reactor 3 0.4 50 25 1 9
Reactor 4 0.2 20 10 1 50
Reactor 5 0.7 60 30 2 70
Reactor 6 0.2 10 20 1 10
Reactor 7 0.9 50 25 3 15
Reactor 8 0.5 100 50 5 10
Problema II: Selección de equipos [Link]

• Toma de decisiones – MILP


• Resolución de la parte disyuntiva del problema mediante
la reformulación de la envolvente convexa
• Disgregación de variables

 YRi 
 Wi,c1   Wi,c2    ¬ YRi 
     
  Ci = Cf i + CVi ·E i, A  ∨  C i = Cf i + CVi ·E i, A   ∨  C i = 0 
 0 ≤ E ≤ 7   7 ≤ E ≤ 10    S = 0
 i, A   i, A    i, j 
 

y i = wi ,c1 + wi ,c 2
Problema II: Selección de equipos [Link]

• Disyunciones para el bypass

 by b   ¬ by b 
 BY ≤ 10  ∨  BY = 0 
 b, j   b, j
• Balances de materia

F j = E1, j + E 2 , j + BY1, j

y1 + y2 + by1 = 1
Problema II: Selección de equipos
[Link]
Problema II: Selección de equipos [Link]

• within = NonNegativeReals – Valores reales no negativos


• within = Binary – Valores binarios
Problema II: Selección de equipos [Link]

• Por defecto, pyomo, minimiza la FO. Para maximizar, se escribe


sense = maximize
Problema II: Selección de equipos
[Link]
Problema II: Selección de equipos
[Link]
Problema II: Selección de equipos
[Link]
Problema II: Selección de equipos
[Link]
Problema II: Selección de equipos
[Link]
Problema II: Selección de equipos [Link]

• Superestructura:


Solución óptima:
[Link]

• Isaías Cuenca
• Ingeniero Químico
• Universidad de Alicante
[Link]@[Link]

3. Diseño de reactores en la industria de procesos químicos


3.1. Reactor Flujo Pistón [Link]

• Craqueo térmico del etano.


• Tubos horizontales en el interior de un horno de llama.
• Quemadores a ambos lados de los tubos.
• Se considera la variación de presión a lo largo del reactor.
• Sistema ODE, 8 compuestos, T y P
3.1. Reactor Flujo Pistón [Link]
3.1. Reactor Flujo Pistón [Link]
3.1. Reactor Flujo Pistón [Link]
3.1. Reactor Flujo Pistón [Link]
[Link]
3. 2. Reactor Continuo Tanque Agitado
• Propilenglicol (IUPAC: propano-1,2-diol)
• Compuesto orgánico inodoro, incoloro e insípido
• Líquido aceitoso claro, higroscópico y miscible con agua, acetona, y
cloroformo.
• Utilizado en una amplia gama de productos de consumo, incluidos
los alimentos, piensos, cosméticos y productos farmacéuticos, así
como las aplicaciones industriales.
• Producción mundial: 900 000 t /año (Fuente: Ullmanns’s)

• Producido típicamente en dos calidades


• Calidad industrial
• Calidad USP/EP

[Link]
3. 2. Reactor Continuo Tanque Agitado
[Link]
3. 2. Reactor Continuo Tanque Agitado
Variable Descripción Valor
FA0 Flujo molar de entrada de óxido de 36.3
propileno (kmol/h)
FB0 Flujo molar de entrada de agua y 453.6
ácido sulfúrico (kmol/h)
6FM0 Flujo molar de entrada de metanol 45.4
(kmol/h)
Q0 Caudal volumétrico de entrada (m3/h) 12.5
[Link]
3. 2. Reactor Continuo Tanque Agitado

Balance de Materia Balance de Energía

Estado estacionario

Arranque del reactor


3. 2. Reactor Continuo Tanque Agitado [Link]
La Industria Química en España [Link]

• 13% PIB Industrial


• 5º Europa y 8º Mundial
• 2º mayor exportación solo superado por la
automoción

Fuente: American Institute of Chemical Engineers (AICHE) 2012


La Industria Química en España [Link]

• 239.300 empleo
• Ocupación especializada y cualificada
• Una de ellas, técnico en química computacional
Conclusiones [Link]

• 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.
¡Muchas gracias!

[Link]

@CAChemEorg
CAChemEorg
CAChemE
mail info@[Link]

También podría gustarte