Académique Documents
Professionnel Documents
Culture Documents
≈MATLAB
≈ COMSOL
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 2
Comment l’installer et l’utiliser ?
• Le compilateur / interpréteur
– Python : https://www.python.org
• Le langage + les bibliothèques
– Sous windows : plateforme Canopy pour Python sous windows
https://www.enthought.com/products/canopy/ (gratuit pour les étudiants et académiques)
– Sous linux en installant Anaconda
• En ligne
– https://www.pythonanywhere.com/
– http://www.sagemath.org/fr/
• Notebook
• IPython notebook server in the cloud as Wakari, Authorea or CoCalc
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 3
Les bibliothèques indispensables
• Pour le calcul
– Numpy
– Scipy Equivalent
de Scilab ou Matlab
– Matplotlib Equivalent
de Comsol
• Création de tableau
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 5
Numpy : allocation dans un tableau
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 6
Numpy : redimensionnement d’un tableau
• Redimensionnement
.reshape
• Multiplication : a*a
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 8
Numpy
• Fonctions de calcul basiques
Matplotlib
• Tracé
Application à des cas fréquents retrouvés sur les problèmes Chemical Engineering
intégration d’EDO -> cinétique chimique, bilan de population
intégration d’EDO + shooting method -> colonne à contre courant, convection-diffusion-réaction
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 10
Conseils pour la programmation
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 12
Intégration d’EDO Résolution en 6 lignes de code !
𝑑𝐴(𝑡)
= −𝑘1 𝐴(𝑡)
𝑑𝑡
𝑑𝐵(𝑡)
= 𝑘1 𝐴 𝑡 − 𝑘2 𝐵(𝑡)
𝑑𝑡
𝑑𝐶(𝑡)
= 𝑘2 𝐵(𝑡)
𝑑𝑡
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 13
Application 1 : réacteur d’ozonation
𝑘
Cinétique de production d’ozone : 3𝑂2 2𝑂3
3
𝜀 𝑑𝑛𝑂2
− = 𝑘 𝑂2 2 , 𝑛𝑂2 = 𝑛0 (1 − 𝑥) , 𝜀 = − 1 3
𝑉 𝑑𝑡
1 3
𝑑𝑥 𝑘 𝑛0 2 1−𝑥 2
=− 1
𝑑𝑡 𝜀 𝑉0 1 + 𝜀𝑥 2
https://www.suezwaterhandbook.fr/procedes-et-technologies/oxydation-desinfection/oxydation-et-desinfection-par-
l-ozone/applications
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 14
• Solution :
http://nbviewer.jupyter.org/
url/www.patricebacchin.fr/p
ython/Ozonation.ipynb
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 15
Convection-diffusion-réaction
Un problème classique en génie chimique : réacteur piston, transport de polluant dans un sol ou une rivière
mais aussi une membrane catalytique, une dialyse avec adsorbant …
Méthode du tir ou Shooting method
𝑑𝑐 𝑑𝑗
= − − 𝑘c 𝑐 = 𝑐0 z = 0
𝑑𝑡 𝑑𝑧 Souvent, les 2 conditions limites s’appliquent aux
𝑑𝑐
𝑑𝑐 =0 z=δ extrémités du domaine.
𝑗 = uc − D 𝑑𝑧
𝑑𝑧
Les intégrations doivent s’effectuer avec 1 condition limite
𝑑2𝑐 𝑑𝑐 fixée de façon aléatoire en z=0 puis déterminée par
𝐷 2 − u − kc = 0
𝑑𝑧 𝑑𝑧 itérations pour respecter la condition limite en z=1
Système de 2 EDO 𝑑𝑐
Intégration –odeint- (tir) avec différents 𝑑𝑧 |𝑧=0 puis
𝑑𝑐 𝑑𝑐
=𝑣 =𝑣 trouver par optimization –newton- la condition en z=0 qui
𝑑𝑧 𝑑𝑧
permet d’avoir la condition souhaitée en z=L
𝑑𝑣 𝑢 𝑘 𝑑𝑣
= 𝑣+ 𝑐 = 𝑃𝑒𝑣 + 𝐻𝑎2 𝑐 c
𝑑𝑧 𝐷 𝐷 𝑑𝑧 … qui satisfait
Trouver la condition la condition
𝑐 𝑧 𝑢δ 𝑘δ2 en z=0 … en z=1
𝑐= 𝑧= 𝑃𝑒 = 𝐻𝑎2 =
𝑐0 δ 𝐷 𝐷 Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation
0 z LGC, 2018
1 continue 16
Application 2 : convection-diffusion-reaction
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 17
Convection-diffusion
-réaction
𝑑𝑐
Valeur 𝑑𝑧 |𝑧=1 souhaitée
𝑑𝑐
Valeur 𝑑𝑧 |𝑧=0 arbitraire
𝑑𝑐
Optimisation pour trouver 𝑑𝑧 |𝑧=0
afin que la function cible soit nulle
http://nbviewer.jupyter.org/url/patricebacchin.fr
/python/convection-diffusion-reaction-2.ipynb
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 18
Convection-diffusion
-réaction
Tracé de la solution numérique
N k gl (X - Y/K) 1 1 1
k gl kX ( K .kY ) z+dz
Sint
Equilibre N Sint Interfacial area
z
Differential mass balance Y KX
AXz SYz
Entrée – Sortie = 0 Sect
AX A( X dX ) NdSint 0
A(Y dY ) AY NdSint 0 Cross sectional area
S int=aV=a Sect L
dX dS int=adV=a Sect dz
A k gl (X - Y) a Sect Conditions limites
Problème 2 EDO avec les conditions
dz Y=0 z=L limites sur 2 bornes décalées
dY
S k gl (X - Y) a Sect X=X0 z=0 Shooting method
dz
Ou approche ingénieur NUT/HUT
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 20
http://nbviewer.jupyter.org/url/patricebacchin.fr/python/Colonne.ipynb Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 21
Mécanismes d’agrégation
Agrégation et bilan de population
Problème : distribution de taille modifiée au cours du temps
(approche précédente valide pour les premiers temps de l’agrégation)
ni
Smoluchowski 1917
particule
"primaire"
Collisions entre
2 corps +
5 6
11 constante de cinétique
de 2e ordre
Nombre de collisions entre particules de taille i et
particules de taille j (m-3 s-1) nij kij ni n j
22
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 2222
09/04/2018
Mécanismes d’agrégation
>>1 ~1
i j W
k ij
W 3 ai a j
• mouvement du fluide (agrégation orthocinétique), Pe>>1
4
3
kij ai a j
3
• sédimentation différentielle
kij (
2g
9 w
)( s ) ai a j 3 ai a j 23
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 2323
09/04/2018
Agrégation et bilan de population
dnk 1 i k 1
kij ni n j nk kik ni
•toutes les collisions sont "efficaces"
•chaque agrégation est irréversible
dt 2 i j k k 1
i 1
dn1
k11n12 k12 n1n2 k13 n1n3 ... Concentration totale en particules:
dt
dn2 1 dn
k11n12 k12 n1n2 k23 n2 n3 ... ka n 2 si kij = k11 = 2ka
dt 2 dt
dn3 1 n
n0
k12 n1n2 k13 n1n3 k23 n2 n3 ... à t = 0: n = n1 = n0
dt 2 1 ka n0t
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 24
Exemple à débugger !
http://nbviewer.jupyter.org/url/patricebacchin.fr/python/bilan_de_population.ipynb
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 25
FIPY
• Résolution d’équations différentielles partielles EDP
– Navier Stokes
Exemples
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 26
Références
• Documentation en ligne : python , numpy, matplotlib, scipy, fipy
• http://code.activestate.com/recipes/langs/python/
• https://docs.scipy.org/doc/scipy/reference/
• Tutoriel en Français : https://docs.python.org/fr/3/tutorial/index.html
• Pour le traitement de données : https://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-tutor1-python-start.pdf
• Guyer, J. E., Wheeler, D., & Warren, J. A. (2009). FiPy: Partial differential equations
with Python. Computing in Science & Engineering, 11(3).
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 27
Données
• Liste [ , ] : serie d’objets non nécessairement identiques
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 28
Commandes de tests
If <condition>: Try:
indentation <commandes> <commandes>
Elif <condition>: Except <condition>:
<commandes> <commandes>
Else : Else :
<commandes> <commandes>
Finally:
<commandes>
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 29
Commandes de boucles
While <conditions> :
<commandes>
Else :
<commandes>
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 30
Fonction
Def <nom> ( <arg>, ……, <arg1>=<valeur>, …):
<commandes>
return <valeur>
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 31
Classes et objets
Permet de réaliser une structuration spéciale de données (association de
données et de fonction)
Class <nom>:
Patrice Bacchin, Fabien Chauvet, Yannick Hallez, Formation continue LGC, 2018 32