| |Pierre Proulx, ing, professeur|
|:---|:---|
|Département de génie chimique et de génie biotechnologique |** GCH200-Phénomènes d'échanges I **|


### Exemple 8.3-1, écoulement d'un fluide de type Power-Law dans une conduite cylindrique.

Le développement fait dans Transport Phenomena sera répété ici en développant les solutions avec le calculateur formel sympy et en traçant la solution avec sympy.plot.

La difficulté rencontrée dans cet exemple par rapport à la section 2.3 de Transport Phenomena est dans le type de solution qui est rencontrée. La valeur de n, le coefficient de consistance de la Power-Law, donne lieu à des solutions multiples si n peut prendre des valeurs non-positives. En utilisant positive=True dans la déclaration de la variable **n** on règle ceci...




```python
#
# Initialiser sympy et l'affichage des équationa
#
import sympy as sp
from IPython.display import *
sp.init_printing(use_latex=True)
%matplotlib inline
```


```python
#
# Définir les variables,paramètres et fonctions qui sont utilisées
#
r,L,rho,g,m,R,P_0,P_L=sp.symbols('r,L,rho,g,m,R,P_0,P_L')
n=sp.symbols('n',positive=True)
tau=sp.Function('tau_rz')(r)
v_z=sp.Function('v_z')(r)
```


```python
#
# Équation de Power-Law et bilan de force (voir la section 8-3.1 et la section 2.3 au besoin)
#
tau_rz=m*(-sp.Derivative(v_z,r))**n       # power-law
eq1=sp.Eq(tau_rz-(P_0-P_L)/(2*L)*r)       # bilan
display(eq1)
```


```python
#
# Solution
#
v_z=sp.dsolve(eq1,v_z).rhs
display(v_z)
```


```python
# La constante inconnue est obtenue avec la condition vz(r)=0 en r=R
#
C1=sp.symbols('C1')
constante=sp.solve((v_z.subs(r,R),0),C1)
display(constante)
```


```python
v_z0=v_z.subs(constante)
display(v_z0.simplify())
```

Maintenant voyons la forme de cette expression sous format graphique. On doit choisir des valeurs pour les paramètres. Il est intéressant de voir les variations de profils en fonction de ces paramètres rhéologiques m et n.


```python
# Je ne sais pas exactement pourquoi, mais la fonction subs de sympy ne semble
# pas permettre de remplacer avec un dictionnaire une variable symbol 
#    qui a une contrainte positive=True. J'ai trouvé qu'on pouvait le faire directement
#    mais pas avec le dictionnaire. Pas élégant mais ça marche...
#
d1={'rho':1000, 'm':0.1, 'R':0.05,'L':100,'P_0':200,'P_L':0}
R=R.subs(d1)
v_z1=v_z0.subs(d1)
v_z1=v_z1.subs(n,0.9)
v_z1=v_z1/v_z1.subs(r,0).evalf()    # normaliser le profile entre 0 et 1
d2={'rho':1000, 'm':0.1, 'R':0.05,'L':100,'P_0':200,'P_L':0}
v_z2=v_z0.subs(d2)
v_z2=v_z2.subs(n,1.0)
v_z2=v_z2/v_z2.subs(r,0).evalf()
d3={'rho':1000, 'm':0.1, 'R':0.05,'L':100,'P_0':200,'P_L':0}
v_z3=v_z0.subs(d3)
v_z3=v_z3.subs(n,1.2)
v_z3=v_z3/v_z3.subs(r,0).evalf()
p = sp.plot((v_z1,(r,0,R)),(v_z2,(r,0,R)),(v_z3,(r,0,R))
            ,legend=True
            , title='pseudoplastique, Newtonien et dilatant', show=False) 
p[0].line_color = 'blue'
p[0].label='pseudoplastique'
p[1].line_color = 'black'
p[1].label='Newtonien'
p[2].line_color = 'red'
p[2].label='dilatant'
p.show()
```

### Exercice


Calculez la viscosité à la paroi pour différentes valeurs de n et de m.


145a1d73f4f3a42f0c3eaee6a841cb47687ba37d
ipynb
Jupyter Notebook
Chap-8-Section-8-3-1.ipynb
Spationaute/GCH200
55144f5b2a59a7240d36c985997387f5036149f7
MIT
2018-02-26T16:29:58.000Z
2018-02-26T16:29:58.000Z
Chap-8-Section-8-3-1.ipynb
Spationaute/GCH200
55144f5b2a59a7240d36c985997387f5036149f7
MIT
Chap-8-Section-8-3-1.ipynb
Spationaute/GCH200
55144f5b2a59a7240d36c985997387f5036149f7
MIT
2018-02-27T15:04:33.000Z
2021-06-03T16:38:07.000Z
Qwen/Qwen-72B
1. YES
2. YES