Projet 4 : Simulation numérique de l’équation de la
chaleur en 2D
Bart Kevin
University of Fribourg
January 29, 2025
Introduction au projet
▶ Objectif : Simuler la propagation de la chaleur dans une pièce de
3 × 3 m.
▶ Fenêtre ouverte à 0◦ C
▶ Radiateur à 70◦ C
▶ Équation de la chaleur en 2D :
!
∂T ∂2T ∂2T
=κ +
∂t ∂x 2 ∂y 2
▶ Méthode : Discrétisation par différences finies explicites.
Configuration de la pièce
m2
• kappa = 2 · 10−5 s
• Lx = 3.0 m
• Nx = 74
• dx = Lx /Nx (m)
• Text = 0.0 ◦ C
• Trad = 70.0 ◦ C
• tfinal = 20 ∗ 24 ∗ 3600 s
• dt = F ∗ dx 2 /kappa (s)
• Nt = int(tfinal /dt)
Discrétisation par différences finies explicites
(n)
On pose : Ti,j = T (n∆t, i∆x , j∆y ). En utilisant un développement de
Taylor, on peut écrire :
∂T (t0 , i∆x , j∆y ) T (t0 + ∆t, i∆x , j∆y ) − T (t0 , i∆x , j∆y )
= + O(∆t)
∂t ∆t
Approximations pour la dérivée temporelle
Dérivée temporelle :
∂T (t0 , i∆x , j∆y ) T (t0 + ∆t, i∆x , j∆y ) − T (t0 , i∆x , j∆y )
≈
∂t ∆t
(n) (n+1) (n)
∂Ti,j Ti,j − Ti,j
⇔ ≈
∂t ∆t
En négligeant les termes d’ordre supérieur.
Approximations pour les dérivées spatiales
Dérivées premières :
(n) (n) (n)
∂Ti,j Ti+1,j − Ti,j
≈ ,
∂x ∆x
(n) (n) (n)
∂Ti,j Ti,j+1 − Ti,j
≈ .
∂y ∆y
Dérivées secondes :
(n) (n) (n) (n)
∂ 2 Ti,j Ti+1,j − 2Ti,j + Ti−1,j
2
≈ ,
∂x ∆x 2
(n) (n) (n) (n)
∂ 2 Ti,j Ti,j+1 − 2Ti,j + Ti,j−1
≈ .
∂y 2 ∆y 2
Substitution dans l’équation de la chaleur
Équation de la chaleur :
(n+1) (n) (n) (n) (n) (n) (n) (n)
Ti,j − Ti,j Ti+1,j − 2Ti,j + Ti−1,j Ti,j+1 − 2Ti,j + Ti,j−1
= κ 2
+ .
∆t ∆x ∆y 2
En réarrangeant :
(n+1) (n) ∆t (n) (n) (n) (n) (n)
Ti,j = Ti,j + κ T i+1,j + T i−1,j + T i,j+1 + T i,j−1 − 4T i,j .
∆x 2
Résultat final
Relation discrétisée :
(n+1) (n) (n) (n) (n) (n) (n)
Ti,j = Ti,j + F Ti+1,j + Ti−1,j + Ti,j+1 + Ti,j−1 − 4Ti,j ,
∆t
où F = κ.
∆x 2
Cette relation est utilisée pour résoudre numériquement l’équation de la
chaleur.
Implémentation en Python : evolve_temperature
def evolve_temperature(T, kappa, dx, dt, Nt, snapshot_interval):
T_new = [Link]()
snapshots = []
steps_per_snapshot = int(snapshot_interval / dt)
for n in range(Nt):
T_old = T_new.copy()
T_new[1:-1, 1:-1] = T_old[1:-1, 1:-1] + F * (
T_old[2:, 1:-1] + T_old[:-2, 1:-1] +
T_old[1:-1, 2:] + T_old[1:-1, :-2] - 4 * T_old[1:-1, 1:-1]
)
...
Implémentation en Python : evolve_temperature
...
# Conditions de Neumann (flux nul sur les bords)
T_new[0, :] = T_new[1, :] # Bord gauche
T_new[-1, :] = T_new[-2, :] # Bord droit
T_new[:, 0] = T_new[:, 1] # Bord bas
T_new[:, -1] = T_new[:, -2] # Bord haut
T_new[5:19, 9:13] = 70.0 # Température du radiateur
T_new[31:61, 1] = 0.0 # Température de la fenêtre froide
# Enregistrement de l'instantané à intervalle régulier
if n % steps_per_snapshot == 0:
[Link](T_new.copy())
return T_new, snapshots
Résultats de la simulation
Calcul de la densité de courant de chaleur
1. Gradients de température (∇T ) :
∂T Ti+1,j − Ti−1,j ∂T Ti,j+1 − Ti,j−1
≈ , ≈
∂x 2 · ∆x ∂y 2 · ∆x
2. Densité de courant de chaleur (⃗j = −λ∇T ) :
∂T ∂T
jx = −λair · , jy = −λair ·
∂x ∂y
3. Intégration des flux :
▶ Radiateur : Fluxradiateur =
P P
jxP+ jy
▶ Fenêtre : Fluxfenêtre =
P
jx + jy
Implémentation en Python : calculate_heat_flux
def calculate_heat_flux(snapshots, dx, lambda_air, radiateur_coords, fenetre_coords):
flux_radiateur = []
flux_fenetre = []
for T in snapshots: # Parcours des instantanés
grad_Tx = (T[2:, 1:-1] - T[:-2, 1:-1]) / (2 * dx) # dT/dx
grad_Ty = (T[1:-1, 2:] - T[1:-1, :-2]) / (2 * dx) # dT/dy
# Flux thermique = -lambda_air * gradient de température
jx = -lambda_air * grad_Tx
jy = -lambda_air * grad_Ty
# --- Calcul pour le radiateur ---
x_min, x_max, y_min, y_max = radiateur_coords
flux_radiateur_t = [Link](jx[x_min:x_max, y_min:y_max]) + [Link](jy[x_min:x_max, y_min:y_max])
flux_radiateur.append(flux_radiateur_t)
# --- Calcul pour la fenêtre ---
x_min, x_max, y_min, y_max = fenetre_coords
flux_fenetre_t = [Link](jx[x_min:x_max, y_min:y_max]) + [Link](jy[x_min:x_max, y_min:y_max])
flux_fenetre.append(-flux_fenetre_t)
return flux_radiateur, flux_fenetre
Évolution temporelle des flux de chaleur
Merci pour votre attention !
Évolution de la température
Évolution de la température
Évolution de la température