Méthode des différences finies appliquée à l’équation
de la chaleur
Exercice 1 – Niveau Licence : Équation de Laplace en
2D
Problème
∂ 2T ∂ 2T
+ =0
∂x2 ∂y 2
Méthode des différences finies
On discrétise le domaine en une grille uniforme avec un pas h.
L’approximation de l’équation de Laplace au point (i, j) est :
1
Ti,j = (Ti+1,j + Ti−1,j + Ti,j+1 + Ti,j−1 )
4
Implémentation en Python
import numpy as np
import [Link] as plt
# Paramètres
L = 1.0
N = 50
h = L / (N - 1)
T = [Link]((N, N))
# Conditions aux limites
T[:, 0] = 100 # Bord gauche
# Méthode de Gauss-Seidel
for iteration in range(1000):
for i in range(1, N - 1):
for j in range(1, N - 1):
T[i, j] = 0.25 * (T[i+1, j] + T[i-1, j] + T[i, j+1] + T[i, j-1])
# Affichage
X, Y = [Link]([Link](0, L, N), [Link](0, L, N))
1
[Link](X, Y, T, 20, cmap=’hot’)
[Link]()
[Link](’Distribution de température’)
[Link]()
Exercice 2 – Niveau Master : Régime transitoire 2D,
conditions de Neumann
Problème
Une plaque rectangulaire de dimensions Lx × Ly est initialement à 0◦ C. On impose un
flux de chaleur constant q sur le bord supérieur, tandis que les autres bords sont isolés
(flux nul). On cherche à déterminer l’évolution de la température T (x, y, t) dans le temps.
Équation
∂ 2T ∂ 2T
∂T
=α +
∂t ∂x2 ∂y 2
Conditions aux limites de Neumann :
- ∂T
∂y
= − kq sur le bord supérieur, - ∂T
∂n
= 0 sur les autres bords.
Méthode des différences finies
Schéma explicite :
n n n n n n
Ti+1,j − 2Ti,j + Ti−1,j Ti,j+1 − 2Ti,j + Ti,j−1
n+1 n
Ti,j = Ti,j + α∆t +
∆x2 ∆y 2
Conditions de Neumann : dérivées normales approximées par différences finies.
Implémentation en Python
import numpy as np
import [Link] as plt
# Paramètres
Lx, Ly = 1.0, 1.0
Nx, Ny = 50, 50
dx, dy = Lx / (Nx - 1), Ly / (Ny - 1)
alpha = 1e-4
dt = 0.1
nt = 100
q = 100 # Flux de chaleur
k = 1.0 # Conductivité thermique
T = [Link]((Nx, Ny))
2
# Boucle temporelle
for n in range(nt):
Tn = [Link]()
for i in range(1, Nx - 1):
for j in range(1, Ny - 1):
T[i, j] = Tn[i, j] + alpha * dt * (
(Tn[i+1, j] - 2*Tn[i, j] + Tn[i-1, j]) / dx**2 +
(Tn[i, j+1] - 2*Tn[i, j] + Tn[i, j-1]) / dy**2
)
# Bord supérieur (Neumann)
T[:, -1] = T[:, -2] + (q * dy) / k
# Affichage
X, Y = [Link]([Link](0, Lx, Nx), [Link](0, Ly, Ny))
[Link](X, Y, T.T, 20, cmap=’hot’)
[Link]()
[Link](’Distribution de température à t = {:.2f}s’.format(nt*dt))
[Link]()
Exercice 3 – Niveau Doctorat : Régime transitoire 3D,
conditions de Robin
Problème
Un cube de dimension L est initialement à température uniforme T0 . Les six faces du
cube sont soumises à des conditions de Robin avec un fluide ambiant à température T∞
et un coefficient de transfert thermique h.
Équation
∂ 2T ∂ 2T ∂ 2T
∂T
=α + +
∂t ∂x2 ∂y 2 ∂z 2
Condition de Robin :
∂T
−k = h(T − T∞ )
∂n
Méthode des différences finies
On utilise un schéma implicite pour la stabilité. Les conditions de Robin sont implémentées
en modifiant les équations aux frontières.
Ébauche d’implémentation Python
import numpy as np
from [Link] import lil_matrix
from [Link] import spsolve
3
# Paramètres
L = 1.0
N = 20
dx = L / (N - 1)
alpha = 1e-4
dt = 0.1
nt = 100
h = 10.0
k = 1.0
T_inf = 25.0
# Initialisation
T = [Link]((N, N, N), T_inf)
# Construction de la matrice et résolution à chaque pas de temps
# (Détails omis pour concision)