4. Analyse de champ#
Marc BUFFAT, dpt mécanique, Université Claude Bernard Lyon 1
Mise à disposition selon les termes de la Licence Creative Commons
.
%matplotlib inline
%autosave 300
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
from IPython.core.display import HTML
from matplotlib import animation
from cinematique import part_animation
Autosaving every 300 seconds
4.1. Analyse locale d’un champ#
Etude locale de la trajectoire d’une particule fluide dans un champ de vitesse \(U\) dont on se donne le gradient: \(\mathbf{grad}\,U\)
Localement le champ de vitesse en \(X_0+dX\) est:
Les trajectoires des particules fluides \(\vec{M}(t)=\vec{M}_0(0)+d\vec{M}\) vérifient:
la rotation solide d’une particule (ex: \(U_\theta = \omega r\))
Le volume d’une particule varie comme la divergence du champ de vitesse \(div\,\vec{U}\)
4.2. Analyse locale d’un champ 2D#
On se donne la valeur locale \(U_0\) et son gradient \(\mathbf{grad} U\) du champ de la vitesse.
Locallement en supposant que ce gradient est constant on peut écrire
4.2.1. Champ incompressible#
donc $\( trace(\mathbf{grad} \vec{U}) = 0\)$
U0=np.array([1.0,0.])
gradU=np.array([[-1,1.0],[1.,1.0]])
anim=part_animation(U0,gradU,FigSize=(7,5))
Gradient de U = | -1 1 |
| 1 1 |
Divergence div(U)= 0.0
Rotation W_z = 0.0
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim
4.2.2. Cisaillement homogéne#
gradU=np.array([[0,1],[0,0]])
anim=part_animation(U0,gradU,FigSize=(7,5))
Gradient de U = | 0 1 |
| 0 0 |
Divergence div(U)= 0
Rotation W_z = -0.5
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim
4.2.3. Rotation homogéne#
gradU=np.array([[0,1],[-1,0]])
anim=part_animation(U0,gradU,FigSize=(7,5))
Gradient de U = | 0 1 |
| -1 0 |
Divergence div(U)= 0
Rotation W_z = -1.0
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim
4.2.4. Déformation à volume constant#
gradU=np.array([[1,0.5],[0.5,-1]])
anim=part_animation(U0,gradU,FigSize=(7,5))
Gradient de U = | 1 0.5 |
| 0.5 -1 |
Divergence div(U)= 0.0
Rotation W_z = 0.0
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim
4.2.5. Compression#
gradU=np.array([[-1,0.],[0.,0.5]])
anim=part_animation(U0,gradU,FigSize=(7,5))
Gradient de U = | -1 0 |
| 0 0.5 |
Divergence div(U)= -0.5
Rotation W_z = 0.0
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim
4.2.6. Dilatation#
gradU=np.array([[1,0.],[0.,-0.5]])
anim=part_animation(U0,gradU,FigSize=(7,5))
Gradient de U = | 1 0 |
| 0 -0.5 |
Divergence div(U)= 0.5
Rotation W_z = 0.0
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim
4.3. Cas Général d’un écoulement compressible#
décomposition du champ de vitesse
en partie anti-symétrique (rotation) et symétrique (déformation)
gradU=np.array([np.random.rand(2),np.random.rand(2)])
anim=part_animation(U0,gradU,FigSize=(7,5))
Gradient de U = | 0.501819 0.143369 |
| 0.281741 0.903875 |
Divergence div(U)= 1.4056939022704924
Rotation W_z = 0.06918584095870589
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim
4.3.1. partie déformation (symétrique)#
UZ = np.array([0.,0.])
D = 0.5*(gradU + gradU.transpose())
anim=part_animation(U0,D,FigSize=(7,5))
Gradient de U = | 0.501819 0.212555 |
| 0.212555 0.903875 |
Divergence div(U)= 1.4056939022704924
Rotation W_z = 0.0
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim
4.3.2. partie rotation(antisymétrique)#
R = 0.5*(gradU - gradU.transpose())
anim=part_animation(U0,R,FigSize=(7,5))
Gradient de U = | 0 -0.0691858 |
| 0.0691858 0 |
Divergence div(U)= 0.0
Rotation W_z = 0.06918584095870589
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim
4.4. Cas Général d’un écoulement incompressible#
gradU=np.array([np.random.rand(2),np.random.rand(2)])
gradU[1,1]=-gradU[0,0]
anim=part_animation(U0,gradU,FigSize=(7,5))
Gradient de U = | 0.50731 0.391539 |
| 0.394745 -0.50731 |
Divergence div(U)= 0.0
Rotation W_z = 0.0016030350744180577
volume initiale 0.020000000000000004
Animation avec 40
plt.rc('animation', html='jshtml')
anim