La performance des puces électroniques utilisées dans les ordinateurs décroit avec leur température. Afin de dissiper une puissance élevée en limitant la température du composant, on installe un dissipateur de chaleur. Ce dissipateur est muni d’ailettes de refroidissement. On étudie une de ces ailettes.
Une ailette de refroidissement en aluminium de conductivité thermique est fixée en à un corps dont la température est constante et avec lequel le contact thermique est parfait. Elle baigne dans l’air ambiant de température . L’ailette est en forme de parallélépipède, d’épaisseur , de largeur et de longueur .
On émet les hypothèses suivantes :
1/ Montrer que l’équation différentielle vérifiée par peut se mettre sous la forme où on exprimera en fonction de , et . Calculer la valeur numérique de .
On applique le premier principe de la thermodynamique à une tranche d’ailette de longueur :
d’où
qu’on peut écrire sous la forme demandée en posant
2/ Justifier les deux conditions aux limites suivantes : et .
Le contact thermique étant parfait en , la température de l’ailette est égale à celle du corps : .
En , le flux thermique par conduction dans l’ailette est égal au flux thermique cédé à l’air par conducto-convection :
Pour résoudre l’équation différentielle numériquement, on cherche à la mettre sous la forme d’un problème d’Euler où .
3/ Expliciter la fonction .
L’équation différentielle s’écrit sous la forme :
On a donc
La fonction est donc :
4/ Compléter le code Python ci-dessous pour définir la fonction .
from scipy.integrate import solve_bvp, trapezoid
import numpy as np
import matplotlib.pyplot as plt
N = 100
lam = 205
e = 1e-3
h = 10
a = 5e-2
l = 10e-2
Ta = 20
T0 = 70
L = np.sqrt( lam*e / (h*2) )
def F(x, Y):
return np.array( [..., ...] )def F(x, Y):
return np.array( [Y[1], (Y[0]-Ta)/L**2] )Pour résoudre le problème aux limites, on utilise la fonction solve_bvp de la bibliothèque scipy.integrate. Cette fonction a besoin des conditions aux limites sous la forme d’une fonction bc (pour boundary conditions).
Cette fonction bc(Y0, Yl) prend en argument les valeurs de la solution aux deux extrémités du domaine (en et ) et doit retourner un tableau contenant les écarts par rapport aux conditions aux limites (lorsque les conditions aux limites sont satisfaites, bc doit retourner un tableau de zéros).
5/ Compléter le code Python ci-dessous pour définir la fonction bc.
def bc(Y0, Yl):
return np.array( [..., ...] )def bc(Y0, Yl):
return np.array( [Y0[0]-T0, -lam*Yl[1]-h*(Yl[0]-Ta)] )On peut maintenant résoudre le problème aux limites en utilisant la fonction solve_bvp.
6/ Compléter le code Python ci-dessous pour résoudre le problème aux limites.
x = ... # array numpy de N points régulièrement espacés entre 0 et l
Y = ... # array numpy de 2 lignes et N colonnes, initialisée à une valeur constante (par exemple T0)
res = solve_bvp(F, bc, x, Y) # résolution numérique du problème
x = res.x # abscisses des points de la solution
T = res.y[0] # températures aux points de la solutionx = np.linspace(0, l, N)
Y = np.zeros((2, N)) + T07/ Tracer la température le long de l’ailette.
plt.plot(x, T)
plt.xlabel("x (m)")
plt.ylabel("T (Celsius)")
plt.title("Température le long de l'ailette")
plt.grid()
plt.show()8/ Justifier que la puissance totale dissipée par l’ailette est donnée par
Compléter le code Python ci-dessous pour calculer cette puissance. On utilisera la fonction trapezoid de la bibliothèque scipy.integrate pour effectuer l’intégration numérique. Cette fonction prend en argument un tableau de valeurs de la fonction à intégrer et un tableau des abscisses correspondantes.
P = trapezoid(..., x) # calcul de la puissance dissipée
print(P)La puissance dissipée sur les surfaces avant et arrière (d’aire ) est négligeable devant celle dissipée sur les surfaces haute et basse (d’aire ) car . Idem pour la surface de droite (d’aire ).
La puissance dissipée par l’ailette est donc donnée par
P = trapezoid( 2*a*h*(T-Ta), x ) # calcul de la puissance dissipée9/ On aurait pu aussi calculer la puissance dissipée par l’ailette en calculant
Expliquer pourquoi, puis compléter le code Python ci-dessous pour calculer cette puissance et vérifier qu’on retrouve le même résultat.
dT = ... # On récupère la dérivée de T en x=0 à partir de la solution numérique
P2 = ... # calcul de la puissance dissipée
print(P2)L’ailette étant en régime stationnaire, la puissance qui entre par conduction en est égale à la puissance dissipée par l’ailette.
dT = res.y[1] # On récupère la dérivée de T en x=0 à partir de la solution numérique
P2 = -lam * a * e * dT[0] # calcul de la puissance dissipée