Corrigé DM 2 : Conduction + Python (IMSP)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 19 21:04:00 2017
@author: yvestalbourdel
"""
import numpy as np
from scipy.integrate import odeint from matplotlib import pyplot as plt
"""Initialisation des constantes numériques"""
S0=0.105e-6 u=0.9 e=1.05e-3 L=1.66e-3
"""Fonction section de x"""
def section(x):
return S0*(1-u*np.sin(np.pi*x/L))
"""Représentation graphique du rétrécissement"""
x=np.linspace(0,L,1000) bordsup=(section(x)/e)/2 bordinf=-bordsup
plt.figure(1)
plt.plot(x,bordsup,'b') plt.plot(x,bordinf,'b') plt.xlabel("x (m)") plt.ylabel("profil (m)")
plt.title("rétrécissement de section") plt.show()
"""Resolution"""
def sprimesurs(x):
return -S0*u*(np.pi/L)*np.cos(np.pi*x/L)/(section(x)) rho=1.6e-8
I=100 conduc=429
alpha=(rho*I**2)/conduc def F(u1,u0,x):
return -(alpha/(section(x)**2))-u1*sprimesurs(x)
1
def fonction_f_vecteur(u,x):
return [u[1],F(u[1],u[0],x)]
solution=odeint(fonction_f_vecteur,[293,0],x) listeT=list(solution[:,0])
plt.figure(2) plt.plot(x,listeT) plt.show()
def Tf(T0,d):
solution=odeint(fonction_f_vecteur,[T0,d],x) listeT=list(solution[:,0])
return listeT[-1]
def Trouve_derivee(T0,Terr,dmin,dmax):
a=dmin b=dmax d=(a+b)/2 Tfin=Tf(T0,d)
while abs(Tfin-T0)>Terr:
if Tfin>T0:
b=d else:
a=d d=(a+b)/2 Tfin=Tf(T0,d) return d
def Trouver_max(L):
Tmax=L[0]
for T in L:
if T>Tmax:
Tmax=T return Tmax
2